RAID阵列基础知识
独立硬盘冗余阵列 (RAID, Redundant Array of Independent Disks),旧称廉价磁盘冗余阵列(Redundant Array of Inexpensive Disks),简称磁盘阵列。
RAID的种类
这里我们只介绍比较常用的RAID类型,详细可查看维基百科
RAID-0 (等量模式,stripe): 性能最佳
这种模式如果使用相同型号与容量的磁盘来组成时,效果最佳。这种模式的RAID会将磁盘先切出等量的区块(举例来说:4KB),然后当一个文件要写入RAID时,该文件会依据块的大小切割好,之后再依序放到各个磁盘里面去。由于每个磁盘会交错存放数据,因此当你的数据要写入RAID时,数据会被等量放置在各个磁盘上面。
例如:你有两块硬盘组成RAID-0,当你有100MB的数据要写入时,每个磁盘会被分配到50MB的存储量。RAID-0的示意图:
RAID-0需要自行负责数据损毁的风险,由上图我们知道文件是被切割成为适合每块磁盘分区区块的大小,然后再依序放置到各个磁盘中,所以如果一个磁盘坏了,那么数据将缺少一块,此时这个文件就损毁了。由于每个文件都是这样存放,因此RAID-0只要任何一块磁盘损毁,在RAID-0上面的所有数据都会丢失而无法读取。
RAID-1 (镜像模式,mirror): 完整备份
- 这种模式也是需要相同的磁盘容量的,最好是一模一样的磁盘。如果是不同容量的磁盘组成RAID-1时,那么总容量将以最小的那一块磁盘为主!这种模式主要是让同一份数据完整保存在两块磁盘上面。举例来说,如果有一个100MB的文件,且我仅有两块磁盘组成RAID-1时,那么这两块磁盘将会同步写入100MB到他们的存储空间去。因此,整体RAID的容量就几乎少了50%.
- 由于两块磁盘内的数据一模一样,所以任何一块硬盘损毁时,你地数据还是可以完整保留下来。所以我们可以说,RAID-1最大的优点大概就是在于数据的备份。不过由于磁盘容量有一半用在备份,因此总容量会是全部磁盘容量的一半而已。RAID-1的写入性能不佳,不过读取的性能则是还可以。这是因为数据有两份在不同的磁盘上面,如果多个进程在读取同一条数据时,RAID会自行取得最佳的读取平衡。
RAID 0 + 1
- RAID-0的性能佳但是数据不安全,RAID-1的数据安全但是性能不佳,那么能不能将这两者整合起来设置RAID呢?那就是RAID 0 + 1或RAID 1 + 0。所谓的RAID 0 + 1就是先让两块硬盘组成RAID-0,并且这样的设计有两组;然后将这两组RAID-0再组成一组RAID-1,这就是RAID 0 + 1,反过来说,RAID 1 + 0 就是先组成RAID-1再组成RAID-0的意思。
- 下图中,Disk 0 + Disk 1组成第一组RAID 0,Disk 2 + Disk 3组成第二组RAID 0,然后这两组再整合成一组RAID-1。如果我有100MB的数据要写,则由于RAID 1的关系,两组RAID-0 都会写入100MB,但是由于RAID-0的关系,因此每块磁盘仅会写入50MB而已。如此一来,无论哪一组的RAID-0的磁盘损毁,只要另外一组RAID-0还存在,那么就能够通过RAID-1的机制来恢复数据。
- 由于具有RAID-0的优点,所以性能得以提升,由于具有RAID-1的优点,所以数据得以备份。但是也由于RAID-1的缺点,所以总容量会少一半用来作为备份。
Raid 1 + 0
- 下图Disk 0 + Disk 1先组成第一组RAID-1,Disk 2 + Disk 3再组成一组RAID-1,然后这两组再整合成为一组RAID-0。如果我有100MB数据要写,首先会将数据分割,那么有50MB的数据会写入第一组RAID-1中,另外50MB写入第二组RAID-1中,由于RAID-1的特点,Disk 0 和 Disk 1都会写入同样的50MB数据,另外一组RAID-1也是同样。因此,的那个我饿能其中一块硬盘坏掉是没有关系的,但是如果第一组RAID-1(disk 0 + Disk 1)两块硬盘全部损坏,那么数据将会丢失。再比如Disk 0 和Disk 2两块硬盘损坏,由于RAID-1所以数据还是可以恢复的。
Spare Disk: 预备磁盘的功能
- 磁盘阵列的磁盘损坏时,就得将要坏的磁盘拔除,然后换上一块新的磁盘。换成新磁盘并且顺利启动磁盘阵列后,磁盘阵列就会开始重建原本坏掉的那块磁盘数据到新的磁盘中去,然后你磁盘阵列上的数据就复原了。这就是磁盘阵列的优点,不过我们还是要手动插拔磁盘,此时通常得要关机才能这么做。
- 为了让系统可以实时地在坏掉硬盘时主动重建,因此就需要预备磁盘(spare disk)的辅助。所谓的spare disk就是一块或者多块没有包含原本磁盘阵列等级中的磁盘,这块磁盘平时并不会被磁盘阵列所使用,当磁盘阵列有任何一块磁盘损坏时,这块spare disk会被主动拉进磁盘阵列中,并将坏掉的那块磁盘移除磁盘阵列,然后重建数据系统。
硬阵列和软阵列
硬件磁盘阵列(hardware RAID)
硬磁盘阵列就是通过磁盘阵列卡来完成阵列的。磁盘阵列卡上面有一块专门的芯片处理RAID任务,因此在性能方面会比较好。并且目前中高等的磁盘阵列卡都支持热插拔,即在不关机的情况下更换损坏的硬盘。软件磁盘阵列(software RAID)
软件磁盘阵列主要是通过软件来仿真硬件磁盘阵列,因此会损耗较多的系统资源,比如说CPU的运算于I/O总线的资源等,不过我们现在的计算机已经速度很快了,因此这些限制现可以忽略不计了。