상위 질문
타임라인
채팅
관점
표준 RAID 레벨
위키백과, 무료 백과사전
Remove ads
컴퓨터 기억 장치에서 표준 RAID 레벨은 여러 범용 컴퓨터 하드 디스크 드라이브 (HDD)에서 크고 신뢰할 수 있는 데이터 저장소를 생성하기 위해 스트라이핑, 미러링 또는 패리티 기술을 사용하는 RAID("여유 독립 디스크 배열" 또는 "저렴한 디스크의 여유 배열") 구성의 기본 집합을 포함한다. 가장 일반적인 유형은 RAID 0(스트라이핑), RAID 1(미러링) 및 그 변형, RAID 5(분산 패리티), RAID 6(이중 패리티)이다. 여러 RAID 레벨을 결합하거나 중첩할 수도 있는데, 예를 들어 RAID 10(미러 스트라이핑) 또는 RAID 01(스트라이프 세트 미러링)이 있다. RAID 레벨 및 관련 데이터 형식은 스토리지 네트워킹 산업 협회 (SNIA)에서 공통 RAID 디스크 드라이브 형식(DDF) 표준으로 표준화되어 있다.[1] 숫자 값은 식별자로만 사용되며 성능, 신뢰성, 세대, 계층 구조 또는 기타 측정 지표를 나타내지 않는다.
대부분의 RAID 레벨은 하드웨어 결함이나 불량 섹터/읽기 오류(하드 오류)에 대한 우수한 보호 및 복구를 제공할 수 있지만, 치명적인 오류(화재, 침수) 또는 사용자 오류, 소프트웨어 오작동, 멀웨어 감염과 같은 소프트 오류로 인한 데이터 손실에 대한 보호는 제공하지 않는다. 귀중한 데이터의 경우 RAID는 더 큰 데이터 손실 방지 및 복구 계획의 한 구성 요소일 뿐이며 백업 계획을 대체할 수는 없다.
Remove ads
RAID 0

RAID 0(스트라이프 세트 또는 스트라이프 볼륨이라고도 함)은 패리티 정보, 중복성 또는 내결함성 없이 두 개 이상의 디스크에 데이터를 고르게 분할("스트라이프")한다. RAID 0은 내결함성이나 중복성을 제공하지 않으므로 데이터가 모든 디스크에 스트라이프되어 있어 드라이브 하나가 고장 나면 전체 배열이 고장 난다. 이 구성은 일반적으로 속도를 목표로 구현된다.[2][3]
RAID 0 설정은 크기가 다른 디스크로 만들 수 있지만, 각 디스크가 배열에 추가하는 저장 공간은 가장 작은 디스크의 크기로 제한된다. 예를 들어, 120GB 디스크와 320GB 디스크를 함께 스트라이프하면 배열의 크기는 120GB × 2 = 240GB가 된다. 그러나 일부 RAID 구현에서는 나머지 200GB를 다른 용도로 사용할 수 있도록 허용하기도 한다.
이 섹션의 다이어그램은 두 개의 디스크에 데이터가 스트라이프로 어떻게 분산되는지를 보여주며, A1:A2가 첫 번째 스트라이프, A3:A4가 두 번째 스트라이프 등이다. RAID 0 배열 생성 시 스트라이프 크기가 정의되면 항상 유지되어야 한다. 스트라이프는 병렬로 액세스되므로, n-드라이브 RAID 0 배열은 단일 디스크 속도보다 n배 빠른 데이터 전송률을 가진 하나의 큰 디스크처럼 보인다.
성능
n개 드라이브로 구성된 RAID 0 배열은 개별 드라이브 속도보다 최대 n배 높은 데이터 읽기 및 쓰기 전송 속도를 제공하지만, 데이터 중복성은 없다. 결과적으로 RAID 0은 주로 과학 컴퓨팅[4] 또는 게임과 같이 높은 성능을 요구하고 낮은 신뢰성을 용인할 수 있는 애플리케이션에 사용된다.[5]
일부 데스크톱 애플리케이션 벤치마크는 RAID 0의 성능이 단일 드라이브보다 약간 더 좋다는 것을 보여준다.[6][7] 또 다른 기사에서는 이러한 주장을 검토하고 "스트라이핑이 항상 성능을 향상시키지는 않지만(특정 상황에서는 비RAID 설정보다 느릴 수도 있음), 대부분의 상황에서는 상당한 성능 향상을 가져올 것"이라고 결론 내렸다.[8][9] 합성 벤치마크는 단일 드라이브 성능과 비교하여 RAID 0 설정에서 여러 HDD 또는 SSD를 사용할 때 다양한 수준의 성능 향상을 보여준다. 그러나 일부 합성 벤치마크는 동일한 비교에서 성능 저하를 보여주기도 한다.[10][11]
Remove ads
RAID 1

