–参考 《鸟哥linux私房菜》
一、 什么是 RAID
磁盘阵列全名是“ Redundant Arrays of Inexpensive Disks, RAID ”,英翻中的意思是:容错式廉价磁盘阵列。 RAID 可以通过一个技术(软件或硬件),将多个较小的磁盘整合成为一个较大的磁盘设备; 而这个较大的磁盘功能可不止是储存而已,他还具有数据保护的功能
基本常见的 level 有这几种
RAID-0 (等量模式, stripe):性能最佳
这种模式如果使用相同型号与容量的磁盘来组成时,效果较佳。
这种模式的 RAID 会将磁盘先切出等量的区块 (名为chunk,一般可设置 4K~1M 之间), 然后当一个文件要写入 RAID时,该文件会依据 chunk 的大小切割好,之后再依序放到各个磁盘里面去。由于每个磁盘会交错的存放数据, 因此当你的数据要写入 RAID 时,数据会被等量的放置在各个磁盘上面。举例来说,你有两颗磁盘组成 RAID-0 , 当你有 100MB 的数据要写入时,每个磁盘会各被分配到 50MB 的储存量。RAID-0 的示意图如下所示:
由于数据已经先被切割并且依序放置到不同的磁盘上面,因此每颗磁盘所负责的数据量都降低了!照这样的情况来看, 越多颗磁盘组成的 RAID-0 性能越好
风险: RAID-0 只要有任何一颗磁盘损毁,在 RAID 上面的所有数据都会遗失而无法读取。
RAID-1 (映射模式, mirror):完整备份
这种模式也是需要相同的磁盘容量的,最好是一模一样的磁盘啦
如果是不同容量的磁盘组成 RAID-1 时,那么总容量将以最小的那一颗磁盘为主!这种模式主要是“让同一份数据,完整的保存在两颗磁盘上头”。
一份数据传送到 RAID-1 之后会被分为两股,并分别写入到各个磁盘里头去。由于同一份数据会被分别写入到其他不同磁盘,因此如果要写入 100MB 时,数据传送到 I/O总线后会被复制多份到各个磁盘, 结果就是数据量感觉变大了!因此在大量写入 RAID-1 的情况下,写入的性能可能会变的非常差 (因为我们只有一个南桥啊!)。 好在如果你使用的是硬件 RAID (磁盘阵列卡) 时,磁盘阵列卡会主动的复制一份而不使用系统的 I/O 总线,性能方面则还可以。
以任何一颗硬盘损毁时,你的数据还是可以完整的保留下来的!
虽然 RAID-1 的写入性能不佳,不过读取的性能则还可以啦!这是因为数据有两份在不同的磁盘上面,如果多个processes 在读取同一笔数据时, RAID 会自行取得最佳的读取平衡。
RAID 1+0,RAID 0+1
RAID-0 的性能佳但是数据不安全,RAID-1 的数据安全但是性能不佳,那么能不能将这两者整合起来设置 RAID 呢? 可以啊!那就是 RAID 1+0 或 RAID 0+1。所谓的 RAID 1+0 就是:(1)先让两颗磁盘组成 RAID 1,并且这样的设置共有两组; (2)将这两组 RAID 1 再组成一组 RAID 0。这就是 RAID 1+0 啰!反过来说,RAID 0+1 就是先组成 RAID-0 再组成 RAID-1 的意思。
这也是目前储存设备厂商最推荐的方法!
想像你有 20 颗磁盘组成的系统,每两颗组成一个 RAID1,因此你就有总共 10组可以自己复原的系统了! 然后这 10组再组成一个新的 RAID0,速度立刻拉升 10倍了!并不像 RAID5/RAID6 必须要整组 RAID 的磁盘共同重建一颗独立的磁盘系统!性能上差非常多! 而且 RAID 1 与 RAID 0 是不需要经过计算的(striping) !读写性能也比其他的 RAID 等级好太多了!
RAID 5:性能与数据备份的均衡考虑
RAID-5 至少需要三颗以上的磁盘才能够组成这种类型的磁盘阵列。这种磁盘阵列的数据写入有点类似 RAID-0 , 不过每个循环的写入过程中 (striping),在每颗磁盘还加入一个同位检查数据 (Parity) ,这个数据会记录其他磁盘的备份数据, 用于当有磁盘损毁时的救援。
RAID-5 读写的情况有点像下面这样:
每个循环写入时,都会有部分的同位检查码 (parity) 被记录起来,并且记录的同位检查码每次都记录在不同的磁盘, 因此,任何一个磁盘损毁时都能够借由其他磁盘的检查码来重建原本磁盘内的数据喔!不过需要注意的是, 由于有同位检查码,因此 RAID 5的总容量会是整体磁盘数量减一颗。
而且当损毁的磁盘数量大于等于两颗时,这整组 RAID 5 的数据就损毁了。 因为RAID 5 默认仅能支持一颗磁盘的损毁情况。
在读写性能的比较上,读取的性能还不赖!与 RAID-0 有的比!不过写的性能就不见得能够增加很多! 这是因为要写入 RAID 5 的数据还得要经过计算同位检查码 (parity) 的关系
由于 RAID 5 仅能支持一颗磁盘的损毁,因此近来还有发展出另外一种等级,就是RAID 6。这个 RAID 6 则使用两颗磁盘的容量作为 parity 的储存,因此整体的磁盘容量就会
少两颗,但是允许出错的磁盘数量就可以达到两颗了!
Spare Disk:预备磁盘的功能:
当磁盘阵列的磁盘损毁时,就得要将坏掉的磁盘拔除,然后换一颗新的磁盘。换成新磁盘并且顺利启动磁盘阵列后, 磁盘阵列就会开始主动的重建 (rebuild) 原本坏掉的那颗磁盘数据到新的磁盘上!然后你磁盘阵列上面的数据就复原了! 这就是磁盘阵列的优点。不过,我们还是得要动手拔插硬盘,除非你的系统有支持热拔插,否则通常得要关机才能这么做。
为了让系统可以实时的在坏掉硬盘时主动的重建,因此就需要预备磁盘 (spare disk) 的辅助。 所谓的 spare disk 就是一颗或多颗没有包含在原本磁盘阵列等级中的磁盘,这颗磁盘平时并不会被磁盘阵列所使用, 当磁盘阵列有任何磁盘损毁时,则这颗 spare disk 会被主动的拉进磁盘阵列中,并将坏掉的那颗硬盘移出磁盘阵列! 然后立即重建数据系统。如此你的系统则可以永保安康啊!若你的磁盘阵列有支持热拔插那就更完美了! 直接将坏掉的那颗磁盘拔除换一颗新的,再将那颗新的设置成为 spare disk ,就完成了!
重点在于:
- 数据安全与可靠性:指的并非网络信息安全,而是当硬件 (指磁盘) 损毁时,数据是否还能够安全的救援或使用之意;
- 读写性能:例如 RAID 0 可以加强读写性能,让你的系统 I/O 部分得以改善;
- 容量:可以让多颗磁盘组合起来,故单一文件系统可以有相当大的容量。
对照表格: