RAID介绍,以及linux中软RAID的实现
RAID: redundant arrays of independent disks
提高I/O能力
提供耐用性
RAID实现方式
外接式RAID:通过额外adapter
内置式:RAID:主板集成RAID控制器
Software RAID:软RAID,学习使用
RAID级别:
标准RAID:
RAID 0:条带卷 stripping,最少两块盘,无冗余,读写速度接近单块磁盘n倍(视RAID卡而定),故障率为单块盘的N倍,容量为N*min(disk0,disk1……diskN),适用安全性不高情况.
RAID 1:镜像卷 mirroring,最少两块盘,写入时数据需chunk后复制N份到每个磁盘,因此写入速度和单个磁盘差不多,读取时可同时从每个磁盘读取数据的不同chunk,故速度和RAID 0接近,但是也存在只读取单磁盘的情况,依RAID卡而定.容量为1*min(disk0,disk1……diskN),可同时损坏N-1快盘.
RAID 5:至少三块盘,每个磁盘轮流做校验盘,需额外计算,数据按位对齐,进行异或计算,一般为left symmetric的对齐方式,读取速率为N-1快盘的速度,写入速率比较复杂,跟RAID卡关系很大,牵扯到RAID卡芯片的数据计算性能,,RAID卡是否开启cache等.磁盘有损坏时会degrade降级,只能坏一块盘.容量为(N-1)*min(disk0,disk1……diskN).
RAID 6:至少四块盘,两块校验盘,故最多坏两块盘,写入时计算量更大,容量为(N-2)*min(disk0,disk1……disnN).
混合RAID:
JBOD:just a bunch of disks.简单讲多块盘串联组成大硬盘,可以空间为sum(disk0,disk1,……diskN)
RAID 10:至少四块盘,每组镜像中最多只能坏一块,容量为N*min(disk0,disk1……diskN)/2,读写性能均提升
RAID 01:数据需两次chunk,增加计算量,底层的RAID0坏一块盘则此RAID0整体数据报废,如果另一个RAID0再坏一块盘,则数据将永久损坏,安全系数较RAID10低,而且替换硬盘后,整体的数据recovery量会非常大,此过程中硬盘I/O压力非常大,极易会再次损坏.
RAID 4 5 6的数据都需要按位对齐,需要计算过程
Linux中有内核模块支持模拟软RAID,对于的接口工具为mdadm,/proc/mdstat中可查看软RAID信息.
使用mdadm --create子命令创建软RAID
mdadm --detail /dev/md0查看具体信息
mdadm --manage子命令用于管理
下面把RAID6中一块盘设为故障
再次查看RAID6状态
可以看到已经是degraded降级状态,但整个RAID仍未clean状态
再次设置一块盘为故障状态
再来查看
仍能读取其中内容(已将其挂载至/mnt)
再将/dev/sdb1加到/dev/md0中
查看状态
可以看到是rebuilding,recovering状态,但RAID6仍处于degraded状态
当RAID6坏三块盘时的状态为failed
但是文件为什么仍能正常读取呢?
留给大家思考