디스크의 가용성 확보를 위해 레이드(RAID, Redundant Array of Independent Disks 혹은 Redundant Array of Inexpensive Disks) 구성을 하는 방법이 가장 많이 사용됩니다.
RAID 0, RAID 1, RAID 10, RAID 01 설정을 많이 사용하는데요. 숫자로만 이뤄져있어서 어떤 구성인지 헷갈릴 때가 있습니다. 모두 Striping과 Mirroring을 의미하는 구성으로 01을 SM으로 기억하면 편합니다.
레이드 구성 개념을 설명하기 위해서 6개의 블럭으로 구성된 파일하나를 생각해보겠습니다.
RAID 0 - Striping(스트라이핑)
RAID 0 구성은 '스트라이핑(Strping)'이라고 부르는 구성입니다. 블럭의 가용성보다는 성능과 관련된 구성인데요. 하나의 파일을 블럭단위로 여러 디스크에 골고루 뿌려놓는 구성방식입니다. (스트라이핑 단위가 블럭이라고 가정하겠습니다.) 3개의 디스크에 6개의 블럭을 스트라이핑 구성을 하면 위 사진처럼 하나씩 할당하게 됩니다.
이렇게 RAID 구성을 하게 되면 동일한 디스크라고 했을 때, 최대 디스크의 I/O Through put의 3배까지 성능을 낼 수 있습니다. 파일전체 데이터를 읽을 때, 일반 디스크는 6번의 블럭 읽기를 수행해야하지만 스트라이핑 구성에서는 각 디스크마다 2번씩 수행하면 되기 때문입니다.
단, 데이터의 가용성은 보장되지 않습니다. 디스크 하나가 고장나면 그 디스크에 저장되어 있던 데이터는 모두 유실입니다.
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 비용이 매우 저렴합니다.
댓글