2008년 창간 · 디지털 에디션 · 2026년 6월 19일

SMB IT Journal

중소기업을 위한 정보기술 자료

한국어
스토리지

RAID 재고찰

내가 초보 서비스 기술자였을 때, 시스템 관리에 대해 거의 아무것도 몰랐던 시절에도 항상 완벽하게 알아야 한다고 기대받았던 몇 안 되는 주제 중 하나가 바로 RAID – Redundant Array of Inexpensive Disks(저렴한 디스크의 중복 배열)였습니다. 그것은 모든 스토리지 문제에 대한 해답이었습니다. RAID를 통해 파일시스템을 더 크게 확장하고, 더 나은 처리량을 얻고, 특히 그 시절에는 꽤 정기적으로 발생했던 디스크 손실에도 살아남을 수 있는 중복성까지 추가할 수 있었습니다. NAS 및 SAN 스토리지 어플라이언스의 부상으로 물리적 스토리지 레벨까지 파고들어 시스템의 요구에 맞게 조정하는 기술이 빠르게 사라지고 있습니다. 이것은 좋지 않은 일입니다. 스토리지를 외부 장치로 오프로딩한다고 해서 우리가 스토리지를 근본적으로 이해하고 시스템의 특정 요구에 맞게 구성해야 할 필요성이 사라지는 것은 아닙니다.

지난 5~10년 사이에 업계에 퍼진 오해 중 하나는 RAID가 어떻게든 시스템 백업을 나타낸다는 믿음입니다. 그렇지 않습니다. RAID는 내결함성(fault tolerance)의 한 형태입니다. 백업과 내결함성은 개념적으로 매우 다릅니다. 백업은 재해가 발생한 후 복구할 수 있도록 설계되어 있습니다. 내결함성은 재해 발생 가능성 자체를 줄이도록 설계되어 있습니다. 내결함성을 절벽 꼭대기에 울타리를 세우는 것으로, 백업을 절벽 아래에 병원을 짓는 것으로 생각하면 됩니다. 울타리와 병원 모두 없는 상황에 처하고 싶지는 않지만, 이 둘은 분명히 다른 것입니다.

로컬 연결이든 SAN과 같은 원격 어플라이언스든 드라이브에 RAID를 구현할 때, 오늘날 비즈니스를 위해 선택할 수 있는 핵심 RAID 솔루션은 네 가지입니다: RAID 1(미러링), RAID 5(패리티를 사용한 스트라이핑), RAID 6(이중 패리티를 사용한 스트라이핑), RAID 10(스트라이핑을 사용한 미러링). RAID 0과 같이 드라이브 서브시스템 요구사항을 정말 잘 이해하는 경우에만 특수한 상황에서 사용해야 하는 것들도 있습니다. RAID 50과 51도 사용되지만 훨씬 덜 일반적이며 그다지 효과적이지 않습니다. 10년 전에는 RAID 1과 RAID 5가 일반적이었지만, 오늘날에는 더 많은 옵션이 있습니다.

각 옵션을 단계적으로 살펴보고 기본적인 수치를 논의해 보겠습니다. 예시에서는 배열의 드라이브 수를 n으로, 개별 드라이브의 크기를 s로 나타내겠습니다. 이를 사용하여 스토리지 용량 측면에서 쉽게 비교할 수 있도록 배열의 사용 가능한 스토리지 공간을 표현할 수 있습니다.

RAID 1: 이 RAID 유형에서 드라이브는 미러링됩니다. 두 개의 드라이브가 있으며 동시에 모든 것을 함께 수행하므로 “미러링”이라고 합니다. 미러링은 프로세스가 매우 단순하기 때문에 극도로 안정적이지만, 두 번째 드라이브가 중복성에만 사용되므로 RAID를 전혀 사용하지 않을 때 필요한 드라이브 수의 두 배를 구매해야 합니다. 디스크에 쓰는 모든 비트가 보호를 위해 두 번 쓰인다는 확신을 얻는 혜택이 있습니다. RAID 1의 용량은 (n*s/2)로 계산됩니다. RAID 1은 비-RAID 드라이브에 비해 최소한의 성능 향상만 제공합니다. 쓰기 속도는 비-RAID 시스템과 동일하지만 읽기 속도는 대부분의 상황에서 거의 두 배 빠릅니다. 읽기 작업 시 드라이브가 병렬로 접근하여 처리량을 높일 수 있기 때문입니다. RAID 1은 두 드라이브 세트로 제한됩니다.

