Là bit chẵn lẻ thứ 2 trong RAID 6 là một phép tính đơn giản?


7

Tôi đang cố gắng hiểu làm thế nào bit chẵn lẻ thứ 2 hoặc byte được đặt trong RAID 6. Tôi đang đọc một bài báo của H. Peter Anvin , và nó đi vào đại số trường Galois, điều này hơi mới đối với tôi. Dù sao, một đại diện từ HP đã cố gắng giải thích RAID 6 cho tôi và cô ấy nghĩ rằng đó chỉ là hai hoạt động XOR, một cho bit chẵn lẻ thứ nhất và một cho thứ 2. Điều này không có ý nghĩa với tôi, nhưng vì tôi vẫn đang nghiên cứu bài báo nên tôi không biết liệu nó có giảm xuống một thứ đơn giản cho RAID 6 hay không so với RAID n. Đối với tôi có vẻ như bit chẵn lẻ thứ 2 phức tạp hơn một chút so với bit chẵn lẻ thứ 1 dựa trên XOR. Điều đó có đúng không?

Câu trả lời:


12

Trường hợp chung thực sự là một chút phức tạp.

Tuy nhiên, trong trường hợp 4 đĩa bạn có thể đơn giản hóa nó rất nhiều; bạn không thực sự cần phải biết bất kỳ toán học ưa thích. Bạn chỉ cần biết cách lưu trữ 4 bit một cách dự phòng, và sau đó bạn đã biết tất cả mọi thứ; chỉ cần lặp lại sơ đồ tương tự cho mỗi nhóm 4 bit mà bạn cần lưu trữ.

Chúng ta có thể biểu diễn sơ đồ dưới dạng 4 x 4 bảng. 2 bit đầu tiên của dữ liệu của chúng tôi xác định hàng và 2 bit cuối cùng của dữ liệu của chúng tôi xác định cột.

Đĩa 1: Chỉ cần lưu trữ 2 bit đầu tiên. Đó là:

00 00 00 00
01 01 01 01
10 10 10 10
11 11 11 11

Đĩa 2: Chỉ cần lưu trữ 2 bit cuối cùng. Đó là:

00 01 10 11
00 01 10 11
00 01 10 11
00 01 10 11

Càng xa càng tốt. Cho đĩa 1 + đĩa 2, chúng ta có thể khôi phục dữ liệu gốc của mình: đĩa 1 cho chúng ta biết hàng (2 bit đầu tiên của dữ liệu gốc) và đĩa 2 cho chúng ta biết cột (2 bit cuối của dữ liệu gốc).

Đĩa 3: Đây là những gì chúng tôi làm trên RAID5, chỉ XOR các bit:

00 01 10 11
01 00 11 10
10 11 00 01
11 10 01 00

Một lần nữa, mọi thứ vẫn ổn. Bạn có thể khôi phục dữ liệu gốc bằng đĩa 1 + đĩa 3 hoặc đĩa 2 + đĩa 3. Một quan sát chính là bảng tra cứu cho đĩa 3 tạo thành một hình vuông Latin : tất cả các yếu tố của mỗi hàng là khác biệt và tất cả các yếu tố của mỗi cột là khác biệt Ví dụ: nếu bạn biết dữ liệu trên đĩa 1, bạn biết đúng hàng và sau đó bạn có thể sử dụng dữ liệu trên đĩa 3 để khôi phục cột. Ngược lại, nếu bạn biết dữ liệu trên đĩa 2, bạn biết cột bên phải và sau đó bạn có thể sử dụng dữ liệu trên đĩa 3 để khôi phục hàng.

Đĩa 4: Ở đây chúng ta có thể sử dụng bảng tra cứu sau:

00 01 10 11
10 11 00 01
11 10 01 00
01 00 11 10

Đừng lo lắng nó được xây dựng như thế nào; chúng tôi không thực sự quan tâm về điều đó. Các thuộc tính quan trọng là:

  • Các bảng tra cứu của cả đĩa 3 và đĩa 4 là các ô vuông Latin. Do đó, nếu bạn biết 1 + 3 hoặc 1 + 4 hoặc 2 + 3 hoặc 2 + 4, bạn có thể khôi phục cả hàng và cột (nghĩa là dữ liệu gốc).

  • Các bảng tra cứu của đĩa 3 và đĩa 4 tạo thành các ô vuông Latin trực giao , cho phép khôi phục dữ liệu nếu chúng ta chỉ có các đĩa 3 + 4.

Hãy giải thích về điểm thứ hai. Bằng cách ghép các bảng tra cứu của đĩa 3 và đĩa 4, chúng ta có được ma trận này:

