RAID磁盘阵列
一、RAID:Redundant Arrays of Independent Drives
价格便宜具有冗余能力的磁盘阵列(Inexpensive)
二、磁盘阵列功能:
在数组中任一颗磁盘故障时,仍可读出数据。
在数据重构时,将数据经过计算后重新置入新硬盘中。
三、使用RAID的好处:
通过把多个磁盘组织在一起作为一个逻辑卷提供磁盘跨越功能。
通过把数据分成多个数据块(Block)并行写入/读出多个磁盘以提高访问磁盘的速度。
通过镜像或校验操作提供容错能力。
四、RAID 中主要有三个关键概念和技术:
1、镜像( Mirroring )
将数据复制到多个磁盘,一方面可以提高可靠性,另一方面可并发从两个或多个副本读取数据来提高读性能。
显而易见,镜像的写性能要稍低, 确保数据正确地写到多个磁盘需要更多的时间消耗。
2、数据条带( Data Stripping )
将数据分片保存在多个不同的磁盘,多个数据分片共同组成一个完整数据副本,这与镜像的多个副本是不同的,它通常用于性能考虑。
数据条带具有更高的并发粒度,当访问数据时,可以同时对位于不同磁盘上数据进行读写操作,从而获得非常可观的 I/O 性能提升 。
3、数据校验( Data parity )
利用冗余数据进行数据错误检测和修复,冗余数据通常采用海明码、异或操作等算法来计算获得。
利用校验功能,可以很大程度上提高磁盘阵列的可靠性、鲁棒性和容错能力。
不过,数据校验需要从多处读取数据并进行计算和对比,会影响系统性能。
五、RAID有哪几种?
一共有0~6一共7种,这其中RAID 0、RAID1、RAID 5和RAID6比较常用。
1、RAID 0
特点:
以“条带”的方式进行存储数据(至少2块磁盘)。
如果你有n块磁盘,原来只能同时写一块磁盘,写满了再下一块,做了RAID 0之后,
n块可以同时写,速度提升很快,但由于没有备份,可靠性很差。n最少为2。
2、RAID 1
特点:
是把一个磁盘的数据镜像到另一个磁盘上,也就是说数据在写入一块磁盘的同时,会在另一块闲置的磁盘上生成镜像文件。(至少2块磁盘)mirroring(镜像卷)。
正因为RAID 0太不可靠,所以衍生出了RAID1。
如果你有n块磁盘,把其中n/2块磁盘作为镜像磁盘,在往其中一块磁盘写入数据时,也同时往另一块写数据。
坏了其中一块时,镜像磁盘自动顶上,可靠性最佳,但空间利用率太低。n最少为2。
3、RAID 3
为了说明白RAID 5,先说RAID 3,RAID 3是若你有n块盘,其中1块盘作为校验盘,剩余n-1块盘相当于作RAID 0同时读写,当其中一块盘坏掉时,可以通过校验码还原出坏掉盘的原始数据。
这个校验方式比较特别,奇偶检验,1 XOR 0 XOR 1=0,0 XOR 1 XOR 0=1,最后的数据是校验数据,当中间缺了一个数据时,可以通过其他盘的数据和校验数据推算出来。但是这有个问题,由于n-1块盘做了RAID 0,每一次读写都要牵动所有盘来为它服务,而且万一校验盘坏掉就完蛋了。最多允许坏一块盘,n最少为3。
4、RAID 5
特点:
条带+分布校验(最少3块磁盘)
在RAID 3的基础上有所区别,同样是相当于是1块盘的大小作为校验盘,n-1块盘的大小作为数据盘,但校验码分布在各个磁盘中,不是单独的一块磁盘,也就是分布式校验盘,这样做好处多多。最多坏一块盘。n最少为3。
5、RAID 6
特点:
条带+分布校验(一组最少需要4个磁盘)
在RAID 5的基础上,又增加了一种校验码,和解方程似的,一种校验码一个方程,最多有两个未知数,也就是最多坏两块盘。
6、RAID 10和RAID 01
特点:
兼备了 RAID 0 和 RAID 1 的优点。
是先做镜像再作条带化,是对虚拟磁盘实现镜像。它先用两块磁盘建立镜像,然后再在镜像内部做条带化。
六、结构关系图
1、RAID-0结构关系图
2、RAID-1结构关系图
3、RAID-5:条带+分布校验(三块磁盘以上)
4、RAID-10:镜像+条带(四块磁盘以上)
mdadm语法格式:
(1)一般格式:
mdadm [mode] raiddevice [options]
mode:模式
raiddevice:raid设备
options:选项
component-devices:组成设备
(2)进入各个模式的选项
①创建模式:-C
②管理模式:-add 或者 –del
③监控模式:-F
④增长模式:-G
⑤装配模式:-A
(3)创建模式下的专用选项
①指定RAID级别:-l
②指定设备个数:-n #
③是否自动创建设备文件:-a {yes|no}
④指定创建RAID设备的数据块(CHUNK)大小(默认64K):
-c #unit
⑤指定空闲盘个数:-x #
RAID-1
查看磁盘
# ls /dev/sd
分区之后
# mdadm -C -v /dev/md1 -l 1 -n 2 -x 1 /dev/sdb1 /dev/sdc1 /dev/sdd1
# watch -n 1 cat /proc/mdstat
#cat /proc/mdstat
# fdisk /dev/md1
格式化
# mkfs.xfs /dev/md1p1
挂载
# cat /proc/mdstat
模拟磁盘损坏
# mdadm -f /dev/md1 /dev/sdc1
移除
# mdadm -r /dev/md1 /dev/sdc1
RAID-1磁盘阵列搭建成功。
RAID-5
查看磁盘
#ll /dev/sd{b,c,d,e}1
# mdadm -C -v /dev/md5 -l 5 -n 3 -x 1 /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1
# watch -n 1 cat /proc/mdstat
查看md5详细信息
# mdadm -D /dev/md5
格式化
# mkfs -t xfs /dev/md5
# cat /proc/mdstat
停止md5
# mdadm -S /dev/md5
查看一下
# cat /proc/mdstat
RAID-5磁盘阵列搭建成功。
RAID-10
分区之后查看
# ll /dev/sd*
# mdadm -C -v /dev/md10 -l 1 -n 2 /dev/sdb1 /dev/sdc1
# mdadm -C -v /dev/md20 -l 1 -n 2 /dev/sdd1 /dev/sde1
# watch -n 1 cat /proc/mdstat
分区
#fdisk /dev/md10
格式化
# mkfs -t xfs /dev/md10
挂载
# mdadm -Ss
# mdadm -As
RAID-10磁盘阵列搭建成功。