软件磁盘列阵
软件磁盘列阵(software RAID)
RAID:Redundant Array of Independent Disks.
冗余磁盘列阵
RAID级别
RAID的级别不代表性能的高低,仅仅是代表不同组成方式的编号.
RAID-0(等量模式,Stripe):能效最佳
至少需要2块硬盘
这种模式的RAID会先将磁盘切分成等量的区块(chunk,一般可设定4k~1M),然后当一个文件要写入RAID时,该文件会先根据chunk
的大小切分成若干份,然后再依序存储到磁盘.由于每个磁盘会交错的存放数据,因此当你的数据要写入RAID时,数据会被等量的放置
在各个磁盘上面.举例来说,如果你100M数据要写入时,每个磁盘存储50M.(如下图)
理论上来说,组成RAID-0的磁盘数量越多,能效越好,因为每个磁盘所负责的数据量变小了,此外整体的总容量也变大了.
但是带来的风险也是很大的,由于RAID-0是将文件切分成chunk然后分别存储在不同的磁盘,那么此时,只要有一块硬盘损坏
那么RAID上的所有数据都回丢失,无法读取.
另外,如果用容量不同的2块磁盘来组成RAID-0时,由于数据是等量分布的,所以当容量较小的那一块磁盘写满后,所有数据就会继续写到容量较大的那块硬盘.举例来说,有2块磁盘,分别为200G和500G的容量,那么最初的400G数据会写入到每块硬盘200G,但是后续的内容则只能都写到500G的那块硬盘.
RAID-1(镜像模式:mirror):完全备份
至少需要2块硬盘
这种模式也需要相同的磁盘容量来组成RAID,如果两块磁盘的容量不同,那么RAID的总体容量会以容量较小的那一块磁盘为主.
这种模式的原理是将同样的数据完整的写到2块磁盘中,说直白点就是数据写入时会同时写入另一块磁盘一份一模一样的内容当作备份.
因此,磁盘的整体容量利用率只有50%.
如上图所示,由于数据是被同时写入到两块不同的磁盘,那么写入的时候数据到达I/O总线后会被复制多分到各个磁盘,给人的感觉像是
数据量翻了几倍,因此写入的效率很低.如果使用的是硬件RAID,那么RAID会主动复制一份而不用系统的I/O总线,效率方面还可以.
不过这里说的是软件RAID,所以写入效率就很低了.
不过反过来,读取的效率却很快,因为同样的数据内容可以从多块磁盘同时提供。RAID-1的最大优点在于数据备份,如果RAID中的其中
一块磁盘损坏,那么可以通过另一块磁盘的数据来进行恢复.
RAID-3:
①把数据分成多个小"块"(按bit存储)存放在N+1个磁盘中。读写性能提升。
②有一块盘专门用来存储校验码,校验盘的性能可能会成为阵列瓶颈。
③至少需要3块磁盘。
④其中一块盘损坏时,可以根据校验盘以及其他的磁盘信息来进行恢复。
同时坏2块或以上磁盘,则无法正常工作。但同时坏2块磁盘的几率较小,所以数据安全性相对较高。
⑤磁盘利用率N-1/N。
RAID-4:
①与RAID3相似,也是将数据分成多个块(按数据块存储),读写性能提升。
②有一块盘校验盘,用来存储其他所有盘的奇偶校验码,校验盘的性能可能会成为阵列瓶颈。
③至少需要3块磁盘。
④其中一块盘损坏时,可以根据校验盘以及其他的磁盘信息来进行恢复。
但是相较RAID3,数据恢复难度比较大。
⑤磁盘利用率(N-1)/N。
RAID-5:能效于数据备份的均衡考虑
至少需要3块硬盘
有点类似RAID-0,不过每个循环的写入过程,都会加入一个同位检查数据(Parity),整个数据会记录其他磁盘的备份数据,如下图.
因此磁盘利用率为(N-1)/N,而当RAID-5中2块磁盘损坏时,数据便无法恢复,因为RIAD-5仅支持1块磁盘损坏.
RAID-6
在RIAD-5的基础上还有一种RAID-6模式,只不过它使用2块磁盘的容量作为Parity,因此,可以允许2块磁盘损坏.
RAID1+0,RAID0+1
至少需要4块硬盘
就像上面所提到的,RAID-0效率很高,但是不安全,而RAID-1比较安全,但是效率却很低,那么有没有一个即安全效率又高的模式呢?
这就是我们所说的RAID1+