본문 바로가기

자료구조

[컴퓨터구조] RAID5 디스크 복구, 패리티 계산 방법

반응형

※ E block 의 패리티비트의 계산 오류가 있어 2023.12.06에 내용이 수정되었습니다. 지적해주신 지환킴상기님 감사합니다.

 

출처: https://leeeeye321.tistory.com/102

 

위 그림은 리눅스에서 가장 흔하게 볼 수 있는 RAID5(레이드5)로 구성된 이미지입니다.

이 포스트에서는 그렇게 크게 중요한 것은 아닌데, 서론만 조금 설명해보면

 

레이드 5 구성은 보통 최소 3개 이상의 디스크로 구성된 것을 말합니다.

보통은 디스크 5개로 구성해서, 각 디스크마다 패리티를 한개씩 분산되어 저장합니다.

 

이 중에서 디스크가 하나가 사망선고를 당해서 데이터가 사라져도, 이 포스팅 주제인 패리티 XOR연산을 통해 데이터를 얼마든지 복구가 가능합니다.

 

대신 얼마든지 복구가 가능한 것은 조건이 한가지가 따라옵니다.

바로 "디스크가 5개라고 가정했을 때, 최소 3개 이상의 디스크는 살아있어야한다." 입니다.

 

그럼 패리티 연산을 어떻게해서 데이터가 복구되는지 한번 초등학생도 이해하기 쉽게! 설명 해보겠습니다.

 

⊕ 기호는 XOR 을 나타냅니다.

  DISK 1 DISK 2 DISK 3 DISK 4 DISK 5
A block 0 0 0 0 Parity
0 ⊕ 0 ⊕ 0 ⊕ 0
= 0
B block 0 1 0 Parity
0 ⊕ 1 ⊕ 0 ⊕ 1
= 0
1
C block 0 1 Parity
0 ⊕ 1 ⊕ 1 ⊕ 0
= 0
1 0
D block 1 Parity
1 ⊕ 0 ⊕ 0 ⊕ 1
= 0
0 0 1
E block Parity
1 ⊕ 0 ⊕ 1 ⊕ 0
= 0
1 0 1 0

표1 맨 처음 RAID5가 구성되어서 정상적으로 동작중일 때 상태

 

표만 딱 보면, 전공자가 아닌 이상 이해하는데 시간이 오래걸리거나

혹은

이게 무슨 소리야? 블로그들 내용이 다 똑같네

뒤로가기 클릭클릭...하시겠죠?

 

그럼 실제로 XOR 연산을 통해 디스크를 복구하는 방법을 차근차근 설명해보겠습니다.

 

⊕ 기호는 XOR 을 나타냅니다.

  DISK 1 DISK 2 DISK 3 DISK 4 DISK 5
A block 0 0 사망 0 Parity
0 ⊕ 0 ⊕ 0 ⊕ 0
= 0
B block 0 1 사망 Parity
0 ⊕ 1 ⊕ 0 ⊕ 1
= 0
1
C block 0 1 Parity
사망
1 0
D block 1 Parity
1 ⊕ 0 ⊕ 0 ⊕ 1
= 0
사망 0 1
E block Parity
1 ⊕ 0 ⊕ 1 ⊕ 0
= 0
1 사망 1 0

표2 DISK 3이 깨졌을 때 (사망)

 

표1에서 패리티 값을 구하기 위해 XOR을 연산했던 것처럼,

각 디스크의 같은 블록끼리 첫번째 디스크부터 마지막 디스크까지 순서대로 XOR 연산을 수행합니다.

 

이게 RAID5 의 패리티 연산을 통한 데이터 복구 방법입니다.

정말 쉽죠 ?

 

마지막으로 한번 DISK 3의 데이터를 복구하는 연산을 실제로 보고 포스팅 마치도록 하겠습니다.

 

A block = 0 XOR 0 XOR 0 XOR 0 = 0

B block = 0 XOR 1 XOR 0 XOR 1 = 0

C block = 0 XOR 1 XOR 1 XOR 0 = 0

D block = 1 XOR 0 XOR 0 XOR 1 = 0

E block = 0 XOR 1 XOR 1 XOR 0 = 0

 

이렇게 DISK 3 의 데이터 복구를 완료하였습니다.

반응형

'자료구조' 카테고리의 다른 글

[자료구조] 버블 정렬  (0) 2018.09.23
[자료구조] 삽입 정렬  (0) 2018.09.23
[자료구조] 선택 정렬  (0) 2018.09.23