RAID磁盘阵列介绍
独立硬盘冗余阵列(RAID, Redundant Array of Independent Disks),旧称廉价磁盘冗余阵列(Redundant Array of Inexpensive Disks),简称磁盘阵列。利用虚拟化存储技术把多个物理硬盘按不同的方式组合起来形成一个硬盘组(逻辑硬盘),从而提供比单个硬盘更高的存储性能和提供数据备份技术。
组成磁盘阵列的不同方式称为RAID级别(RAID Levels)。RAID 层级不同,数据会以多种模式分散于各个硬盘,RAID 层级的命名会以 RAID 开头并带数字。每种等级都有其理论上的优缺点,不同的等级在两个目标间获取平衡,分别是增加数据可靠性以及增加存储器群)读写性能。
常用的RAID级别:
RAID0、RAID1、RAID5、RAID6、RAID1+0等。
RAID技术主要有以下三个基本功能:
通过对磁盘上的数据进行条带化,实现对数据成块存取,减少磁盘的机械寻道时间,提高了数据存取速度。
通过对一个阵列中的几块磁盘同时读取,减少了磁盘的机械寻道时间,提高数据存取速度。
通过镜像或者存储奇偶校验信息的方式,实现了对数据的冗余保护。
RAID实现的方式
外接式磁盘阵列:通过扩展卡提供适配能力
内接式RAID:主板集成RAID控制器,安装OS前在BIOS里配置
软件RAID:通过OS实现,比如:群晖的NAS
RAID级别详解
1 RAID 0
RAID-0是N块硬盘并行组合成一个新的逻辑盘。
RAID-0 连续以位或字节为单位分割数据,并行读写于多个磁盘上,因此具有很高的数据传输率,但它没有数据冗余。
RAID-0 的读写性能理论上是单块磁盘的N倍。(仅限理论,因为实际中磁盘的寻址时间也是性能占用的大头)
RAID-0 只是单纯地提高性能,并没有为数据的可靠性提供保证,而且其中的一个磁盘失效将影响到所有数据。
RAID-0 不能应用于数据安全性要求高的场合。实际工作中一般不用。
(称为带区卷,性能最佳)
RAID 0技术把多块物理硬盘设备(至少两块)通过硬件或软件的方式串联在一起,组成一个大的卷组,并将数据一次写入到各个物理硬盘中。这样硬盘设备的读写性能会提升数倍,但是若任意一块硬盘发生故障将导致整个系统的数据都受到破坏。
2 RAID-1(无校验的相互镜像)
RAID-1是由N(偶数)块硬盘组合成一组镜像。
通过磁盘数据镜像实现数据冗余,在成对的独立磁盘上产生互为备份的数据。
当原始数据繁忙时,可直接从镜像拷贝中读取数据,因此RAID1 可以提高读取性能。写入性能慢。
RAID-1是磁盘阵列中单位成本最高的,但提供了很高的数据安全性和可用性。当一个磁盘失效时,系统可以自动切换到镜像磁盘上读写,而不需要重组失效的数据。
可用容量:N/2 (N是硬盘数)
实际空间使用率只有50%,两块磁盘当做一块用,这是一种比较昂贵的方案。 实际工作中一般也不使用。
3 RAID-5( 带分散校验的数据条带)
N(N≥3)块盘组成阵列,一份数据产生N-1个条带,同时还有1份校验数据,共N份数据在N块盘上循环均衡存储。
N块盘同时读写,读性能很高,但由于有校验机制的问题,写性能相对不高。
可靠性高,允许坏1块盘,不影响所有数据。
可用容量:N-1。磁盘利用率(N-1)/N。
RAID-5 是一种将存储性能、数据安全、存储成本兼顾的方案。是目前使用的最多的一种方式。
4 RAID-6( 带双重分散校验的数据条带)
N(N≥4)块盘组成阵列,(N-2)/N磁盘利用率。
与RAID-5 相比,RAID6增加了第二个独立的奇偶校验信息块。
两个独立的奇偶系统使用不同的算法,即使两块磁盘同时失效也不会影响数据的使用。
相对于RAID-5 有更大的”写损失“,因此写性能较差。
5 RAID-10(先做镜像,再做条带化)
RAID 10技术是RAID1+RAID0技术的一个组合体。如下图,RAID 10技术需要至少四块硬盘来组建,其中先分别两两制作成RAID 1磁盘阵列,以保证数据的安全性;然后再对两个RAID 1磁盘阵列实施RAID 0技术,进一步提高硬盘设备的读写速度。这样子从理论上讲,只要坏的不是同一组中的所有硬盘,那么最多可以损坏50%的硬盘设备而不丢失数据。RAID 10技术继承了RAID 0的高读写速度和RAID 1的数据安全性。
6 RAID-01(先做条带,再做镜像)
N(偶数,N≥4)块盘先组合成一个RAID0,再组成一个RAID1。
读写性能与RAID 1+0相同;
由于RAID 0+1时,先做RAID 0,没有数据备份,因此数据可靠性来说比RAID 1+0要更差。 实际使用较少
各种列阵性能总结
1 容错对比
RAID级别 | RAID0 | RAID1 | RAID5 | RAID10 |
冗余类型 | 无 | 镜像 | 奇偶校验 | 镜像 |
保护能力 | 不允许设备故障 | 允许一个设备故障 | 允许一个设备故障 | 允许一组设备中一个故障 |
写性能 | 高 | 低 | 低 | 中间 |
最少磁盘块数 | 2 | 2 磁盘数为偶数 | 3 | 4磁盘数为偶数 |
磁盘利用率 | N | 50% | (N-1)/N | 50% |
2 性能对比
类型 | 读写性能 | 安全性 | 磁盘利用率 | 成本 | 应用 |
RAID0 | 最好(因并行而提高)高+低 | 最差(完全无安全保障) | 最高(100%) | 最低 | 个人用户 |
RAID1 | 读和单个磁盘无区别,写则要两边写 低+中等 | 最高(提供数据的百分之百备份) | 差(50%) | 最高 | 适用于存放重要数据,如服务器和数据库等 |
RAID5 | 读:RAID5=RAID0(相近似的读取速度) 写:RAID5<单个磁盘写入(多了一个奇偶校验信息写入 低+高 | RAID5 | RAID5>RAID1 | 是一种存储性能、数据安全和存储成本兼顾的存储解决方案 | |
RAID10 | 读: RAID10=RAID0 写: RAID10=RAID1 中等+中等 | RAID10=RAID1 | RAID10=RAID1(50%) | RAID10=RAID1 | 集合了RAID1,RAID0的优点,但是空间上由于使用镜像,而不是奇偶校验信息,磁盘利用率一样是50% |
磁盘阵列卡
阵列卡是用来实现RAID功能的板卡,通常是由I/O处理器、硬盘控制器、硬盘连接器和缓存等一系列组件构成的。
不同的RAID卡支持的RAID功能不同:
例如支持RAID0、RAID1、 RAID5、 RAID10等
RAID卡的接口类型:
IDE接口、SCSI接口、SATA接口、SAS接口
阵列卡的缓存
缓存(Cache)是RAID卡与外部总线交换数据的场所,RAID卡先将数据传送到缓存,再由缓存和外边数据总线交换数据。
缓存的大小与速度是直接关系到RAID卡的实际传输速度的重要因素,大缓存可以提高命中率
不同的RAID卡出厂时配备的内存容量不同,一般为几兆到数百兆容量不等
RAID热备盘
作用:相当于是在 raid里面再做一个备份,比如说本来Raid里面是只允许坏一个盘的情况下系统和数据依然正常运行,但是坏两个就不行了,但是加了热备之后就可以同时坏两个盘都没问题,就多了个保险。
原理:热备盘相当于帮Raid阵列多做多个备份,如果Raid陈列里其中一个盘坏了,这个热备盘就会顶替Raid里的那个坏盘,同时利用异或校验算法,把坏盘上面的数据原样做出来并存储在热备盘中。这样一来就等于Raid没受到损坏,然再找个一个同样的盘把坏盘替换掉,Raid和热备盘的状态又正常了。
配置磁盘阵列常见的命令
[root@192 ~]# rpm -qa | grep "mdadm" ---检查是否安装了组件
[root@192 ~]# mdadm -E /dev/sd[b-e]1 -------检查有没有磁盘已经安装了raid
cat /proc/mdstat #还能查看创建RAID的进度
mdadm -D /dev/md5 #查看RAID磁盘详细信息
mdadm -E /dev/sd[b-e]1 #检查磁盘是否已做RAID
[root@192 ~]# cat /proc/mdstat - ---检查安装进度
mount /dev/md5 /opt/md5 ---挂载
[root@192 ~]# mdadm /dev/md5 -f /dev/sdb1 ---模拟故障
[root@localhost ~]# mdadm -Cv /dev/md0 -l10 -n4 -x1 /dev/sd{b,c,d,e,f}1 创建5个硬盘,1个做热备份
创建/etc/mdadm.conf配置文件,方便管理软RAID的配置,比如启动、停止
echo 'DEVICE /dev/sdc1 /dev/sdb1 /dev/sdd1' > /etc/mdadm.conf
删除raid:
1.先umount组建好的raid:umount /dev/md0
2.停止raid设备:mdadm -S /dev/md0
3.此时如果忘了raid中的硬盘名称,要么重启系统,要么运行:mdadm -A -s /dev/md0 然后再用mdadm -D /dev/md0查看raid
中包含哪几个硬盘。再次运行第二步停止命令:mdadm -S /dev/md0
4.删除raid里的所有硬盘:mdadm --misc --zero-superblock /dev/sdc,
mdadm --misc --zero-superblock /dev/sdd
mdadm --misc --zero-superblock /dev/sde
mdadm --misc --zero-superblock /dev/sdf
有几块硬盘,就按格式删几次,注意最后面的硬盘名称。
5.删除配置文件:rm -rf /etc/mdadm.conf
补充:释放的硬盘在做一个raid5 raid1+0
生成配置:
mdadm -D -s >> /etc/mdadm.conf
停止设备:
mdadm -S /dev/md0
激活设备:
mdadm -A -s /dev/md0
强行启动:
mdadm -R /dev/md0
增加新的成员
mdadm -G /dev/md0 -n5 -a /dev/sdg
创建/etc/mdadm.conf配置文件,方便管理软RAID的配置,比如启动、停止
当我们停止RAID后想在启动RAID时发现启动不了,这是我们需要创建/etc/mdadm.conf配置文件才能够正常启动
echo 'DEVICE /dev/sdc1 /dev/sdb1 /dev/sdd1' > /etc/mdadm.conf
mdadm --detail --scan >> /etc/mdadm.conf
umount /dev/md0
mdadm -S /dev/md0 //停用
mdadm -As /dev/md0 //启用
注意点: 重要
1 raid创建好了(默认开启) 先要格式再挂载
raid停止要先解挂载 raid停止后要先开启才能挂载使用
2.添加硬件和移除损害的设备可以在raid开启时直接添加(挂载状态下也可以)
3.解挂载和停用raid都不能在挂载点目录下面,需要切换目录
4.磁盘列阵创建好了之后,要配置conf文件 不要raid关闭后不能开启
echo 'DEVICE /dev/sdc1 /dev/sdb1 /dev/sdd1' > /etc/mdadm.conf
mdadm --detail --scan >> /etc/mdadm.conf
5 :mdadm --misc --zero-superblock /dev/sdc1 命令 要在raid关闭的时候才能删除
选项 | mdadm表达意义 |
-C | 表示新建 |
-v | 显示创建过程中的详细信息 |
-a | yes |
–auto | 表示如果有什么设备文件没有存在的话就自动创建,可省略 |
-l | 指定 RAID 的级别,l5 表示创建 RAID5 |
-n | 指定使用几块硬盘创建 RAID,n3 表示使用 3 块硬盘创建 RAID |
-x | 指定使用几块硬盘做RAID的热备用盘,-x1表示保留1块空闲的硬盘作备用 |
-r | 移除损坏的设备 |
-a | 添加设备 |
-S | 停止RAID |
-A | 启动RAID |
-E | 检查磁盘是否已做RAID |
-D | 查询详细的信息 |
-f | ---模拟故障 |
-R | 强行启动 |
-G | 增加新的成员 |
实验一:
创建raid5,一共4块硬盘,其中一块硬盘作为热备盘
检查raid5磁盘详细情况
格式化并挂载raid5
现在模拟故障,移除两个设备
查看raid5
此时挂载点内的文件不能读写,磁盘列阵已经坏,只能删一个
重新新建raid5 同样4块硬盘 包括一块热备盘,格式化 再挂载
raid添加硬盘可以直接添加(挂载时 工作时)
此时要生成conf文件,不然设备关闭后启动不了
此时试着关闭raid和开启raid
首先先解挂载 umount -l 命令
关闭raid 是不能在挂载目录下面,这样会失败,要切换目录,显示关闭和重新开启raid成功
实验二
创建raid10
5块硬盘(其中一块做热备份)
格式化后挂载
生成配置文件
模拟下线
此时挂载点的文件还可以读写,因为热备盘顶上去了
此时模拟下线一台 文件仍然可以读写,应为互为镜像的硬盘还在
当剩下两台硬盘设备是,不让删了,这是一种保护机制
选项 -r 可以在设备开启的时候删除
--misc --zero -superblock 设备名 命令 要在raid关闭的时候才能删除
设备关闭后可以重新开启(前提是要配置conf文件)