磁盘阵列(RAID)
前言
到目前为止在同一个文件中读写数据的时候都是访问一块磁盘,那么如果这个磁盘坏了的话,那么数据将丢失了,这时候就可以使用 RAID 的技术来解决这个问题。
RAID 翻译成中文就叫做磁盘阵列,我们通过把多块硬盘做一个组合使用,从而提高磁盘的读写性能或者提高数据的高可用性等,常见的 RAID 级别包括:
1.RAID 0
2.RAID 1
3.RAID 5
4.RAID 10
下面分别来讲解每一个级别的含义和作用。
RAID 0
RAID 0 也称为条带(striping)方式,这种方式将数据拆成两份,然后写到两块磁盘中,所以在这种模式下,至少需要两块磁盘,每块磁盘存储 50% 的数据,这样可以提高单个磁盘的吞吐率和性能,从而加快数据的读写效率。如下图:
RAID 1
RAID 1 也称为镜像(mirroring)方式,这种方式将数据写到一块磁盘中,并且会将数据备份到另一块磁盘中,所以在这种模式下,至少需要两块磁盘
好处:当有一块硬盘损坏的时候,数据不会丢失,提高了数据的可靠性
坏处:磁盘使用率降低了一半了,因为两块硬盘存储的数据是一样的
RAID 5
RAID 5 是通过奇偶校验来恢复数据的。在这种方式下至少需要 3 块磁盘,其中 2 块磁盘写数据,另一块磁盘写前面 2 块磁盘中数据的奇偶校验值,这里我们需要注意的是,3 块磁盘中的任何 2 块都可以使用来写数据,那么另一块则是写奇偶校验
比如我们有 3 块磁盘,磁盘 1、磁盘 2、磁盘 3 ,那么:
1.磁盘 1 和磁盘 2 上写数据,那么磁盘 3 上则存储写在前面两块磁盘中数据的奇偶校验
2.磁盘 2 和磁盘 3 上写数据,那么磁盘 1 上则存储写在前面两块磁盘中数据的奇偶校验
3.磁盘 3 和磁盘 1 上写数据,那么磁盘 2 上则存储写在前面两块磁盘中数据的奇偶校验
那么:
1.当磁盘 1 损坏了话,那么磁盘 1 上的数据可以通过这块磁盘上数据的奇偶检验值和另一块数据恢复过来
2.当奇偶校验值损坏了话,则可以通过另两块上的数据重新计算出来
这样就可以保证数据不丢失了。如下图:
RAID 5 也是有一个缺点的:
就是当 2 块磁盘都坏了的话,那么数据将会丢失了
RAID 10
RAID 10 是 RAID 1 和 RAID 0 的结合体,所以我们至少需要 4 块磁盘:
拿 2 块磁盘做 RAID 1
再拿 2 块磁盘做 RAID 1
最后在上面两个 RAID 1 之上再做 RAID 0
这样可以保证即使损坏了不在同一侧的 2 块磁盘的话,数据是不会丢失的。
4 种 RAID 对比
RAID 技术的实现
RAID 的实现光靠硬盘是实现不了的,一般的话,实现 RAID 有两种方式:
1.使用硬件来实现,在服务器上可以有一个 RAID 控制器(或者称为 RAID 卡)这样的一个硬件设备,这个硬件设备通过数据的读写会自动计算数据应该落入到哪一个磁盘中,甚至这个 RAID 卡中还会带有缓存功能,加速硬盘的访问
2.使用软件来实现,我们可以使用软件 mdadm 来实现 RAID,但是使用软件来实现 RAID 的性能不好,所以工作中一般使用 RAID 控制器的硬件来实现 RAID