RAID 1은 두 개 이상의 디스크에 데이터 세트의 정확한 사본(또는 미러)으로 구성된다. 고전적인 RAID 1 미러링 쌍에는 두 개의 디스크가 포함된다. 이 구성은 디스크 공간의 패리티, 스트라이핑 또는 다중 디스크에 걸친 스패닝을 제공하지 않는다. 데이터가 배열에 속하는 모든 디스크에 미러링되고 배열은 가장 작은 멤버 디스크만큼만 커질 수 있기 때문이다. 이 레이아웃은 읽기 성능이나 신뢰성이 쓰기 성능이나 결과적인 데이터 저장 용량보다 중요할 때 유용하다.[12][13]
배열은 적어도 하나의 멤버 드라이브가 작동하는 한 계속 작동한다.[14]
성능
모든 읽기 요청은 배열의 모든 드라이브에서 서비스 및 처리될 수 있다. 따라서 I/O 부하의 특성에 따라 RAID 1 배열의 임의 읽기 성능은 각 멤버 성능의 합과 같을 수 있으며,[a] 쓰기 성능은 단일 디스크 수준에 머문다. 그러나 서로 다른 속도의 디스크가 RAID 1 배열에 사용되는 경우 전체 쓰기 성능은 가장 느린 디스크의 속도와 동일하다.[13][14]
합성 벤치마크는 단일 드라이브 성능과 비교하여 RAID 1 설정에서 여러 HDD 또는 SSD를 사용할 때 다양한 수준의 성능 향상을 보여준다. 그러나 일부 합성 벤치마크는 동일한 비교에서 성능 저하를 보여주기도 한다.[10][11]
Remove ads
RAID 2

RAID 2는 대부분의 RAID 레벨과 달리 데이터를 블록으로 나누는 것이 아니라 비트 수준에서 여러 디스크에 데이터를 분할한다. 이는 저장된 데이터의 오류를 감지하고 수정하기 위해 해밍 부호로 알려진 오류 정정 유형을 사용한다. 하드 드라이브는 컨트롤러에 의해 동기화되어 동시에 회전하며 동시에 동일한 위치에 도달한다.[15] 이러한 동기화 때문에 시스템은 일반적으로 한 번에 하나의 읽기 또는 쓰기 요청만 처리하므로 여러 작업을 동시에 처리하는 능력이 제한된다.[16][17]
초기 컴퓨팅에서 RAID 2는 높은 속도의 해밍 코드를 사용하고 병렬로 작동하는 많은 디스크를 사용하여 높은 데이터 전송률을 제공했다. 이 설계는 씽킹 머신즈(Thinking Machines)의 데이터볼트(DataVault)와 같은 특수 시스템에서 사용되었으며, 7비트의 패리티와 함께 32비트의 데이터를 동시에 전송했다. 이는 (39,32) 코드였다. IBM의 스트레치 시스템은 유사한 접근 방식을 사용하여 8비트의 오류 정정 기능과 함께 64비트의 데이터를 전송했다. 이는 (72,64) 코드였다. 두 코드 모두 기본적인 해밍 코드가 아니지만, 향상된 SECDED 코드(단일 비트 오류를 감지하고 수정할 수 있지만, 2비트 오류는 감지만 가능)이다.[18][19]
최신 하드 드라이브는 내장 오류 수정 기능을 포함하고 있으므로, RAID 2의 외부 해밍 코드의 추가적인 복잡성은 패리티와 같은 더 간단한 중복성 방식에 비해 거의 이점을 제공하지 않는다. 결과적으로 RAID 2는 거의 구현되지 않았으며 실제로는 더 이상 사용되지 않는 유일한 원래 RAID 레벨이다.[16][17]
RAID 3