RAID 5: 단일 패리티를 사용한 스트라이핑으로, 이 RAID 유형에서 데이터는 배열의 모든 드라이브에 걸쳐 복잡한 스트라이프로 쓰여지며 모든 드라이브에 걸쳐 존재하는 분산 패리티 블록을 가집니다. 이를 통해 RAID 5는 세 개 이상의 디스크로 구성된 임의 크기의 배열을 사용할 수 있으며, 패리티가 분산되어 어떤 하나의 물리 디스크에만 존재하지 않음에도 불구하고 단일 디스크에 해당하는 스토리지 용량만 손실합니다. RAID 5는 대규모 배열에서 스토리지 용량 손실이 적기 때문에 비용 효율성으로 자주 사용됩니다. 미러링과 달리 패리티를 사용한 스트라이핑은 디스크 전반에 걸친 각 쓰기 스트라이프마다 계산을 수행해야 하며, 이는 일부 오버헤드를 생성합니다. 따라서 처리량은 항상 명확한 계산이 가능하지 않으며 패리티 계산을 수행하는 시스템의 컴퓨팅 파워에 크게 의존합니다. RAID 5 용량 계산은 ((n-1)*s)로 간단합니다. RAID 5 배열은 배열 내 임의의 단일 디스크 손실을 견딜 수 있습니다.

RAID 6: 이중 패리티를 사용한 중복 스트라이핑. RAID 6는 RAID 5와 거의 동일하지만 추가적인 디스크 오류 보호를 위해 스트라이프당 하나가 아닌 두 개의 패리티 블록을 사용합니다. RAID 6는 다른 레벨들이 표준화된 후 몇 년이 지나서 추가된 RAID 패밀리의 더 새로운 구성원입니다. RAID 6는 배열 내 임의의 두 드라이브 오류를 데이터 손실 없이 허용한다는 점에서 특별합니다. 그러나 추가적인 중복성 수준을 수용하기 위해 RAID 6 배열은 두 드라이브에 해당하는 스토리지 용량을 잃으며 최소 네 개의 드라이브가 필요합니다. RAID 6 배열의 용량은 ((n-2)*s)로 계산할 수 있습니다.

RAID 10: 미러링 플러스 스트라이핑. 기술적으로 RAID 10은 비패리티 스트라이프(RAID 0)에 존재하는 RAID 1 미러 세트를 포함하는 하이브리드 RAID 유형입니다. 많은 벤더들이 배열에 두 개의 드라이브만 있을 때 RAID 10(또는 RAID 1+0)이라는 용어를 사용하지만 기술적으로 그것은 RAID 1입니다. 스트라이핑은 배열에 최소 네 개의 드라이브가 있어야 가능하기 때문입니다. RAID 10에서 드라이브는 쌍으로 추가되어야 하므로 배열에는 짝수 개의 드라이브만 존재할 수 있습니다. RAID 10은 전체 드라이브 세트의 절반까지 손실을 견딜 수 있지만 각 쌍에서 최대 하나씩만 손실 가능합니다. RAID 10은 패리티 계산이 없어 RAID 5나 RAID 6보다 성능 우위를 가지며 배열 구동에 필요한 컴퓨팅 파워도 적습니다. RAID 10은 읽기 작업에서 배열의 모든 드라이브를 동시에 사용할 수 있어 일반적인 RAID 유형 중 최고의 읽기 성능을 제공하지만 쓰기 성능은 훨씬 낮습니다. RAID 10의 용량 계산은 RAID 1과 동일하며, (n*s/2)입니다.

