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磁盘阵列搭建成功。

原文地址:https://www.cnblogs.com/djlsunshine/p/9681022.html