실제로는 거의 사용되지 않는 RAID 3은 바이트 수준 스트라이핑과 전용 패리티 디스크로 구성된다. RAID 3의 특징 중 하나는 일반적으로 여러 요청을 동시에 처리할 수 없다는 것이다. 이는 모든 단일 데이터 블록이 정의상 세트의 모든 멤버에 걸쳐 분산되어 각 디스크의 동일한 물리적 위치에 존재하기 때문에 발생한다. 따라서 모든 I/O 작업은 모든 디스크에서 활동을 필요로 하며 일반적으로 동기화된 스핀들을 필요로 한다.
이것은 예를 들어 비압축 비디오 편집과 같이 길고 순차적인 읽기 및 쓰기에서 가장 높은 전송 속도를 요구하는 애플리케이션에 적합하다. 임의 디스크 위치에서 작은 읽기 및 쓰기를 수행하는 애플리케이션은 이 레벨에서 최악의 성능을 얻을 것이다.[17]
모든 디스크가 동기적으로 회전해야 한다는 요구 사항은 다른 RAID 레벨에 비해 이점이 없는 설계 고려 사항을 추가했다. RAID 3과 RAID 4 모두 RAID 5로 빠르게 대체되었다.[20] RAID 3은 일반적으로 하드웨어로 구현되었으며, 대형 디스크 캐시를 사용하여 성능 문제를 해결했다.[17]
Remove ads
RAID 4

RAID 4는 전용 패리티 디스크와 함께 블록 수준 스트라이핑으로 구성된다. 레이아웃의 결과로 RAID 4는 임의 읽기에서 좋은 성능을 제공하는 반면, 모든 패리티 데이터를 단일 디스크에 기록해야 하므로 임의 쓰기의 성능은 낮다.[21] 단, 파일 시스템이 RAID-4를 인식하고 이를 보완하는 경우는 예외이다.
RAID 4의 장점은 새로 추가된 디스크가 0바이트로 완전히 채워지는 한 패리티 재계산 없이 온라인으로 빠르게 확장될 수 있다는 것이다.
다이어그램 1에서 블록 A1에 대한 읽기 요청은 디스크 0에서 처리된다. 블록 B1에 대한 동시 읽기 요청은 대기해야 하지만, 블록 B2에 대한 읽기 요청은 디스크 1에서 동시에 처리될 수 있다.
Remove ads
RAID 5