오늘날의 엔터프라이즈에서 IT 부서가 소프트웨어 또는 하드웨어 RAID 구현 여부와 관계없이 여기서 언급한 네 가지 외의 드라이브 구성을 진지하게 고려해야 하는 경우는 드뭅니다. 전통적으로 RAID 배열 결정에서 가장 큰 관심사는 사용 가능한 용량 기반이었습니다. 드라이브가 비싸고 용량이 작았기 때문입니다. 오늘날 드라이브는 매우 커서 스토리지 용량은 불과 몇 년 전만큼 문제가 되지 않으며, 비용도 낮아져 더 나은 드라이브 중복성을 위해 추가 드라이브를 구매하는 것이 일반적으로 큰 문제가 되지 않습니다. 용량이 중요할 때 RAID 5는 다른 배열 유형에 비해 스토리지 용량 손실이 가장 적고 대규모 배열에서 스토리지 손실이 명목상에 불과하기 때문에 인기 있는 선택입니다.

오늘날 우리는 일반적으로 주로 데이터 안전성과 성능이라는 다른 관심사를 갖고 있습니다. 데이터 보호를 위해 약간의 추가 비용을 지출하는 것은 당연한 선택이어야 합니다. RAID 5는 단 하나의 드라이브만 손실할 수 있다는 단점이 있습니다. 3개 멤버로만 구성된 배열에서는 RAID 1이 제공하는 보호와 비교해 약간만 더 위험합니다. 세 드라이브 중 어느 하나라도 손실에서 살아남을 수 있습니다. 두 드라이브 중 하나를 잃는 것과 비교해 그다지 두렵지 않습니다. 그러나 16개 드라이브와 같은 대규모 배열은 어떨까요? 16개 드라이브 중 하나만 안전하게 손실할 수 있다는 사실은 우리로 하여금 신뢰성을 좀 더 철저히 의문시하게 만들어야 합니다.

이 때 RAID 6가 공백을 채우기 위해 등장했습니다. RAID 6는 대규모 배열에서 사용될 때 임의의 두 드라이브를 손실할 수 있다는 확신을 제공하면서 스토리지 용량과 성능 손실은 매우 적습니다. 패리티 스트라이핑 진영의 지지자들은 종종 스토리지 서브시스템에서 RAID 5/6가 적절한 “가성비”를 제공할 수 있다고 경영진을 안심시키기 위해 이 수치들을 인용하지만, 다른 요소들도 작용합니다.

RAID 신뢰성 논의에서 거의 완전히 간과되는 것은, 그 자체로도 너무 드물게 논의되는 주제이지만, 패리티 계산 신뢰성에 관한 문제입니다. RAID 1이나 RAID 10에서는 패리티로 스트라이프를 생성하기 위한 “계산”이 없습니다. 데이터는 단순히 안정적인 방식으로 쓰여집니다. 드라이브가 실패하면 파트너가 부하를 인수받고 파트너가 교체될 때까지 드라이브 성능이 약간 저하됩니다. 기존 드라이브 멤버에 영향을 미치는 재구축 프로세스가 없습니다. 패리티 스트라이프는 그렇지 않습니다.

패리티를 사용하는 RAID 배열은 드라이브에 무엇이 있고 무엇이 있어야 하는지 계산하는 작업을 수반합니다. 이 계산은 매우 단순하지만 문제가 발생할 기회를 제공합니다. RAID 1이나 RAID 10에서 실패하는 배열 컨트롤러는 이론적으로 드라이브 내용 위에 나쁜 데이터를 쓸 수 있지만, 컨트롤러가 스스로 드라이브를 변경하는 프로세스가 없으므로 미러를 생성하는 것 외에는 “재구축” 프로세스가 없기 때문에 이런 일이 실제로 발생할 가능성은 극히 낮습니다.

패리티를 사용하는 배열이 재구축 작업을 수행할 때, 배열의 전체 내용을 단계별로 처리하여 교체된 드라이브에 누락된 데이터를 다시 쓰는 복잡한 프로세스를 수행합니다. 그 자체로는 비교적 단순하며 우려의 원인이 되지 않아야 합니다. 제가 그리고 다른 사람들이 직접 경험한 것은 배열에 대한 느슨한 커넥터로 인해 연결이 끊어진 디스크와 관련된 약간 다른 시나리오입니다. 드라이브는 특히 항상 켜져 있는 시스템에서 수년간 사용된 후 서버에 앉아 있는 동안 시간이 지남에 따라 “흔들려” 느슨해지는 경우가 있습니다.

