RAID(Redundant Array of independent Disks,独立磁盘冗余阵列)是将多块硬盘设备组成一个容量更大,更安全的磁盘组,它可以将数据切分为多个片段后,分别存储在各个不同的物理硬盘设备上。然后利用分散读写需求来提升硬盘组整体的性能,同时将重要数据同步保存多份到不同的物理硬盘设备上,可以有非常好的数据备份效果。
由于对成本和技术两方面的考虑,因此需要针对不同的需求在数据可靠性及读写性能上做权衡,制定出各自不同的合适方案,目前已有的RAID硬盘组的方案至少有十几种,RAID0、RAID1、RAID5、RAID10和RAID01是五种最常见的方案。不得不说的是,raid了解越深入,越能体会到选择和平衡的思想。
关于详细的raid技术和原理实现方面,查看man md,该文档中给出了非常详细的实现方式,包括数据是如何组织的。
将多块硬盘通过硬件或软件的方式串联在一起,成为一个更大的“硬盘”,也称为条带卷(striping)。
数据会被依次分别写入到各个物理硬盘中,至少需要两块硬盘。
优势:IO 设备的读写性能均提高
缺点:无数据的冗余和错误修复能力
数据被拷贝多份,同时写入多块硬盘。当某一块硬盘损坏后 ,一般可以立即通过热交换方式来恢复数据。
简单的分析,RAID1与 RAID0的读写性能应该是相同的,但是也要区分随机读、顺序读等不同情况。
优势:数据安全性高
缺点:磁盘利用率低;将相同的数据写入多个硬盘会增加系统负载
理论利用率:1/n,n 是阵列中的磁盘数量
RAID 5 是一种储存性能、数据安全和存储成本兼顾的存储解决方案。它使用的是Disk Striping(硬盘分割)技术。
RAID 5至少需要三个硬盘,RAID 5不是对存储的数据进行备份,而是把数据和相对应的奇偶校验信息存储到组成RAID5的各个磁盘上,并且奇偶校验信息和相对应的数据分别存储于不同的磁盘上。
当RAID5的一个磁盘数据发生损坏后,可以利用剩下的数据和相应的奇偶校验信息去恢复被损坏的数据。RAID 5可以理解为是RAID 0和RAID 1的折衷方案。RAID 5可以为系统提供数据安全保障,但保障程度要比镜像低而磁盘空间利用率要比镜像高。
RAID 5具有和RAID 0相近似的数据读取速度,只是因为多了一个奇偶校验信息,写入数据的速度相对单独写入一块硬盘的速度略慢,若使用“回写缓存”可以让性能改善不少。同时由于多个数据对应一个奇偶校验信息,RAID 5的磁盘空间利用率要比RAID 1高,存储成本相对较便宜。
RAID10是 RAID1 + RAID0的组合体。RAID10至少需要4块硬盘。
以四块硬盘为例:
首先两两制作成 RAID1,保证其数据的安全性,然后将两个 RAID1组合成一个 RAID0,提高存储的读写速度。
只要不是坏在同一组中的所有硬盘,那么最多可以承受损坏50%的硬盘而数据不受影响。
RAID10硬盘组技术继承了RAID0更高的读写速度和RAID1更安全的数据保障,在不考虑成本的情况下RAID10在读写速度和数据保障性方面都超过了RAID5,是较为广泛使用的存储技术。
复制方法 - offset 和 far
上图中一个数据块是相邻存储在相同偏移位置的,即A和A在相邻设备的同一高度,这只是RAID10的一种复制方法,称为near复制方法,也是默认复制方法。此外,还有far、offset两种复制方法:
offset
far
RAID 01是 RAID0+RAID1。与 RAID10最大的区别是在数据的安全性上:
如果 RAID0 组中的硬盘损坏,那么这一个 RAID0组即损坏,IO 压力全部在另外一个 RAID0 组上,这很容易导致另外一个 RAID0组中的硬盘也损坏,导致磁盘阵列的数据全部失效。
RAID01基本无人使用,因为数据安全性并不高。
软 RAID 在生产环境中一般情况不会用到,此处仅用于对 RAID 原理的理解(待更新)
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。