0000 0101 1010 1111
0110 0011 1100 1001
1011 1110 0001 0100
1101 1000 0111 0010

Bây giờ lưu ý rằng mỗi chuỗi 4 bit xảy ra trong bảng này chính xác một lần. Đó là, nếu chúng ta biết những gì được lưu trữ trên các đĩa 3 + 4, chúng ta biết chúng ta đang ở đâu trên bảng này. Chúng tôi biết cả hàng và cột và do đó chúng tôi có thể khôi phục dữ liệu gốc.


Nếu bạn khăng khăng muốn xem kết nối với các trường Galois, hãy xem xét trường F=GF(22). Dán nhãn các thành phần của trường vớiF={0,1,x,x+1}; những chuỗi này tương ứng với các chuỗi 2 bit (000,101,x10,x+111). Bây giờ bất kỳ chuỗi 4 bit nào cũng có thể được mã hóa thành một cặp(a,b), Ở đâu a,bF.

Một đôi (a,b) hiện được lưu trữ như sau:

  • Đĩa 1 cửa hàng a.
  • Đĩa 2 cửa hàng b.
  • Đĩa 3 cửa hàng a+b.
  • Đĩa 4 cửa hàng xa+b.

Bây giờ được đưa ra, ví dụ, chỉ p=a+bq=xa+b, bạn có thể giải quyết ab. Sử dụng quy tắc20, bạn có thể tìm

  • p+q=(xa+b)+(a+b)=(x+1)a+2b(x+1)a,
  • p+xq=(xa+b)+x(a+b)=2xa+(x+1)b(x+1)b.

Sau đó chia cho x+1 để có được ab, v.v ... Nhưng cuối cùng, cách tiếp cận này cung cấp cho bạn chính xác các bảng tra cứu giống như những gì đã trình bày ở trên.


1
Và đây chỉ là một trường hợp đặc biệt của phương pháp chung về mã Reed-Solomon như được ghi chú trong tài liệu được trích dẫn bởi OP và các chi tiết như được mô tả trong câu trả lời của tôi: P=D0D1Q=D0D1α không khác với a+bxa+b. Nó chỉ là vớin=2có thể sử dụng một lĩnh vực nhỏ hơn. Mặt khác, bạn cần 2 đĩa dự phòng cho 2 đĩa dữ liệu trong khi RAID-n cho phép nhiều hơn 2 đĩa dữ liệu.
Dilip Sarwate

7

Tính toán cho Qchắc chắn là khó khăn hơn so với tính toán XOR cần thiết choP mặc dù theo một nghĩa nào đó là cùng một loại tính toán: đánh giá đa thức.

Lột bỏ các kỹ thuật tính toán chi tiết được mô tả trong liên kết, ý tưởng là liên quan đến n byte / ổ dữ liệu D0, D1,,Dn1 là hệ số của một đa thức D(x)=D0+D1x++Dn1xn1. Sau đó,

