RAID(Redundant Arrays of Inexpensive Disk)。RAID可以透过一个技术,将多个磁盘整合为一个比较大的磁盘,还可以备份数据确保数据的安全性。硬件无价,数据有价,所以RAID很重要。然而RAID也有不同的level,整合后的硬盘就具有不同的功能。
RAID-0(等量模式stripe条带)
(以下图片来自google)
在组成RAID-0的时候,Disk1和Disk2都会被先分成一个个小区块(chunk)。当有数据写入RAID的时候,数据会被切割成与chunk一样大小的数据块,依次写进Disk1和Disk2(如图示,第一块数据A先写进Disk1,第二块数据B写进Disk)。这样不但提高了磁盘的容量,还提高了数据的读写性能。不过要注意的是如果有一块磁盘坏了,里面的所有数据都报废。
例如有100M的数据写进磁盘,每一个块磁盘分别写入50M,且两块磁盘的容量要一致性能为佳。
RAID-1(镜像模式mirror)完整备份
当有数据写进磁盘的时候,RAID-1会自动复制一份数据,分别写进Disk1和Disk2,所以Disk1和Disk2的数据是一模一样的,就像mirror一样。这样的好处是,数据有冗余能力,即使有一块磁盘坏了数据都不会被抹掉。这样也有不好的地方,就是写入的性能下降,空间的利用率少
RAID 0+1, RAID 1+0
既然RAID-0数据不安全,RAID-1效能不佳,那我们可以把它们整合起来组成一个RAID.
RAID 1+0)
先把Disk 0和Disk 1组成第一组RAID 1, 再把Disk 2和Disk 3组成第二组RAID 1, 最后把这两组RAID 1组合成一组RAID 0。这样一来磁盘的读写性能都有提高,而且数据也有冗余备份,空间的利用率为1/2.
RAID 0+1)
和 RAID 0+1)差不多,只是组合次序不一样。同样可以提高磁盘的读写性能和数据的安全性问题。
RAID 5: 效能与数据备份的均衡考虑
RAID 5至少要三个磁盘以上才能组成这种类型的磁盘阵列。每次有数据写入时,都会有部分的同位检查码(parity)被记录起来,并且记录的同位检测码每次都记录在不同的磁盘。当有一颗磁盘坏掉的时候,可以藉由其余磁盘的检查码来重建原本磁盘内的数据。RAID 5对于数据的读取的性能有提高,可是对于写入的性能不太显著,因为还要计算parity。空间的利用率为(n-1)/n。
software, hardware RAID
hardware RAID是透过磁盘阵列卡来达成组合,磁盘列阵卡上面有一块专门的芯片在处理RAID的任务, 例如计算RAID 5的parity的时候不用消耗I/O总线和CPU的计算。由于hardware RAID性能好,所有一个磁盘阵列卡的价格也不低。因此就有software RAID来仿真磁盘阵列的功能。
CentOS提供的software RAID为mdadm这套软件,这套软件会以partition或disk为磁盘的单位。所以有两个以上的的partition就能设计磁盘阵列了
下面的链接很详细的讲解了sofeware RAID和hardware RAID
http://www.ha97.com/4753.html
软件磁盘阵列的设定
因为软件磁盘阵列是系统仿真的,因此使用的的装备文件名是系统的装配文件,文件名为/dev/md{0,1,2...}
创建模式:
-C, --create
专用选项:
-n, --raid-devices= 设备的个数
-x, --spare-devices=指定空闲盘的个数
-c, --chunk=chunk的大小,2^n,默认为64k
-l, --level=级别
-a, --auto={yes,no..}=是否为其自动创建设备文件
管理模式:
--manage:
-a ,--add: add listd devices to a live array。把列出的设备加入阵列
-r, --remove: remove listed devices.列出的设备一定不能actibe。他们应该要是failed或者是spare 的设备
-f, --fail: make listed devices as faulty
查看RAID阵列的详细信息:
# mdadm -D /dev/md#
停止阵列:
# mdadm -S /dev/md#
题目一:利用4个1GB的partition组成RAID 5,利用一个1GB的partition设定为spare disk,并挂载在/mnt目录下
1)先创建5个1GB的partition
分区完以后记得要partprobe
2)以mdadm创建RAID
# mdadm -C --auto=yes /dev/md0 -n=4 -x=1 -l=5 /dev/hda{7,8,9,10}
3)格式化和挂载使用RAID
# mkfs -t ext3 /dev/md0
# mount /dev/md0 /mnt
题目二:仿真RAID错误的救援模式,fail /dev/hda8,然后让spare disk 自动开始重建系统
1)设定磁盘/dev/hda8为fail
# mdadm --manage /dev/md0 -f /dev/hda8
这个时候可以查看一下阵列/dev/md0的情况,可以发现fail devices这一项有数字
# mdadm -D /dev/md0
2)一段时间后,藉由spare disk重建完毕RAID 5
# mdadm -D /dev/md0 查看已经修复好
3)移除出出错的disk并加入新磁盘
# fdisk /dev/hda1 (创建新partition /dev/hda11)
# mdadm --manage /dev/md0 --remove /dev/hda8 (移除出错的disk)
# mdadm --manage /dev/md0 --add /dev/hda11 (加入新的disk /dev/hda11)
注意使用完RAID之后,一定要关闭
# umount /dev/md0
# mdadm --stop /dev/md0