什么是磁盘阵列
磁盘阵列(RedundantArrays of Inexpensive Disks (RAID) 即容错廉价磁盘阵列 ) ,RAID 可以通过一些技术(软件或硬件)将多个较小的磁盘整合成为一个较大的磁盘设备.
常见的磁盘阵列等级
RAID-0 (等量模式,stripe):性能最佳
这种模式如果使用相同型号与容量的磁盘来组成时,效果较佳.
这种模式的RAID会将磁盘切出等量的区块(名为 chunk,例如1MB),然后当一个文件要写入 RAID 时,该文件会依据 chunk 的大小切割好,之后再依序放到各个磁盘里面去。由于每个磁盘会交错的存放数据, 因此当你的数据要写入 RAID 时,数据会被等量的放置在各个磁盘上面。
RAID-0 磁盘写入图
上图说明:在组成RAID-0时每块磁盘(DiskA和DiskB)都会被先分隔成为小区块(chunk 图中为1MB),当有数据要写入RAID时,数据会被分成符合小区块的大小,然后再依序一个一个的放置到不同磁盘去.由于数据已经先被分并且放置到不同的磁盘上面,因此每块磁盘所负责的数据量都降低了.照这样的情况来看, 越多颗磁盘组成的 RAID-0 效能会越好,因为每颗负责的资料量就更低了!
由上图我们知道文件是被切割成为适合每颗磁盘
分区区块的大小, 然后再依序放置到各个磁盘中。想一想,如果某一颗磁盘损毁了,那么文件数据将缺一块,此时这个文件就损毁了。 由于每个文件都是这样存放的,因此 RAID-0 只要有任何一颗磁盘损毁,在 RAID 上面的所有数据都会遗失而无法读取。
另外,如果使用不同容量的磁盘来组成 RAID-0 时,由于数据是一直等量的依序放置到不同磁盘中,当小容量磁盘的区块被用完了, 那么所有的数据都将被写入到最大的那颗磁盘去。举例来说,我用200G 与 500G 组成 RAID-0 , 那么最初的 400GB 数据可同时写入两颗磁盘 (各消耗 200G 的容量),后来再加入的数据就只能写入 500G 的那颗磁盘中了。 此时的效能就变差了,因为只剩下一颗可以存放数据嘛!
RAID-1 (影像模式,mirror):完整备份
这种模式也是需要相同的磁盘容量的,最好是一模一样的磁盘.如果是不同容量的磁盘组成
RAID-1 时,那么总容量将以最小的那一颗磁盘为主!这种模式主要是『让同一份数据,完整的保存
在两颗磁盘上头』. 举例来说,如果我有一个 100MB 的文件,且我仅有两颗磁盘组成 RAID-1 时,
那么这两颗磁盘将会同步写入 100MB 到他们的储存空间去。 因此,整体 RAID 的容量几乎少了
50%。
RAID-1的磁盘写入图.jpg
由于两颗磁盘内的数据一模一样,所以任何一颗硬盘损毁时,你的资料还是可以完整的保留下来的!
所以我们可以说, RAID-1 最大的优点大概就在于数据的备份吧!不过由于磁盘容量有一半用在备份,因此总容量会是全部磁盘容量的一半而已。
RAID 0+1,RAID 1+0
所谓的 RAID 1+0 就是: (1)先让两颗磁盘组成 RAID 1,并且这样的设定共有两组; (2)将这两组 RAID 1 再组成一组 RAID 0。这就是 RAID 1+0,反过来说,RAID 0+1 就是先组成 RAID-0 再组成 RAID-1 的意思。
RAID 1+0的磁盘写入图.jpg
如上图所示,Disk A + Disk B 组成第一组 RAID 1,Disk C + Disk D 组成第二组 RAID 1, 然后这两组再整合成为一组 RAID 0。如果我有 100MB 的数据要写入,则由于 RAID 0 的关系, 两组RAID 1 都会写入 50MB,又由于 RAID 1 的关系,因此每颗磁盘就会写入 50MB 而已。 如此一来不论哪一组 RAID 1 的磁盘损毁,由于是 RAID 1 的映像数据,因此就不会有任何问题发生了!这也是目前储存设备厂商最推荐的方法!
RAID 5 : 性能与数据备份的均衡考虑
RAID-5 至少需要三颗以上的磁盘才能够组成这种类型的磁盘阵列。这种磁盘阵列的数据写入有点类似 RAID-0 , 不过每个循环的写入过程中 (striping),在每颗磁盘还加入一个同位检查数据 (Parity) ,这个数据会记录其他磁盘的备份数据, 用于当有磁盘损毁时的救援。
RAID5的磁盘写入图.jpg如上图所示,每个循环写入时,都会有部分的同位检查码 (parity) 被记录起来,并且记录的同位检查码每次都记录在不同的磁盘, 因此,任何一个磁盘损毁时都能够藉由其他磁盘的检查码来重建原本磁盘内的数据喔!不过需要注意的是, 由于有同位检查码,因此 RAID 5 的总容量会是整体磁盘数量减一颗。以上图为例, 原本的 3 颗磁盘只会剩下 (3-1)=2 颗磁盘的容量。而且当损毁的磁盘数量大于等于两颗时,这整组 RAID 5 的资料就损毁了。 因为 RAID 5 预设仅能支持一颗磁盘的损毁情况。
在读写效能的比较上,读取的效能还不赖!与 RAID-0 有的比!不过写的效能就不见得能够增加很多! 这是因为要写入 RAID 5 的数据还得要经过计算同位检查码 (parity) 的关系。由于加上这个计算的动作, 所以写入的效能与系统的硬件关系较大!尤其当使用软件磁盘阵列时,同位检查码是透过 CPU 去计算而非专职的磁盘阵列卡, 因此效能方面还需要评估。
另外,由于 RAID 5 仅能支持一颗磁盘的损毁,因此近来还有发展出另外一种等级,就是 RAID 6 ,这个 RAID 6 则使用两颗磁盘的容量作为 parity 的储存,因此整体的磁盘容量就会少两颗,但是允许出错的磁盘数量就可以达到两颗了! 也就是在 RAID 6 的情况下,同时两颗磁盘损毁时,数据还是可以救回来!
如果需要磁盘阵列的话,其实重点在于:
- 数据安全与可靠性:指的并非网络信息安全,而是当硬件 (指磁盘) 损毁时,数据是否还能够安全的救援或使用之意;
- 读写效能:例如 RAID 0 可以加强读写效能,让你的系统 I/O 部分得以改善;
- 容量:可以让多颗磁盘组合起来,故单一文件系统可以有相当大的容量。
网友评论