> Linux教程 > 系统运维 >

软磁盘阵列的介绍与创建

廉价磁盘冗余阵列(RAID, Redundant Array of Inexpensive Disks)简称硬盘阵列,其基本思想就是把多个相对便宜的硬盘组合起来,成为一个硬盘阵列组,使性能达到甚至超过一个价格昂贵、容量巨大的硬盘。根据选择的版本不同,RAID比单颗硬盘有以下一个或多个方面的好处:增强资料整合度,增强容错功能,增加处理量或容量。另外,磁盘阵列对于电脑来说, 看起来就像一个单独的硬盘或逻辑存储单元。分为RAID-0,RAID-1,RAID-1E,RAID-5,RAID-6,RAID-7,RAID-10,RAID-50。

简单来说,RAID把多个硬盘组合成为一个逻辑磁区,因此,操作系统只会把它当作一个硬盘。RAID常被用在服务器电脑上,并且常使用完全相同的硬盘作为组合。由于硬盘价格的不断下降与RAID功能更加有效地与主板整合,它也成为了玩家的一个选择,特别是需要大容量储存空间的工作,如:视讯与音讯制作。

基本RAID分类

JBOD

 

(JBOD, Just a Bunch Of Disks)在某些分类上,JBOD并不算是RAID的等级。只是将多个磁盘空间合并成一个大的逻辑磁盘,不具有错误备援机制。资料的存放机制是由第一颗磁盘开始依序往后存放,即操作系统看到的是一个大磁盘(由许多小磁盘组成)。但如果磁盘损毁,则该颗硬盘上的所有数据将无法救回。若第一颗硬盘损坏,通常无法作救援(因大部分文件系统将文件表存在磁盘前端,即第一颗),失去文件表即失去一切数据。

 

 

RAID 0

 

将多个磁盘合并成一个大的磁盘,不具有冗余,并行I/O,速度最快。RAID 0亦称为带区集。它是将多个磁盘并列起来,成为一个大磁盘。在存放数据时,其将数据按磁盘的个数来进行分段,然后同时将这些数据写进这些盘中,所以在所有的级别中,RAID 0的速度是最快的。但是RAID 0没有冗余功能,如果一个磁盘(物理)损坏,则所有的数据都会丢失。

理论上越多的磁盘效能就等于“单一磁盘效能”ד磁盘数”,但实际上受限于总线I/O瓶颈及其它因素的影响,RAID效能会随边际递减,也就是说,假设一个磁盘的效能是50MB每秒,两个磁盘的RAID 0效能约96MB每秒,三个磁盘的RAID 0也许是130MB每秒而不是150MB每秒,所以两个磁盘的RAID 0最能明显感受到效能的提升。

 

但如果是以软件方式来实作RAID,则磁盘的空间则不见得受限于此(例如Linux Software RAID),透过软件实作可以经由不同的组合而善用所有的磁盘空间。

 

 

RAID 1

 

两组以上的N个磁盘相互作镜像,它是通过磁盘数据镜像实现数据冗余,在成对的独立磁盘上产生互为备份的数据。当原始数据繁忙时,可直接从镜像拷贝中读取数据,因此RAID 1可以提高读取性能。RAID 1是磁盘阵列中单位成本最高的,但提供了很高的数据安全性和可用性。当一个磁盘失效时,系统可以自动切换到镜像磁盘上读写,而不需要重组失效的数据。

但无论用多少磁盘做RAID 1,仅算一个磁盘的容量,是所有RAID上磁盘利用率最低的一个级别。

 


 

 

 

RAID 5

 

RAID Level 5 是一种储存性能、数据安全和存储成本兼顾的存储解决方案。它使用的是Disk Striping(硬盘分割)技术。RAID 5 至少需要三颗硬盘, RAID 5不对存储的数据进行备份,而是把数据和相对应的奇偶校验信息存储到组成RAID5的各个磁盘上,并且奇偶校验信息和相对应的数据分别存储于不同的磁盘上。当RAID5的一个磁盘数据发生损坏后,利用剩下的数据和相应的奇偶校验信息去恢复被损坏的数据。 RAID 5可以理解为是RAID 0和RAID 1的折衷方案。RAID 5可以为系统提供数据安全保障,但保障程度要比镜像低而磁盘空间利用率要比镜像高。RAID 5具有和RAID 0相近似的数据读取速度,只是多了一个奇偶校验信息,写入数据的速度相当的慢,若使用“回写快取”可以让效能改善不少。同时由于多个数据对应一个奇偶校验信息,RAID 5的磁盘空间利用率要比RAID 1高,存储成本相对较便宜。

 

 

