RAID:Redundant Arrays of Independent Disks,英翻中的意思为:独立容错式磁盘阵列,旧称为容错式廉价磁盘阵列。
RAID 可以通过一个技术(软件或硬件),将多个较小的磁盘整合成为一个较大的磁盘设备; 而这个较大的磁盘功能可不止是储存而已,他还具有数据保护的功能呢。整个 RAID 由于选择的等级 (level) 不同,而使得整合后的磁盘具有不同的功能,基本常见的 level 有这几种:
RAID0
等量模式,需要至少两块磁盘组成。这种模式如果使用相同型号与容量的磁盘组成时,效果较佳。这种模式的RAID会将磁盘先切出等量的区块 (名为chunk,一般可设置 4K~1M 之间), 然后当一个文件要写入 RAID 时,该文件会依据 chunk 的大小切割好,之后再依序放到各个磁盘里面去。由于每个磁盘会交错的存放数据, 因此当你的数据要写入 RAID 时,数据会被等量的放置在各个磁盘上面。举例来说,你有两块磁盘组成 RAID-0 , 当你有 100MB 的数据要写入时,每个磁盘会各被分配到 50MB 的储存量。
RAID1
映像模式,完整备份。这种模式也是需要相同磁盘容量的,最好是一模一样的磁盘,如果是不同容量的磁盘组成RAID1,那么总容量将以最小的那一块磁盘为主!这种模式主要是让同一份数据,完整的保存在两块磁盘上。举例来说,如果我有一个 100MB 的文件,且我仅有两块磁盘组成 RAID-1 时, 那么这两块磁盘将会同步写入 100MB 到他们的储存空间去。 因此,整体 RAID 的容量几乎少了 50%。由于两块硬盘内容一模一样,好像镜子映照出来一样, 所以我们也称他为 mirror 模式。
RAID5
效能与数据备份的均衡考虑。RAID-5 至少需要三块以上的磁盘才能够组成这种类型的磁盘阵列。这种磁盘阵列的数据写入有点类似 RAID-0 , 不过每个循环的写入过程中 (striping),在每块磁盘还加入一个同位检查数据 (Parity) ,这个数据会记录其他磁盘的备份数据, 用于当有磁盘损毁时的救援。每个循环写入时,都会有部分的同位检查码(parity)被记录起来,并且记录的同位检查码每次都记录在不同的磁盘, 因此,任何一个磁盘损毁时都能够借由其他磁盘的检查码来重建原本磁盘内的数据!不过需要注意的是, 由于有同位检查码,因此 RAID 5 的总容量会是整体磁盘数量减一块。原本的 3 块磁盘只会剩下 (3-1)=2 块磁盘的容量。而且当损毁的磁盘数量大于等于两块时,这整组 RAID 5 的资料就损毁了。 因为 RAID 5 默认仅能支持一块磁盘的损毁情况。
RAID10
RAID0的效能佳但是数据不安全,RAID1 的数据安全但是效能不佳,那么能不能将这两者整合起来设置 RAID 呢? 可以!那就是 RAID 1+0 或 RAID 0+1。所谓的 RAID 1+0 就是: (1)先让两块磁盘组成 RAID 1,并且这样的设置共有两组; (2)将这两组 RAID1 再组成一组 RAID0。这就是 RAID10 !反过来说,RAID01 就是先组成 RAID-0 再组成 RAID-1 的意思。
各种RAID的优缺点:
项目 | RAID0 | RAID1 | RAID10 | RAID5 |
最少磁盘数 | 2 | 2 | 4 | 3 |
最大容错磁盘数(1) | 无 | n-1 | n/2 | 1 |
数据安全性(1) | 完全没有 | 最佳 | 最佳 | 好 |
理论写入效能(2) | n | 1 | n/2 | <n-1 |
理论读出效能(2) | n | n | n | <n-1 |
可用容量(3) | n | 1 | n/2 | n-1 |
一般应用 | 强调效能但数据不重要的环境 | 资料与备份 | 服务器、云系统常用 | 资料与备份 |
磁盘列阵的管理(以软件为例)
mdadm
创建RAID
语法:mdadm -c raid设备名 -l raid等级 -n磁盘数量 实体设备名
示例:mdadm -c /dev/md5 -l 5 -n 3 /dev/sdb{5,6,7},创建RAID5
创建RAID后,编辑/etc/mdadm.conf,将RAID的UUID信息记录到配置文件里去
ARRAY /dev/md5 UUID=xxxxxxxxxxxxxxxxxx
选项
-X 创建备份盘
-S 停止RAID
-A 再次启用RAID
-a 添加一块磁盘到RAID中
-r 将设备从RAID中移除
查看RAID状态
mdadm -D raid名或者cat /proc/mdstat
格式化
mkfs.ext4 /dev/md5
挂载
mount /dev/md5 /mnt/md5