磁盘阵列RAID基础原理

如果你的主机中有三个硬盘(不是分区),里面保存的数据非常重要,那么你会想怎么对这些数据进行备份。最简单的办法是再买几个硬盘,把数据全部拷贝到备份硬盘。如果你的主机上挂载着十个盘,那么你就得买十个硬盘用来备份。
 
对于企业级的大型机,一个应用系统上少则挂载二十多块硬盘,多着上百块,如果对其进行备份,我们不可能使用等量的硬盘。
 
这时我们就得考虑其他的备份策略。
 
最近学习了一种称为RAID5的备份策略,感觉很神奇,分享给大家。
 
首先我们应该明白什么是异或运算:
 
0100^0101=0001
 
异或运算的规则是同则为假,异则为真(0为假,1为真),
 
0^1^0^1^1^0=1
 
当异或计算中,1的个数为奇数时,几个等于1,为偶数时等于0。
 
 
 
然后让我们来进行一个计算
 
0^1^0^1^*=1
 
请问*为何值?  =1
 
如果每一个0 1 都对应硬盘中的一个bit,看看下面的情况:

disk1

 

disk2

 

disk3

 

disk4

 

++disk

 

0

 

0

 

0

 

0

 

0

 

0

 

1

 

1

 

0

 

0

 

1

 

0

 

0

 

1

 

0

 

0

 

1

 

0

 

0

 

1

 

1

 

1

 

1

 

0

 

1

 

++disk为奇偶校验盘,它的数据都是通过前面四个盘的数据进行异或计算得到的。

下面神奇的事情将要发生:

如果disk2盘突然坏了,怎么办?

回想前面的演示计算,我们完全可以通过其它盘和奇偶校验盘的数据对disk2的数据进行恢复。

如果disk3盘坏了呢?当然我们还是可以通过其它盘对其进行数据恢复。

甚至于当某个盘坏掉的情况下,不用更换,系统可以通过其它盘计算出该盘的数据,照样能使够稳定运行(当然我们一般不会这样做)。

进一步优化:

1、每次写数据时,为了奇偶校验,都需要读取其它所有盘 的数据,造成写的速度慢。改进办法:分段写磁盘,系统首先把要写入的数据进行段(大小同硬盘中的段)的划分,按照这些段中的数据,计算出奇偶校验数据,然后同时写入硬盘(此时的同时写入是真实的同步执行写入,因为每一个硬盘都是物理独立的)。

2、把奇偶校验数据都写到一个盘,会造成每次写数据和恢复数据,都会访问此硬盘,因为硬盘自身速度的限制,会造成瓶颈。改进方法:把这些奇偶校验数据分散写入各个硬盘。

3、当一个硬盘坏掉后,能够进行恢复,但如果再坏一个,会对系统造成难以恢复的灾难。改进办法:增加一个热备盘,正常情况下,不向此盘写入数据,当一个磁盘出问题后,系统立即把数据恢复到热备盘。这样就运行系统可以有两个盘同时损坏而不影响系统运行,也不会造成数据丢失。

Debian软RAID安装笔记 - 使用mdadm安装RAID1

常用RAID技术介绍以及示例演示(多图)

Linux实现最常用的磁盘阵列-- RAID5

RAID0+1和RAID5的性能测试结果

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/beba056635ea387eb8508485cd1defb6.html