극단적인 시나리오에서 발생할 수 있는 것은, 배열 컨트롤러가 하나 이상의 드라이브가 연속으로 실패하고 재구축을 위해 다시 온라인 상태가 되었다고 믿을 때 드라이브의 좋은 데이터가 나쁜 패리티 데이터에 의해 덮어쓰여질 수 있다는 것입니다. 이 경우 드라이브 자체는 실패하지 않았으며 데이터 손실이 없습니다. 이론적으로 드라이브를 재장착하기만 하면 됩니다. 핫 스왑 시스템에서 드라이브 재구축 관리는 종종 실패한 드라이브의 제거 및 교체에 따라 자동으로 이루어집니다. 따라서 드라이브를 잃고 교체하는 이 프로세스는 인간의 개입 없이 발생할 수 있으며, 재구축 프로세스가 시작될 수 있습니다. 이 프로세스 중에 드라이브 시스템은 위험에 처하며, 동일한 이벤트가 다시 발생하면 드라이브 배열은 드라이브 상태에 따라 드라이브 전반에 걸쳐 나쁜 데이터를 스트라이핑하여 좋은 파일시스템을 덮어쓸 수 있습니다. 실패한 드라이브가 없는 시스템이 불필요한 재구축 작업으로 인해 전체 배열을 잃는 것을 볼 때 서버 관리자에게는 가장 우울한 광경 중 하나입니다.

이론적으로 이러한 상황은 발생하지 않아야 하며 이를 방지하기 위한 안전장치가 마련되어 있습니다. 그러나 드라이브의 현재 및 이전 상태와 드라이브에 있는 데이터의 품질에 대한 저수준 드라이브 컨트롤러의 판단은 보이는 것만큼 단순하지 않으며 실수가 발생할 수 있습니다. 이 상황은 가능성이 낮지만 실제로 발생하며 RAID 5 및 RAID 6 시스템에 계산하기 거의 불가능한 위험을 추가합니다. 배열이 드라이브 손실 풀에서 살아남을 수 있는 수의 전통적인 위험에 더하여 패리티 실패의 위험도 고려해야 합니다. 드라이브가 더 신뢰할 수 있게 될수록 패리티 실패 위험 이벤트의 중요성이 더 커집니다.

또한 RAID 5와 RAID 6 패리티는 전용 RAID 하드웨어로 처리되는 경우가 많은 패리티 계산으로 인해 시스템 오버헤드를 발생시킵니다. 이 계산은 하드웨어와 소프트웨어 모두에서 구현에 따라 크게 다른 드라이브 서브시스템에 지연을 도입하므로 각 구현이 고유하여 RAID 레벨들 간의 성능 수치를 명확히 제시하는 것이 불가능합니다.

오늘날 RAID 선택의 가장 큰 문제는 아마도 스토리지 효율성과 드라이브 손실 생존 가능성에 대한 지표를 쉽게 얻을 수 있다는 것이 신뢰성과 성능의 전체 그림을 가린다는 것입니다. 그 통계들은 거의 완전히 이용 불가능하기 때문입니다. 지표의 위험 중 하나는 사람들이 잠재적인 영향과 관계없이 쉽게 측정할 수 있는 요소에 집중하고 쉽게 측정할 수 없는 요소를 무시한다는 것입니다.

모든 현대 RAID 레벨은 각자의 자리가 있지만, 전체 위험 범위에 대한 이해와 맥락을 고려하여 평가하는 것이 중요합니다. 우리는 업계의 기본값을 RAID 5에서 RAID 10으로 전환하기 위해 노력해야 합니다. 드라이브는 저렴하고 데이터 손실은 비쌉니다.

[편집: 이 글이 처음 작성된 이후 몇 년 동안 재구축 작업 중 URE(Unrecoverable Read Errors, 복구 불가능한 읽기 오류) 위험의 부상으로 인해 패리티 배열에 대한 주요 위험이 여기 나열된 것에서 URE 관련 위험으로 이동했습니다.]

태그raid storage

광고

SMB IT Journal — the IT resource for small business