P=D(1)=D0D1Dn1Q=D(α)=D0D1αDn1αn1=(((Dn1αDn2)αD1α)D0

Ở đâu α là một yếu tố (ký hiệu là {02}=(00000010) trong bài viết được trích dẫn bởi OP) của trường Galois(28) (cũng được ký hiệu F28) ai 256 các yếu tố là 256 8-bit byte và dòng thứ hai của phương trình cho Qcó thể được công nhận là quy tắc của Horner. Tất nhiên, tính toán choP=D(1) cũng có thể được coi là sử dụng quy tắc của Horner ngoại trừ việc chúng ta bỏ qua các phép nhân bằng cách 1 với tư cách là NOP và trốn tránh tất cả các dấu ngoặc đơn trong quy tắc của Horner vì chúng không cần thiết.

Sau khi các ổ đĩa đã được viết,

  • Nếu một hoặc cả hai PQ thất bại, không có vấn đề gì; PQ có thể được tính toán lại và lưu trữ trên các ổ đĩa thay thế.

  • Nếu lỗi duy nhất là một ổ dữ liệu, hãy nói i-thế ổ, sau đó nội dung của nó có thể được tính toán lại kể từ khi

    Di=D0D1Di1Di+1Dn1P.
  • Nếu một ổ dữ liệu và Q thất bại, ổ dữ liệu có thể được tính toán lại như mô tả ở trên, và sau đó Q có thể được tính toán lại.

  • Phải làm gì trong các trường hợp khác: một ổ dữ liệu và Pthất bại hoặc hai ổ dữ liệu bị lỗi phức tạp hơn để mô tả, nhưng các phương thức có thể được hiểu dễ dàng hơn bằng cách sử dụng phối cảnh đa thức được mô tả ở đây. Ví dụ: nếui-th và j-Các ổ đĩa đã thất bại, việc xây dựng lại có hiệu quả là giải pháp của các phương trình đồng thời:

    DiDj=Pk:ki,jDkαiDiαjDj=Qk:ki,jDkαk.
    trong đó các phía bên tay phải có thể được tính toán từ nội dung của các ổ đĩa không bị lỗi.

Điều này trông giống như kiểu tính toán tương tự như được thực hiện trong phần sửa lỗi chuyển tiếp của Reed-Solomon.
edA-qa mort-ora-y

2
Đúng vậy, phương pháp này sử dụng mã Reed-Solomon rút ngắn (như được đề cập trong liên kết trong câu hỏi của OP) nhưng việc phục hồi dữ liệu không gọi ra phương pháp thuật toán giải mã RS đầy đủ cho phép sửa nhiều lỗi / lỗi đĩa nhưng nhiều phương pháp đơn giản hơn dựa trên việc có nhiều nhất hai lỗi đĩa và chúng tôi biết đĩa nào bị lỗi. Nói cách khác, nếu có lỗi đọc không bị phát hiện trên hai đĩa, phương thức sẽ không hoạt động (phương pháp giải mã RS chung): lỗi đọc được phát hiện (còn gọi là lỗi đĩa) là OK.
Dilip Sarwate

2

Các ba đĩa RAID-6 là tầm thường: Chỉ cần lưu trữ các thông tin tương tự trên đĩa 1, đĩa 2 và đĩa 3. Bất kỳ hai đĩa có thể thất bại và bạn vẫn có thể phục hồi dữ liệu. Vì vậy, một cuộc đột kích ba đĩa-6 về cơ bản chỉ là một cuộc đột kích ba đĩa-1.

Trong bốn trường hợp đĩa , có hai "đĩa" dữ liệu (hãy gọi chúng làAB) và hai "đĩa" chẵn lẻ (hãy gọi chúng là PQ). Hơn nữa, chúng ta phải hoạt động trên hai bit từ mỗi đĩa tại một thời điểm, vì vậy mục dữ liệu tối thiểu (có thế hệ chẵn lẻ được hiển thị ở đây) là bốn bit: Hai bit trên đĩaA và hai bit trên đĩa B. Điều này sẽ tạo ra hai bit chẵn lẻP và hai bit tương đương Q. Nếu chúng ta có nhiều bit hơn, chúng ta chỉ cần lặp lại sơ đồ này khi cần thiết.

Chẵn lẻ đầu tiên P được tính toán bình thường, sử dụng XOR tiêu chuẩn () kế hoạch:

P=AB

Đối với chẵn lẻ thứ hai Q, chúng ta phải xử lý một trong các mục dữ liệu trước khi thực hiện XOR, để nó trở nên khác với P:

Q=AB

Mangled B được tính từ B như sau: Bit đầu tiên của B là XOR của cả hai bit từ Bvà bit thứ hai của B là bản sao của bit đầu tiên của B:

B=(B1,B2)=(B1B2,B1)

Công thức trên dẫn đến bảng sau để tính B từ B:

0000
0110
1011
1101

Lưu ý rằng giá trị 00 vẫn không thay đổi, khi được đọc sai, trong khi các giá trị khác trải qua chu kỳ ba: 01101101.

Unmangling khá đơn giản: Bởi vì thuộc tính tuần hoàn, chỉ cần lặp lại việc xáo trộn hai lần để thực hiện một thao tác unmangle. Hoặc đảo ngược công thức trên choB, dẫn đến:

B=(B2,B1B2)

Vì vậy, unmangling có phần đối xứng với mangling.

Bây giờ đến phép màu, điều này sau đó sẽ cho phép chúng tôi phục hồi trong kịch bản, rằng hai đĩa dữ liệu bị lỗi và chỉ có các đĩa chẵn lẻ tồn tại: Điều gì xảy ra, nếu BBđược XOR? Bây giờ, hãy xem:

BB=(B1,B2)(B1B2,B1)=(B1B1B2,B1B2)=(B2,B1B2)

Kết quả tốt đẹp: XORing BB giống hệt như thực hiện một bước không thay đổi trên B. Như vậyB có thể được phục hồi từ BB bằng cách áp dụng một mangle cho nó: B=(BB). Và như(BB) là kết quả của XORing hai giá trị chẵn lẻ PQ, phục hồi từ các đĩa chẵn lẻ trở nên có thể.

Bây giờ, chúng ta có mọi thứ cùng nhau: Để lưu trữ AB trên RAID-6, trước tiên chúng tôi tính toán dữ liệu được xử lý Bvà sau đó là tương đương tiêu chuẩn P từ AB và chẵn lẻ Q từ AB:

B=(B1B2,B1)
P=AB
Q=AB

Phục hồi sau thất bại của hai đĩa như sau:

  • Nếu AB tồn tại, chỉ cần tính toán lại PQ.
  • Nếu AP sống sót, hồi phục B=PA, sau đó tính toán lại Q.
  • Nếu BP sống sót, hồi phục A=PB, sau đó tính toán lại Q.
  • Nếu AQ sống sót, hồi phục B=QA, sau đó phục hồi B từ B thông qua một hoạt động unmangle (hoặc một mangle kép), sau đó tính toán lại P.
  • Nếu BQ sống sót, tính toán B từ B, sau đó phục hồi A=QB, sau đó tính toán lại P.
  • Nếu PQ tồn tại, sử dụng công thức giải thích ở trên B=(PQ), sau đó phục hồi A=PB.

Trong trường hợp năm đĩa , có ba đĩa dữ liệuA, BC và một lần nữa hai đĩa chẵn lẻ PQ. Sự khác biệt đáng chú ý nhất là, mangle được thực hiện hai lần vàoC, khi tính toán Q:

P=ABC
Q=ABC

Phục hồi trong trường hợp năm đĩa tuân theo các nguyên tắc tương tự như đối với trường hợp bốn đĩa. Trong những trường hợp đó, hai đĩa dữ liệu vàP hoặc là Qsống sót, người ta phải lấy ra hai giá trị từ tính chẵn lẻ thay vì chỉ một và tuân theo hàm unmangle chính xác trong trường hợpQ. Ví dụ,C được phục hồi từ A, BQ như sau: C=(QAB).

Trường hợp khó khăn nhất là, nếu đĩa A, PQtồn tại Sau đóA là lần đầu tiên XOR ra khỏi PQ, và sau đó (PA) được đọc trước khi XORing với (QA). Bản đồ đóB và rời khỏi đồng bằng C:

(PA)(QA)=(ABCA)(ABCA)=
=(BC)(BC)=(BC)(BC)=
=BCBC=BBCC=(CC)=
=(C)=C=C

Đối với sáu đĩa trở lên , nguyên tắc vẫn giữ nguyên, nhưng thao tác mangle cần được thay thế bằng một đĩa có chu kỳ dài hơn. Điều này cũng đòi hỏi sử dụng nhiều bit hơn. Với bốn bit, một op mangle có thể là:

M=(M1M4,M1,M2,M3)

0000 lại được ánh xạ 0000, trong khi tất cả các giá trị khác trải qua chu kỳ 15 giai đoạn: 0001100011001110111101111011010110101101011000111001010000100001

Với chu kỳ 15 giai đoạn của nó, op mangle này có thể được sử dụng cho tối đa 15 đĩa dữ liệu và hai đĩa chẵn lẻ. ChoP chẵn lẻ, tất cả các giá trị được XOR cùng nhau, và cho Q, mốc dữ liệu của đĩa thứ nhất không được xử lý, dữ liệu của đĩa thứ hai được đọc một lần, dữ liệu của đĩa thứ ba được đọc hai lần, v.v.


1

Nó trông khá phức tạp với tôi .

Do đó, trong công thức trên, phép tính P chỉ là XOR của mỗi sọc. Điều này là do việc thêm vào bất kỳ trường hữu hạn hai đặc tính nào làm giảm hoạt động XOR. Tính toán của Q là XOR của một phiên bản thay đổi của mỗi sọc.

(P là bit chẵn lẻ đầu tiên và Q là bit thứ hai.)

Vì vậy, có vẻ như lời giải thích bạn nhận được là một mô tả cấp cao hợp lệ của phép tính, mà không đi vào lý thuyết toán học và các chi tiết mà cả bạn hoặc cô ấy (hoặc tôi, hoặc hầu hết mọi người khác) thực sự hiểu.


Không chắc chắn làm thế nào (hoặc thậm chí nếu tôi nên) đưa công thức đó từ Wikipedia vào câu trả lời của tôi ...: /

Bây giờ câu hỏi đã được chuyển sang Khoa học máy tính , bạn có thể sử dụng định dạng LaTeX .
Gilles 'SO- ngừng trở nên xấu xa'
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.