KING 发表于 2008-7-2 20:59

花5分钟你就知道RAID5是怎么保护我们数据的

  RAID5 的算法其实就是数学里面的XOR的算法,是这样表示的⊕,
  1 ⊕ 1 = 0
  1 ⊕ 0 = 1
  0 ⊕ 1 = 1
  0 ⊕ 0 = 0
  多个数字XOR的时候,有两个特点:
  A)结果与运算顺序无关。也就是 (a XOR b) XOR c = a XOR (b XOR c)。
  B)各个参与运算的数字与结果循环对称。如果 a XOR b XOR c = d,那么a = b XOR c XOR d;b = a XOR c XOR d;c = a XOR b XOR d。
  磁盘阵列中的RAID5之所以能够容错,就是利用了XOR运算的这些特点。上面例子中的a、b、c、d就可以看作是四颗磁盘上的数据,其中三个是应用数据,剩下一个是校验。碰到故障的时候,甭管哪个找不到了,都可以用剩下的三个数字XOR一下算出来。
  在实际应用中,阵列控制器一般要先把磁盘分成很多条带(英文叫Stripe),然后再对每组条带做XOR。
  所以做RAID5 至少要有三个硬盘,而实际存储空间的大小 = 最小硬盘的存储大小 * (总的硬盘数 - 1 ),它容许当中任意一个硬盘出错, 这样可以根据校验位算出另外一个硬盘的数据。

  这个RAID5的解释来自网络,是我见过最简洁又明了的RAID5表述。

KING 发表于 2008-7-2 21:05

一个稍微技术点的讲解


XOR应该是'异或'算法的简写,符号通常用'^':
'异或'就是两个数比较,'真' 异或 '假 结果'真','假' 异或 '真' 结构'真','真' 异或 '真' 为'假' ,'假' 异或 '假' 为假。
在计算机原理实验中,1^0=1,0^1=1,1^1=0,0^0=0,扩展一下:1^1^1=1(分解1^1=0,0^1=1).

假设某RAID-5有3磁盘,A,B,C,如果组件成RAID-5后,数据分布是如下的:
l A盘数据:B+C+校验数据A
l B盘数据:C+A+校验数据B
l C盘数据:A+B+校验数据C

系统写数据会同时写到3块盘是,因此往RAID-5盘组写数据时候,发现所有磁盘的灯都是平均闪亮的.
假设B盘损坏,我们加了一块空的盘到RAID-5组后上来,看看情况:
l A盘数据:B+C+校验数据A
l ‘B’空盘
l C盘数据:A+B+校验数据C

Raid-5系统的异或算法:
B与分别与A,C盘校验数据:
[*]校验数据A与C盘A数据校验得到A数据写到B[*]校验数据C与A盘C数据校验得到C数据写到B,[*]B数据直接写到B成为校验数据B
这样进行异或校验计算分别取回A,B,C数据,而B数据转为校验数据B,结果与原来一致了.如果坏了2块盘,我们可以看看:
l A盘数据:B+C+校验数据A
l ‘B’空盘
l ‘C’空盘

可以发现, 没有了校验对象,校验数据A都无法写出来了, A数据丢失了.直接影响了完整性.

通过该算法可以发现:
1.RAID 5必须有3块以上磁盘组成;
2.RAID 5中的其中一块磁盘出现硬件故障,不会影响整体数据的完整性,但是注意,一块磁盘故障后,需要马上更换好的磁盘上去,系统会自动同步数据到新的磁盘中.
3.磁盘组总容量是:[(3-1)%3 ] x (最小的磁盘容量x3),如果有n块mGB的磁盘,总容量为: [(n-1)%n ] x (n*mGB),结果发现,磁盘组容量为:(n-1) x mG

人坏坏 发表于 2008-7-2 21:44

RAID也很麻烦的,虽然我的主板支持但却从未用过。最主要的原因是没有软驱装不了驱动:run2

KING 发表于 2008-7-2 22:06

回复 3# 人坏坏 的帖子

:sweat 不是必须要用软驱装吧?

寂夜清风 发表于 2008-7-2 22:11

不一定要用软驱的。。硬盘或U盘都可以的。。

用现成的硬盘做好转到RAID也是可以的
页: [1]
查看完整版本: 花5分钟你就知道RAID5是怎么保护我们数据的