RAID 5는 분산 패리티를 사용하는 블록 수준 스트라이핑으로 구성된다. RAID 4와 달리 패리티 정보는 드라이브 간에 분산된다. 작동하려면 하나를 제외한 모든 드라이브가 존재해야 한다. 단일 드라이브 고장 시 후속 읽기는 분산 패리티에서 계산되어 데이터 손실이 발생하지 않는다.[4] RAID 5에는 최소 3개의 디스크가 필요하다.[22]
디스크에 기록되는 순서에 따라 RAID 5 디스크 드라이브 배열에는 여러 가지 데이터 및 패리티 레이아웃이 있다.[23] 즉:
- 디스크 0부터 N까지의 디스크 배열에 왼쪽에서 오른쪽 또는 오른쪽에서 왼쪽으로 데이터 블록이 기록되는 순서.
- 스트라이프의 시작 또는 끝에 있는 패리티 블록의 위치.
- 이전 스트라이프의 패리티와 관련하여 스트라이프의 첫 번째 블록 위치.
이 그림은 1) 왼쪽에서 오른쪽으로 기록된 데이터 블록, 2) 스트라이프 끝에 있는 패리티 블록, 3) 다음 스트라이프의 첫 번째 블록이 이전 스트라이프의 패리티 블록과 동일한 디스크에 있지 않음을 보여준다. 이는 좌측 비동기 RAID 5 레이아웃[23]으로 지정될 수 있으며, 이는 해체된 RAID 자문 위원회에서 발행한 RAID 북의 마지막 판[24]에서 식별된 유일한 레이아웃이다.[25] 동기 레이아웃에서는 다음 스트라이프의 첫 번째 데이터 블록이 이전 스트라이프의 패리티 블록과 동일한 드라이브에 기록된다.
RAID 4와 비교했을 때, RAID 5의 분산 패리티는 전용 패리티 디스크의 부담을 모든 RAID 멤버에게 고르게 분산시킨다. 또한, 모든 RAID 멤버가 쓰기 요청을 처리하는 데 참여하므로 쓰기 성능이 향상된다. 패리티를 여전히 기록해야 하므로 스트라이핑(RAID 0) 설정만큼 효율적이지는 않겠지만, 더 이상 병목 현상이 아니다.[26]
패리티 계산은 전체 스트라이프에서 수행되므로, 배열에 작은 변경이 있을 경우 쓰기 증폭이 발생한다. 최악의 경우 단일 논리 섹터를 기록해야 할 때, 원래 섹터와 해당 패리티 섹터를 읽고, 원래 데이터를 패리티에서 제거하고, 새 데이터를 패리티에 계산한 다음, 새 데이터 섹터와 새 패리티 섹터를 모두 기록해야 한다.
Remove ads
RAID 6
요약
관점

