Parity는 라틴어 paritas로 부터 파생된 단어로 동등한(equal, equivalent)의 뜻을 가진다. 컴퓨터 공학에서는 데이터를 복원할 수 있는 정보를 디스크의 다른 영역에 저장해서, 나중에 문제가 생겼을 때 저장된 데이터를 이용해서 원래 데이터를 복원하는 기술을 의미한다. 복원할 수 있는 이 정보를 담은 정보조각을 parity bit라고 한다.
Pariti bit를 P라고 했을 때, P는 다음과 같이 만들어진다. Dn은 데이터 블록이고 xor는 xor 연산을 의미한다.
P=D1 xor D2 xor D3 ... xor Dn
Value A
Value B
Xor Result
0
0
0
1
0
1
0
1
1
1
1
0
Xor 연산을 이용하면, 하나의 값을 알고 있을 때 다른 하나의 값을 정확히 알 수 있다. Value B의 모든 데이터가 유실됐다고 가정해 보자. Value A가 0 이고 Xor result 가 0이면 Value B는 반드시 0이어야 한다. Value A가 1이고, Xor result가 1이라면 Value B는 반드시 0이어야 한다. 이런 식으로 xor 연산을 하는 것으로 데이터를 복원할 수 있다.
RAID와 parity
Rarity는 몇개 RAID 레벨에서 사용한다. 만약 디스크 어레이에 문제가 생기면, 다른 디스크에 남아있는 parity 값을 이용해서 문제가 생긴 데이터를 복원한다.
예를들어 RAID 5 어레이에 다음과 같은 데이터가 있다고 가정해보자.
Drive 1: 01101101
Drive 2: 11010100
이제 두개의 Drive에 있는 데이터에 대해서 XOR 연산을 수행해서 parity 값을 만든다.
01101101
XOR 11010100
_____________
10111001
parity 값 10111001은 Drive 3에 저장한다.
만약 Drive 2에 문제가 생겨서 데이터가 유실됐다면, Drive 3에 있는 parity 값과 Drive 1의 값을 XOR 연산하는 것으로 Drive 2의 값을 복원할 수 있다.
Drive 1: 01101101
Drive 3: 10111001
두개의 데이터를 XOR 연산을 하면
10111001
XOR 01101101
_____________
11010100
Drive 2의 값인 11010100이 복원된다.
여기에서 우리는 RAID5를 구성하기 위해서는 최소 3개의 disk가 필요함을 알 수 있다.
Hot spare
2개의 드라이브와 1개의 parity 드라이브로 구성된 RAID5 어레이가 있다고 가정해 보자. 이 경우 하나의 디스크가 고장나면, parity 드라이브를 이용해서 복원할 수 있다. 그러나 복원을 하려면 여분의 디스크가 있어야 한다.
이 여분의 드라이브를 spare 드라이브라고 한다. spare 드라이브로의 교체는 자동으로 이루어지는데, 이러한 기능을 hot spare라고 한다. 자동차의 스패어 타이어와 같은 개념이다.
아래 그림은 RAID 5 디스크 어레이에서 hot spare의 작동원리를 보여준다.
p는 parity 값이 들어있는 디스크를 의미한다.
여분의 Spare disk를 하나 가지고 있다.
C2 디스크에 문제가 생겼다.
C1 XOR Cp로 C2의 데이터를 Spare disk에 복원한다.
Spare disk가 C2를 대체한다.
Mirror vs Parity
Mirror역시 디스크에 문제가 생겼을 때 데이터를 복원하기 위해서 사용한다. RAID 1이 데이터를 복원하기 위해서 사용하는 방법이다. Parity와 용도는 비슷하지만 몇 가지 차이가 있다.
Mirror는 디스크를 그대로 복제하기 때문에, x N만큼의 추가적인 디스크가 필요하다. 즉 복사본을 하나를 유지하기 원한다면 x 2만큼의 디스크가 필요하다. 1T의 정보를 저장하기 위해서 2T만큼의 디스크가 필요한 셈. 디스크 낭비가 심하다. Parity는 공간을 더 효과적으로 사용한다.
Mirror는 데이터 복원을 위한 연산이 필요하지 않다. 복제본을 그대로 사용하면 된다. 반면 Parity는 데이터복원을 위해서 연산을 해야 한다. 이 시간동안 데이터 입출력이 원할하지 않을 수 있다.
Contents
Parity
RAID와 parity
Hot spare
Mirror vs Parity
관련 글
Recent Posts
Archive Posts
Tags