RAID 10/01

 

 

RAID 10/01细分为RAID 1+0或RAID 0+1。

RAID 1+0是先镜射再分割资料,再将所有硬盘分为两组,视为是RAID 0的最低组合,然后将这两组各自视为RAID 1运作。

RAID 0+1则是跟RAID 1+0的程序相反,是先分割再将资料镜射到两组硬盘。它将所有的硬盘分为两组,变成RAID 1的最低组合,而将两组硬盘各自视为RAID 0运作。

效能上,RAID 0+1比RAID 1+0有着更快的读写速度。

可靠性上,当RAID 1+0有一个硬盘受损,其余三个硬盘会继续运作。RAID 0+1只要有一个硬盘受损,同组RAID 0的另一只硬盘亦会停止运作,只剩下两个硬盘运作,可靠性较低。

因此,RAID 10远较RAID 01常用,零售主板绝大部份支援RAID 0/1/5/10,但不支援RAID 01。
 

参考文献:

http://baike.baidu.com/view/7102.htm

http://sapling.me/unixlinux/linux_mdadm_howto.html

http://www.wangchao.net.cn/bbsdetail_1788074.html

 

 

磁盘阵列的创建

 

步骤说明:新建分区(4个)做raid5+热备à格式选择fdà保存退出à创建软阵列à格式化ext4文件类型à挂载à{开2个控制台,一个wathc –n “iostat /dev/sda{8,9,10,11}”,一个watch –n 0.5 “cat /proc/mdstat”}à模拟故障

 

 

1.      新建分区

 

2.      创建磁盘阵列

[root@yangcan ~]#mdadm -C /dev/md5 -l 5 -n 3 -x 1 /dev/sda{8,9,10,11}

创建磁盘阵列md5,

-l是级别(0,1,5,6)

-n:做raid的磁盘数量

-x :做热备份的磁盘个数

-C :创建阵列

-S:停止阵列中的磁盘

-A:组合、拼凑

-D: 显示阵列信息

-f: 停止阵列中的磁盘,模拟故障

-r:移除故障的磁盘

-a:新加磁盘到阵列中 

 

3.      格式化:mke2fs –T ext4 /dev/md5


4.       挂载:

[root@yangcan /]# mount /dev/md5 /mdadm/

[root@yangcan /]#echo "/dev/md5  /mdadm  ext4  defaults  1 2" >> /etc/fstab  

5.       查看阵列信息

[root@yangcan mdadm]# mdadm -D /dev/md5

此时/dev/sda8作为热备盘

 

6.      登录tty2控制台:watch –n 0.5 “cat /proc/mdstat”},查看md的状态

 

 

7.       登录tty3控制台:wathc –n “iostat /dev/sda{8,9,10,11}”,查看每个磁盘的I/O情况


 PS:ctrl+alt+[F1-F7]切换控制台

 

8.      测试新建的阵列,我们随便新建一些文件


 

9.          模拟故障,挂掉sda5盘,查看tty2的输出信息。

watch –n 0.5 “cat /proc/mdstat”

[root@yangcan mdadm]# mdadm /dev/md5 -f /dev/sda11

 

-------之后-----

 


此时sda5,f掉了,热备盘sda8加入阵列。完成之后,sda6,Sda7,sda8重新组成阵列 

与此同时,tty3控制台下,sda8在拼命的写数据进去。

当在模拟磁盘故障的时候,在/mdadm,依然可以正常查看\编辑文件。

 

10.      我们-f之后,要移除故障盘,同时查看md5的信息

 

11.      重新把故障盘加到阵列,加入之前必须清空已有磁盘的信息。

 

12.      配置完成之后,查看/dev/md/md-device-map里的信息,只是临时产生的,当你停止阵列时候,里面的信息就为空了!

13.      配置/etc/mdadm.conf

或者使用

创建一个新的阵列后,一定要通过上面的指令运行得到它的配置文件,否则,阵列停用后将无法启用。 

 

14.       Umount挂载,测试mdadm.conf

 

 

15.       停用-重新启动阵列

 

16.       监控磁盘阵列 /etc/rc.d/init.d/mdmonitor

 

17.       删除阵列

umount /dev/md5

mdadm --stop –S /dev/md5 

mdadm --zero-superblock /dev/sda[567] 

rm /etc/mdadm.conf 

删除磁盘阵列后必须修改/etc/fstab,以免开机无法挂载分区而无法启动。



(责任编辑:IT)