RAID 6은 두 번째 패리티 블록을 추가하여 RAID 5를 확장한다. 따라서 모든 멤버 디스크에 분산된 두 개의 패리티 블록과 함께 블록 수준 스트라이핑을 사용한다.[27] RAID 6에는 최소 4개의 디스크가 필요하다.
RAID 5와 마찬가지로 데이터 블록이 기록되는 방향, 데이터 블록에 대한 패리티 블록의 위치, 그리고 후속 스트라이프의 첫 번째 데이터 블록이 이전 스트라이프의 마지막 패리티 블록과 동일한 드라이브에 기록되는지 여부에 따라 RAID 6 디스크 배열의 여러 레이아웃이 있다. 오른쪽 그림은 많은 레이아웃 중 하나일 뿐이다.
스토리지 네트워킹 산업 협회(SNIA)에 따르면 RAID 6의 정의는 다음과 같다. "두 개의 동시 디스크 고장이 발생하더라도 RAID 배열의 모든 가상 디스크에 대한 읽기 및 쓰기 요청을 계속 실행할 수 있는 모든 형태의 RAID. 이중 검사 데이터 계산(패리티 및 리드-솔로몬), 직교 이중 패리티 검사 데이터 및 대각 패리티를 포함한 여러 방법이 RAID 레벨 6을 구현하는 데 사용되었다."[28]
두 번째 블록은 일반적으로 Q로 표시되며, 첫 번째 블록은 P로 표시된다. 일반적으로 P 블록은 RAID 5와 동일하게 데이터의 패리티(XOR)로 계산된다. RAID 6의 다른 구현은 Q 블록을 계산하기 위해 다른 소거 부호를 사용한다. 고전적인 선택은 리드-솔로몬이지만, 이는 CPU 집약적인 갈루아 필드 계산을 필요로 하며, 이는 하드웨어 구현(ASIC 또는 FPGA)으로 완화될 수 있다. 리눅스에서 사용되는 Anvin의 특별한 다항식 선택이 있는데, 이는 GF(28)에서 덧셈 및 2에 의한 곱셈만으로 효율적인 구현을 가능하게 하며, SSSE3, AVX2 또는 기타 SIMD 방법을 사용하여 효율적으로 구현할 가능성을 열어준다.[29]
k = 2 경우에 특화된 새로운 소거 부호는 Anvin의 최적화를 뛰어넘는다. 여기에는 EVENODD (1996), 행 대각선 패리티 (RDP, 2004), 리버레이션 코드 (2008),[30][31][32][33] 및 모제트 (2015)가 포함된다.[34]
성능
RAID 6은 단순 XOR 외에 두 번째 패리티 코드를 사용한다. 결과적으로 읽기 및 쓰기 모두에 더 많은 처리 능력이 필요하다. 성능은 RAID 6이 제조업체의 스토리지 아키텍처에서 어떻게 구현되는지(소프트웨어, 펌웨어, 또는 펌웨어와 집약적인 패리티 계산을 위한 특수 하드웨어 가속기(ASIC 또는 FPGA) 사용 여부)에 따라 크게 달라진다.[35]
RAID 6은 일반적으로 읽기 작업에서 명백한 페널티를 보이지 않는다. 손상되지 않은 데이터의 경우 RAID 5와 마찬가지로 더 간단한 패리티만 계산하고 확인하면 된다. 불일치가 있을 때만 더 복잡한 패리티가 필요하다. 전경 읽기 대신 백그라운드 데이터 스크러빙을 통해 추가적인 견고성을 얻을 수 있다. 결과적으로 RAID 6은 일반적으로 동일한 수의 물리적 드라이브를 가진 RAID 5와 동일한 속도로 읽는다.[35]
데이터를 쓸 때는 지연 확인 전략이 작동하지 않는다. 결과적으로 쓰기 중에는 RAID 6의 전체 성능 페널티가 발생한다.
Remove ads
비교
요약
관점
다음 표는 표준 RAID 레벨에 대한 몇 가지 고려 사항을 요약한 것이다. 각 경우에 배열 공간 효율성은 드라이브 수 n으로 표현된 식으로 주어지며, 이 식은 0과 1 사이의 분수 값을 나타내며, 드라이브 용량 합계 중 사용 가능한 비율을 나타낸다. 예를 들어, 3개의 드라이브가 RAID 3으로 구성되면 배열 공간 효율성은 1 − 1/n = 1 − 1/3 = 2/3 ≈ 67%가 된다. 따라서 이 예에서 각 드라이브의 용량이 250GB이면 배열의 총 용량은 750GB이지만 데이터 저장에 사용 가능한 용량은 500GB에 불과하다. 서로 다른 RAID 구성은 또한 소위 데이터 스크러빙 중에도 오류를 감지할 수 있다.
역사적으로 디스크는 신뢰성이 낮았고, RAID 레벨은 디스크가 고장났다는 것 외에도 배열 내에서 어떤 디스크가 고장났는지 감지하는 데 사용되기도 했다. 그러나 패터슨(Patterson) 등이 언급했듯이, RAID가 처음 등장했을 때도 많은(전부는 아니지만) 디스크가 이미 오류 정정 코드를 사용하여 내부 오류를 찾을 수 있었다. 특히, 오류를 감지하려면 미러링된 디스크 세트만으로도 충분했지만, 오류 정정 기능이 없는 디스크 배열에서는 두 개의 디스크만으로는 어떤 디스크가 고장났는지 감지하기에 충분하지 않았다.[36] 최신 RAID 배열은 대부분 디스크가 자체적으로 결함이 있음을 식별하는 능력에 의존하며, 이는 스크러빙의 일부로 감지될 수 있다. 중복 정보는 고장난 드라이브를 식별하는 대신 손실된 데이터를 재구성하는 데 사용된다. 드라이브는 데이터를 여러 번 다시 읽으려 시도했지만 실패하여 복구 불가능한 읽기 오류가 발생하면 고장난 것으로 간주된다. 엔터프라이즈 드라이브는 읽기 요청이 적시에 수행되도록 하기 위해 TLER의 일부로 소비자 드라이브보다 훨씬 적은 시도 횟수로 오류를 보고할 수도 있다.[37]
참고:
- 배열 고장률은 드라이브 수 n 및 드라이브 고장률 r (각 드라이브에 대해 동일하고 독립적이라고 가정)로 표현된다. 예를 들어, 3개의 드라이브 각각이 향후 3년 동안 5%의 고장률을 가지며, 이 드라이브들이 RAID 3으로 구성된 경우, 향후 3년 동안의 배열 고장률은 다음과 같다:
- 속도는 표에 포함될 수 있는 것 이상으로 많은 요소의 조합으로 인해 포함되지 않았다. n개 드라이브에서 E의 공간 효율성을 고려할 때, 읽기 성능의 이론적 최대치는 단일 디스크의 읽기 속도보다 nE배 높다. 이는 단순히 읽어야 할 정보의 양에 의해 결정된다. 쓰기에도 동일하게 적용되며, 하드 캡은 단일 디스크의 쓰기 속도보다 nE배 높다. 서로 다른 속도의 디스크를 사용하는 경우, 속도 차이를 보상할 수 있는 캐시가 결국 채워지기 때문에 최대 지속 속도는 가장 느린 디스크 속도의 nE배로 감소한다.[14]
쓰기 시의 전체 패리티 계산은 특히 RAID 6의 경우 어렵다(위에서 논의한 바와 같이). 결과적으로 RAID 6의 전체 성능 페널티는 쓰기 중에 나타난다.
블록 기반 패리티 방법(RAID 4, 5, 6)은 충분히 유능한 하드웨어를 가정할 때 스트라이프 크기의 데이터에 대해 전체 쓰기 속도를 달성한다. 그러나 스트라이프보다 적은 데이터를 수정할 때는 작은 쓰기 페널티를 줄이기 위해 read-modify-write (RMW) 또는 reconstruct-write (RCW)를 사용해야 한다. RMW는 현재 스트라이프를 읽은 후 데이터를 기록한다(패리티를 업데이트하기 위한 차이를 가질 수 있도록). 스핀어라운드 시간은 2의 분수 요소를 제공하고, 기록할 디스크 수는 RAID 4/5에서는 2, RAID 6에서는 3의 또 다른 요소를 제공하여 이론적인 효율성 요소는 1/4 또는 1/6이다. RCW는 즉시 기록한 다음 다른 디스크에서 관련된 모든 스트라이프를 읽어 패리티를 재구성한다. RCW는 디스크 수가 적을 때 RMW보다 일반적으로 빠르지만, 모든 디스크를 깨워야 하는 단점이 있다(추가 시작-정지 주기가 수명을 단축시킬 수 있다). RCW는 또한 저하된 스트라이프에 대해 가능한 유일한 쓰기 방법이다.[40] (이는 RAID 4 또는 5가 RAID 3보다 성능이 떨어진다는 의미는 아니다. 실제로는 RAID 3은 탐색 시간 때문에 작은 읽기 및 쓰기에서 훨씬 더 나빴다.)
Remove ads
시스템 영향
단일 SSD, RAID 0, RAID 1, RAID 10, RAID 5의 5가지 저장 구성에서 5가지 파일 시스템의 I/O 성능 측정 결과, 8개의 SSD를 사용하는 RAID 0 및 RAID 5의 F2FS가 EXT4보다 각각 5배 및 50배 뛰어난 성능을 보였다. 또한 이 측정은 고속 SSD를 사용하여 RAID 시스템을 구축할 때 RAID 컨트롤러가 상당한 병목 현상이 될 수 있음을 시사한다.[41]
네스티드 RAID
두 개 이상의 표준 RAID 레벨의 조합. RAID 0+1 또는 RAID 01, RAID 0+3 또는 RAID 03, RAID 1+0 또는 RAID 10, RAID 5+0 또는 RAID 50, RAID 6+0 또는 RAID 60, RAID 10+0 또는 RAID 100이라고도 한다.
비표준 변형
표준 및 중첩 RAID 레벨 외에도 비표준 RAID 레벨 및 비RAID 드라이브 아키텍처와 같은 대안이 있다. 비RAID 드라이브 아키텍처는 JBOD("그냥 디스크 묶음"), SPAN/BIG, MAID("대규모 유휴 디스크 배열")와 같은 유사한 용어 및 약어로 언급된다.
내용주
각주
더 읽어보기
외부 링크
Wikiwand - on
Seamless Wikipedia browsing. On steroids.
Remove ads