因为在鸟哥和笔试题都看到这个知识点,而且网络上描述的都不是很清晰,所以记录一下。
磁盘阵列(Redundant Arrays of Independent Disks, RAID),译为独立磁盘冗余阵列。raid可以通过软件或硬件的方式,将多个小磁盘整合成一个大磁盘设备。并且根据使用的阵列方式不同,不仅仅扩大了存储容量,还可以实现数据保护。实现的级别有多种,这里介绍几种较为常见的。
raid0(等量模式|性能最佳)
存储过程
这种模式时的raid会将磁盘切出等量的区块(名为chunk,一般可设定4K~1M之间),然后当一个文件要写入 RAID 时,该文件会依据 chunk 的大小切割好,之后再依序放到各个磁盘里面去。因为每个磁盘都会依序交错的存放文件,所以数据会被等量的放置在各个磁盘上。
特点
只要有一个磁盘损毁,则所有资料遗失
因为数据依序存放
越多磁盘组成的raid-0的性能越好
因为每个磁盘负责的数据量变少了
这种模式如果使用相同容量和型号的磁盘来组成最佳
因为如果有部分比较大,那么到其他都满了的时候,所有数据都被写入到最大那颗
RAID-1 (映射模式, mirror)
存储过程
这个最好也是相同容量和型号。当写入文件时,会将所有文件同步写入到他们的存储空间中,数据传送到io总线后会被复制多分到各个磁盘。不过如果使用硬件的raid,阵列卡会主动复制一份而不使用系统io总线。
特点
使用率只有一半,并且两个磁盘相同,也称为mirror。
如果磁盘损毁一个,也能完整保留数据。
读取效率可以,如果有多个进程读取同一个文件时,raid会自行取得平衡。
raid1+0,0+1(最推荐的方法)
存储过程
先组成1再组成0,或相反。推荐raid1+0。
特点
如果是raid1+0,相当于先对raid0的所有硬盘做了备份,并且每组raid1都是独立存在,因此任何磁盘损毁,都是直接复制重建,不像raid5或6需要整组的raid重建个独立的磁盘系统。并且读写性能高(不需要计算)。
raid5,6(效率和备份的均衡)
存储过程
至少需要三颗才能组成(如为raid6则4颗)。在写入时都记录部分的同位检查码(parity),并且每次都记录在不同的磁盘里。因此可以容许一个磁盘损毁。下图为读写过程(从vbird引用):
特点
读取性能还不错(因为读就类似raid0,只是多了一个检查码而已)
容量为n-1,如果为raid6,则为n-2(n为磁盘阵列使用磁盘数)
写入效率低,因为如果写入raid5还需要计算同为检查码,并且如果使用软件实现raid5则通过cpu计算,更慢。
Spare Disk:预备磁盘的功能
当磁盘损毁就要手动拔除,换成新磁盘并启动则会自动rebuild。为了让系统可以实时的在坏掉硬盘时主动的重建,因此就需要预备磁盘 (spare disk) 的辅助。 所谓的 spare disk 就是一颗或多颗没有包含在原本磁盘阵列等级中的磁盘,这颗磁盘平时并不会被磁盘阵列所使用, 当磁盘阵列有任何磁盘损毁时,则这颗 spare disk 会被主动的拉进磁盘阵列中,并将坏掉的那颗硬盘移出磁盘阵列! 然后立即重建资料系统。并且支持热插拔的磁盘阵列还会立即重建资料,并且可以设定插入的那个为新的预备磁盘。
不同的磁盘阵列等级对比
所有这些都重点关注以下三点:
1.数据安全和可靠性
2.读写性能
3.容量
鸟哥的linux中所整理的表格,raid10就是raid1+0
项目 | RAID0 | RAID1 | RAID10 | RAID5 | RAID6 |
最少磁盘数 | 2 | 2 | 4 | 3 | 4 |
最大故障磁盘数(1) | 无 | n-1 | n/2 | 1 | 2 |
数据安全(1) | 完全没有 | 最佳 | 最佳 | 好 | 比 RAID5 好 |
理论写入性能(2) | n | 1 | n/2 | <n-1 | <n-2 |
理论读出性能(2) | n | n | n | <n-1 | <n-2 |
可用容量(3) | n | 1 | n/2 | n-1 | n-2 |
一般应用 | 强调效能但数据不重要的环境 | 资料与备份 | 服务器、云系统常用 | 资料与备份 | 资料与备份 |
软件和硬件的磁盘阵列区别
待写。