본문 바로가기
Old Posts/Linux

[Linux] RAID 0, RAID 1, RAID 10, RAID 01 차이점

by A6K 2021. 8. 6.

데이터를 저장하는 디스크는 언제든지 고장이 날 수 있다. 따라서 2차 저장장치인 디스크에 데이터를 저장했다고해서 영구적으로 데이터의 영속성이 보장되는 것은 아니다. 디스크에 저장된 데이터의 가용성을 확보하기 위해서 '레이드(RAID, Redundant Array of Independent Disks 혹은 Redundant Array of Inexpensive Disks)' 구성을 사용하는 경우가 많다.

레이드는 그 구성 방법에 따라 RAID 0, RAID 1, RAID10, RAID 01 설정을 많이 사용한다. 레이드 뒤쪽에 오는 숫자가 직관적이지 않아서 어떻게 구성하는 방법인지 헷갈릴 때가 많다. 0과 1은 '스트라이핑(Striping)'과 '미러링(Mirroring)'을 의미하며 01을 SM으로 기억하면 편하다.

레이드의 구성 개념을 설명하기 위해서 6개의 블럭으로 구성된 논리파일 하나를 생각해보자.

이제 이 파일을 여러가지 레이드 구성에 맞게 저장해보자.

RAID 0 - Striping(스트라이핑)

우선 'RAID 0' 구성은 '스트라이핑(Strping)'이라고 부르는 구성이다.

스트라이핑 구성의 경우 블럭의 가용성은 확보되지 않는다. 다만 여러대의 디스크에 데이터 블럭들을 분산해서 저장해 읽기 및 쓰기 성능을 향상시키는 방법이다.

이렇게 레이드 구성을 하게 되면 디스크 개수 만큼 처리량을 늘릴 수 있다. 3개의 디스크에 6개 블럭을 저장한 경우 1번부터 3번블럭을 읽는 연산을 할 때, 3개의 디스크에서 동시에 데이터를 읽을 수 있기 때문에 처리량이 최대 3배로 늘어나는 효과를 얻을 수 있다.

다만 스트라이핑 구성만하는 RAID 0 구성에서는 가용성이 보장되지 않는다. 데이터를 저장한 디스크 중 하나가 고장나면 그 디스크에 저장되어 있던 데이터는 잃어버리게된다.

RAID 1 - Mirroring(미러링)

RAID 1 구성은 '미러링(Mirroring)'이라고 부르는 구성이다.

블럭의 가용성을 위해서 복사본을 다른 디스크에 하나 더 저장해두는 방식이다. 스트라이핑 구성보다 입출력 속도는 느리지만 하나의 디스크가 고장나도 다른 디스크에서 데이터를 읽을 수 있기 때문에 가용성은 확보할 수 있다.

하지만 많은 경우 성능과 가용성 모두를 포기할 수 없기 때문에 이 둘을 적절히 섞어서 사용해야한다. 이 경우 스트라이핑을 먼저하는지 미러링을 먼저하는지만 다르다.

RAID 01 - Striping then Mirroring (Striped Mirrors)

RAID 01은 SM 구성이다. 즉 스트라이핑을 한 다음 미러링을 하는 구성이다.

파일을 스트라이핑 한 다음 그 구성 그대로 한벌 더 저장하는 구성 방식이다. 이 경우 미러링 덕에 가용성은 보장된다. 하지만 RAID 10에 비해 안정성은 조금 떨어진다.

예를 들어 'Disk 0'이 고장난 상황을 생각해보자. 이 사황에서 왼쪽 스트라이핑 구성으로는 파일 전체를 서비스할 수 없다. 다행히 오른쪽 스트라이핑 구성이 있어서 당장은 서비스가 가능하다. 이 때, Disk 5가 고장난 경우 파일을 서비스할 수 없게 된다. 스트라이핑을 구성하는 디스크의 개수가 많을수록 파일을 서비스할 수 없게 될 확률이 늘어난다. 

RAID 10 - Mirroring then Striping (Mirrored Stripes)

RAID 10은 MS 구성이다. 즉, 미러링을 하고 스트라이핑을 하는 구성이다.

이 경우 RAID 01 보다는 안정성이 보장된다. Disk 0이 고장났을 때, 파일을 서비스 할 수 없는 경우는 Disk 1이 고장난 경우 뿐이다. 나머지 5개의 디스크 중 단 하나만 제외하고 나머지 디스크가 고장난 경우는 여전히 서비스가 가능하다. (RAID 01의 경우 5개 중 3개가 고장나면 서비스 불가상태가 됩니다.)

에러에서 복구하는 비용도 RAID 10이 우월하다. RAID 01에서 Disk 0이 고장난 경우, 해당 디스크 교체 이후 전체 스트라이핑을 다시 구성해야 한다. 즉, 파일을 전부 반대편 미러에서 읽어서 다시 써야 한다.

RAID 10의 경우 Disk0을 교체후 Disk 1에 저장된 데이터만 읽으면 되므로 복구에 걸리는 I/O 비용이 매우 저렴하다.

댓글