奇偶校验如何在RAID-5阵列上工作?


31

我正在寻找一个漂亮的小RAID阵列用于专用备份。我想拥有大约2-4TB的可用空间,因为我有把所有东西数字化的讨厌的小习惯。因此,在驱动器发生故障的情况下,我需要大量存储空间和大量冗余。实际上,我还将/home使用Linux的“ Time Machine”克隆之一来备份2-3台计算机的文件夹。该阵列将通过SSH在我的本地网络上访问。

我很难理解RAID-5如何实现奇偶校验以及实际需要多少个驱动器。有人会假设它需要5个驱动器,但是我可能错了。我见过的大多数图表都只是让我感到困惑。看来这就是RAID-5的工作方式,请更正我,因为我确定我没有正确掌握它:

/---STORAGE---\    /---PARITY----\
|   DRIVE_1   |    |   DRIVE_4   |
|   DRIVE_2   |----|     ...     |
|   DRIVE_3   |    |             |
\-------------/    \-------------/

似乎驱动器1-3出现并作为单个大型驱动器(capacity * number_of_drives)工作,而奇偶校验驱动器备份了这些驱动器。在我看来,奇怪的是,我通常在图中只看到1个或2个奇偶校验驱动器的3个以上的存储驱动器。假设我们在RAID-5阵列中运行4个1TB驱动器,3个正在运行的存储和1个正在运行的奇偶校验,那么我们有3TB的实际存储,但只有1TB的奇偶校验!

我知道我在这里缺少什么,有人可以帮我吗?另外,对于我的用例,RAID-5或RAID-6会更好吗?容错是最高优先级,我在这一点上,因为它要运行在家庭使用网络而已,速度不是巨大的关键。

Answers:


30

它只是对每个驱动器中的每个对应位进行异或运算-如果丢失任何驱动器,则可以重新构建丢失的数据。

对于背景:

A B (A XOR B)
0 0    0
1 1    0
0 1    1
1 0    1

假设D是其他列的XOR,那么只要您仅丢失一个驱动器,就可以弄清楚丢失了什么。

A B C D
1 0 0 1
0 1 0 1
1 1 0 0

有时,条带位将分布在驱动器上,但是概念是相同的。

因此,对于RAID-5,无论有多少个驱动器,您只需要1个驱动器就可以实现等于或大于要RAID阵列中最小驱动器的奇偶校验。

个人使用的RAID-5可能是最好的,因为计算复杂度远低于RAID-6。

RAID-6使用Galois字段计算奇偶校验更加复杂。这会加重平价计算的负担。但是,您可能会丢失更多驱动器,但是如果在遇到单个故障时立即重建阵列,则可以继续使用RAID-5。


极好的答案。我当时考虑的范围太大了,实际上是基于完整的硬盘,而不是位级的。那么RAID-5是否将专用驱动器用于奇偶校验,还是将所有驱动器用于奇偶校验?我对此感到困惑。
Naftuli Kay 2011年

2
我相信现代方法是在所有驱动器上对角地分布奇偶校验。由于可以将多个IO请求并行发送到不同的驱动器,因此具有加快奇偶校验位读取时间的作用,但是请不要在此引用我的信息。
马特

我是否可以使用数学公式确定给定x驱动器的容量和y每个驱动器上的可用GB?
Naftuli Kay 2011年

2
是的,它是(最小的驱动器大小)*(阵列中的驱动器数量-1)
Matt

1
如果奇偶校验只是其他两个磁盘的XOR,您如何知道两个磁盘中的哪个已损坏?任一磁盘上的翻转都不会导致奇偶校验位发生翻转吗?
杰伊·沙利文

8

我认为这是一个更好的图,显示奇偶校验在RAID4和RAID5中的工作方式

RAID4

Disk1  Disk2  Disk3  Disk4
----------------------------
data1  data1  data1  parity1
data2  data2  data2  parity2
data3  data3  data3  parity3
data4  data4  data4  parity4

RAID5

Disk1   Disk2   Disk3   Disk4
----------------------------
parity1 data1   data1   data1   
data2   parity2 data2   data2  
data3   data3   parity3 data3
data4   data4   data4   parity4


4

我建议阅读有关Raid 5和Raid 6的维基百科文章

http://en.wikipedia.org/wiki/Standard_RAID_levels#RAID_5_parity_handling

RAID 5在每个条带中写入一个奇偶校验块,因此对于4磁盘阵列的条带A,它将奇偶校验写在第4个磁盘上,数据分别在磁盘1、2和3上

对于条带B,奇偶校验块位于磁盘3上,数据位于磁盘1,2和4 ..等上。

如果说磁盘4出现故障,则可以像您知道磁盘1和2上的数据并在磁盘3上进行奇偶校验一样为Strip B恢复数据。

如果条带B的奇偶校验为“ 2”,并且磁盘1的数据为“ 1”,而磁盘2的数据为“ 0”,则磁盘4的数据必须等于“ 1”,因此该磁盘将写入数据=“ 1”

整个磁盘可以用这种方式重新创建,RAID 6通过每个条带具有2个方块来扩展此磁盘。

关于Raid 5的空间,您只能分配一个磁盘用于奇偶校验的空间,因为它仅在每个条带的奇偶校验块上写入数据,而对于Raid 6,您将分配2个磁盘,但也可以分配两个磁盘,而不是您可以分配一个磁盘。突袭5;)

维基百科文章对此进行了更好的解释!


3

RAID 5使用一个驱动器进行奇偶校验,而不管阵列中有多少个数据驱动器。这意味着,在可用空间方面,添加的驱动器越多,效率越高。

奇偶校验是通过对每个驱动器中相同块执行XOR操作来实现的;调整奇偶校验驱动器的内容,以使所有驱动器XOR都为零。这确实意味着RAID 5 阵列中所有驱动器最小容量的限制

RAID 6相似,除了可以容忍两个同时发生的驱动器故障。这很有用,因为在单个驱动器发生故障后将阵列“ 重新镀银 ” 的过程可能压力很大,足以导致第二个驱动器发生故障。


因此,这实际上意味着我可以拥有4个2TB驱动器和6TB有效的冗余存储?
Naftuli Kay 2011年

@TK Kocheran使用RAID 5,是的。请注意,由于文件系统的原因,有效存储会少一些。例如,我在RAID-Z1(ZFS的RAID 5版本)中具有4个2TB驱动器的NAS的可用空间为5.18TB。
sblair 2011年

是的,当然,:)总是这样。下一个问题是要使用什么文件系统...
Naftuli Kay 2011年

0

如果您的目标是容错,RAID-6将提供足够的冗余来松开两个驱动器。通常,RAID-5仅容忍单个驱动器故障。


RAID-6的驱动器与奇偶校验(总存储)的比率是多少?drive_size * (drive_count - 2)
Naftuli Kay 2011年

1
除了第二个驱动器在更换第一个驱动器之前的容错能力之外,还有另一种情况很有利,我遇到了不止一次的情况:RAID阵列中的驱动器出现故障,因此订购了新驱动器。一些对RAID阵列一无所知的随机家伙拿着新的驱动器进入服务器机房,弄乱了编号,并从阵列中弹出错误的驱动器以进行更换。在RAID5下,您的阵列就固定在那里。RAID6意味着您仍然可以恢复。
camster342
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.