RAID技术
RAID是一种把多块独立的硬盘(物理硬盘)按不同的方式组合起来形成一个硬盘组(逻辑硬盘),从而提供比单个硬盘更高的存储性能和提供数据备份技术。
RAID全称Redundant Array of Independent Disks;即独立磁盘冗余阵列。
RAID优势:容量易扩展、分块提高性能、可用性提高及可靠性提高。
RAID级别的选择
不同的RAID级别代表着不同的性能、数据安全性和存储成本。
RAID常用级别:RAID0、RAID1、RAID10、RAID5、RAID6。
RAID级别:
RAID-0:
- 优点:读、写性能提升,不存在校验,不会占太多CPU资源,设计、使用和配置比较简单
- 缺点:无冗错能力,不能用于对数据安全性要求高的环境
- 可用空间:N (硬盘个数) *min (s1,s2...取决于最小的硬盘空间)
- 适用领域:视频生成和编辑、图形编辑,其它需要大的传输宽带的操作
RAID1:
- 磁盘数:最低2个,2n个,n大于等于1
- 优点: 读性能提升、写性能略有下降,具有100%数据冗余,提供最高的数据安全保障,理论上可实现2倍的读取效率设计和使用较简单
- 缺点: 开销大,空间利用率只有50%,在写性能方面提升不大; 有冗余能力
- 可用空间:1*min (s1,s2...由最小硬盘的空间决定)
- 适用领域:财务、金融等高可用、高安全的数据存储环境
RAID-2:
- 采用校验冗余
- 把数据分散为位或块,加入汉明码,间隔写入到磁盘阵列的每个磁盘中在成员磁盘上的地址都一样
- 采用并行存取的方式
- 花费大、成本昂贵
RAID-3:
- 数据块被分成更小的块,并行传输到各个成员磁盘上,同时计算xor校验数据存放到专用的校验磁盘上
- xor算法:(异或), 相同为假、不同为真
- 磁盘数:最低3个
- 优点: 读写性能都较好,当磁盘损坏时,对整体吞吐量影响较小,减少了开销
- 缺点:控制器设计复杂,采用并行的存取方式,主轴同步时吞吐量没有提高,校验磁盘的写性能有瓶颈
- 适用领域:视频生成和图形、视频编辑等;需要高吞吐量的应用环境
RAID-4:
- 多块数据盘异或运算值存于专用校验盘
- 校验存储在固定磁盘
- 最少需要3块硬盘
- 数据交叉存储在2块硬盘中,再由第3块硬盘存储数据的校验码
- 校验码是由2块硬盘中的chunk块按位进行异或运算后而得的值
- 其中1块硬盘坏了不影响文件数据读写操作,数据还可以恢复,但就是有些慢;即使坏了1块硬盘仍然继续在线工作时,称为降级模式,此时数据没有保障,风险较大;所以要马上用新硬盘替换坏硬盘,暂定业务,用2块可用盘进行计算,按位校验恢复数据到新硬盘即可,当所有数据都恢复到新硬盘后,就能继续正常工作了;但是万一在恢复过程中也是有风险的
- RAID4还有一个固有缺点:用单块盘作为存放校验码,无论前面哪块盘访问数据,校验盘都得被访问;即集中存放校验码的校验盘访问压力过大,很容易造成性能瓶颈;异或运算,存储校验码,例如:1101,0110按位校验,校验码为:1011
RAID-5:
- 读、写性能提升
- 最少磁盘数:3, 3+
- 校验有序的存储在不同磁盘,采用独立存取的阵列方式,校验信息被均匀的分散到阵列的各个磁盘上;相对于RAID-4把校验码存放在一块硬盘上,而RAID-5是将3块盘循环轮流作存放校验码。左对称即校验码存放各盘的顺序是先在前2块盘存数据,第3块盘存校验码,依次类推,右对称相反
- 磁盘数:最低3个
- 优点:读性能较高,中等的写特性,校验信息的分布方式存取,避免出现写操作的瓶颈
- 缺点:控制器设计复杂,磁盘重建的过程比较复杂
- 可用空间:(N-1)*min(S1,S2,...其中的最小空间)
- 有容错能力:1块磁盘
- 适用领域:文件服务器、email服务器、web服务器等环境,数据库应用
RAID-6:
- 读、写性能提升
- 可用空间:(N-2)*min(S1,S2,...)
- 有容错能力:允许最多2块磁盘损坏
- 最少磁盘数:4, 4+
- 有两个校验
- 组合不同级别的RAID的目的:从RAID0到RAID6,不同级别的RAID在性能、冗余、价格等方面做了不同程度的折中
RAID-10:
- 读、写性能提升
- 有容错能力:每组镜像最多只能坏一块
- 最少磁盘数:4, 4+
- 先使用RAID 1连接两块磁盘,在使用RAID 0连接4块磁盘
- 磁盘数:最低4个,2n个,n大于等于2
- 优点:读性能很高,写性能比较好,数据安全性好,允许同时有N个磁盘
- 缺点:利用率只有50%,开销大
- 可用空间:N*min(S1,S2,...其中最小空间)/2
- 适用领域:多用于要求高可用性和高安全性的数据库应用
RAID-01:
- 多块磁盘先实现RAID0,再组合成RAID1
- 同RAID 10 ,只不过是先采用RAID 0
- 先分成两组做成RAID-0,再把组成的RAID-0做成RAID-1;不符合常用方法,每一组有一块坏的硬盘可能性大