안녕하세요.
본격적으로 RAID에 대한 얘기를 해보겠습니다.
1. RAID 란?
RAID는
Redundant Array of Independent Disk (독립된 디스크의 복수 배열)
혹은
Redundant Array of Inexpensive Disk (저렴한 디스크의 복수 배열)
의 약자입니다.
말 그대로 RAID는 여러개의 디스크를 묶어 하나의 디스크 처럼 사용하는 기술 입니다.
RAID를 사용하였을 때 기대 효과는
- 대용량의 단일 볼륨을 사용하는 효과
- 디스크 I/O 병렬화로 인한 성능 향상 (RAID 0, RAID 5, RAID 6 등)
- 데이터 복제로 인한 안정성 향상 (RAID 1 등)
이 있습니다.
RAID는 컴퓨터를 구성하는 여러 부품 (구성품) 중 기계적인 특성 때문에
상대적으로 속도가 (많이) 느린 하드디스크를 보완하기 위해 만든 기술입니다.
RAID를 구성하는 디스크의 개수가 같아도, RAID의 구성 방식에 따라 성능, 용량이 바뀌게 됩니다.
이 구성 방식을 RAID Level (레이드 레벨) 이라고 부릅니다.
여러 RAID 레벨이 있습니다. 각각의 RAID Level에 대해 알아보겠습니다.
2. Standard RAID Level
먼저 기본적인 RAID Level 입니다.
RAID 0 ~ RAID 6까지 있지만,
최근 출시되는 RAID 컨트롤러에서 사용 가능 한 RAID Level은 RAID 0, RAID 1, RAID 5, RAID 6 입니다.
(그래도 일단 전체 RAID Level에 대해 설명하겠습니다.)
RAID를 구성하는 디스크의 종류와 크기는 같다고 가정하도록 하겠습니다.
(실제로도 같은 크기, 종류의 디스크를 사용하는 것을 권장합니다.)
* 이미지 및 표 출처 - https://en.wikipedia.org/wiki/Standard_RAID_levels
* 성능의 경우 RAID 컨트롤러의 연산으로 인한 성능 저하는 제외하고, Sequential I/O 시만 가정하겠습니다.
* RAID를 구성하는 디스크의 개수는 N으로 표현하겠습니다.
(1) RAID 0
Striping (스트라이핑) 이라고도 부르는 방식입니다.
RAID 0를 구성하기 위해서는 최소 2개의 디스크가 필요합니다. (min(N) == 2)
RAID를 구성하는 모든 디스크에 데이터를 분할하여 저장합니다.
전체 디스크를 모두 동시에 사용하기 때문에 성능은 단일 디스크의 성능의 N배 입니다.
마찬가지로 용량 역시 단일 디스크의 용량의 N배가 됩니다.
하지만 하나의 디스크라도 문제가 발생 할 경우 전체 RAID가 깨지는 불상사가 발생합니다.
즉, 안정성은 1/N으로 줄어든다 할 수 있습니다.
성능과 용량은 최대한으로 사용하는 대신, 안정성은 극악이라 할 수 있습니다.
(즉 실제 서버 환경에서는 거의 사용하지 않는다고 봐야합니다.)
(2) RAID 1
Mirroring (미러링) 이라고도 부르는 방식 입니다.
RAID 1을 구성하기 위해서는 최소 2개의 디스크가 필요합니다. (min(N) == 2)
RAID 컨트롤러에 따라서 2개의 디스크로만 구성 가능할 수도,
그 이상의 개수를 사용 하여 구성 할 수도 있습니다.
RAID 1은 모든 디스크에 데이터를 복제하여 기록합니다.
즉, 동일한 데이터를 N개로 복제하여 각 디스크에 저장합니다.
때문에 여러 개의 디스크로 RAID를 구성해도, 실제 사용 가능한 용량은 단일 디스크의 용량과 동일합니다.
Write 시엔 데이터를 복제하여 기록하기 때문에, RAID 컨트롤러가 복제, 연산 하는 시간을 감안하면
단일 디스크의 Write 성능보다 낮게 나올 수도 있습니다.
하지만 Read 시엔 전체 디스크에서 읽어오기 때문에 단일 디스크의 N배의 성능이 나옵니다.
그리고 RAID 1의 최대 강점은 안정성이 높다는 것 입니다.
극단적으로, N-1개의 디스크가 고장나도 데이터 사용이 가능합니다.
(단, 이런 상황이 발생 했을 떄는 빨리 데이터를 백업해 주어야 합니다.)
안정성이 중요한 시스템에서 사용 할 수 있겠으나, 비용 문제로 인해 거의 사용하지 않습니다.
(3) RAID 2
현재는 사용하지 않는 RAID Level 입니다.
bit 단위로 striping을 하고, error correction을 위해 Hamming code 를 사용합니다.
m+1개의 데이터 디스크와 m개의 패리티 디스크로 구성되는 것 같습니다. (즉 N == (m+1) + m)
최소 3개의 디스크로 구성 가능합니다.
그리고 1개의 디스크 에러 시 복구 가능합니다. (2개 이상의 디스크 에러 시 복구 불가능)
(4) RAID 3
현재는 사용하지 않는 RAID Level 입니다.
Byte 단위로 striping을 하고, error correction을 위해 패리티 디스크를 1개 사용합니다.
용량 및 성능이 단일 디스크 대비 (N-1) 배 증가합니다.
Byte 단위로 striping 하기 때문에 너무 작게 쪼개져 현재는 사용하지 않는다고 합니다.
최소 3개의 디스크로 구성 가능합니다.
그리고 1개의 디스크 에러 시 복구 가능합니다. (2개 이상의 디스크 에러 시 복구 불가능)
(5) RAID 4
현재는 (거의) 사용하지 않는 RAID Level 입니다.
(거의를 붙인 이유는 RAID 4는 지원하는 RAID 컨트롤러를 사용해 봤습니다.)
Block 단위로 striping을 하고, error correction을 위해 패리티 디스크를 1개 사용합니다.
용량 및 성능이 단일 디스크 대비 (N-1) 배 증가합니다.
최소 3개의 디스크로 구성 가능합니다.
그리고 1개의 디스크 에러 시 복구 가능합니다. (2개 이상의 디스크 에러 시 복구 불가능)
Block 단위로 striping 하는 것은 RAID 5, RAID 6와 동일하지만,
패리티 코드를 동일한 디스크에 저장하기 때문에,
패리티 디스크의 사용량이 높아 해당 디스크의 수명이 줄어든다고 합니다.
RAID 4의 단점을 개선시킨 것이 RAID 5 입니다.
(6) RAID 5
제일 사용 빈도가 높은 RAID Level 입니다.
Block 단위로 striping을 하고, error correction을 위해 패리티를 1개의 디스크에 저장하는데,
패리티 저장 하는 디스크를 고정하지 않고, 매 번 다른 디스크에 저장합니다.
(RAID 4와 RAID 5의 그림을 비교해 보시면 이해 될겁니다.)
용량 및 성능이 단일 디스크 대비 (N-1) 배 증가합니다.
최소 3개의 디스크로 구성 가능합니다.
그리고 1개의 디스크 에러 시 복구 가능합니다. (2개 이상의 디스크 에러 시 복구 불가능)
RAID 0에서 성능, 용량을 조금 줄이는 대신 안정성을 높인 RAID Level이라 보시면 됩니다.
(7) RAID 6
RAID 5에서 성능, 용량을 좀 더 줄이고, 안정성을 좀 더 높인 RAID Level 입니다.
Block 단위로 striping을 하고, error correction을 위해 패리티를 2개의 디스크에 저장하는데,
패리티 저장 하는 디스크를 고정하지 않고, 매 번 다른 디스크에 저장합니다.
용량 및 성능이 단일 디스크 대비 (N-2) 배 증가합니다.
최소 4개의 디스크로 구성 가능합니다.
그리고 2개의 디스크 에러 시 복구 가능합니다. (3개 이상의 디스크 에러 시 복구 불가능)
RAID 5에서 성능, 용량을 조금 줄이는 대신 안정성을 높인 RAID Level이라 보시면 됩니다.
조금 더 안정성을 높여야 하는 서버 환경에서 주로 사용합니다.
(8) RAID 0 ~ RAID 6 summary
3. Nested RAID (중첩 RAID)
Nested RAID는 Standard RAID를 여러개 중첩하여 사용합니다.
즉, 복수의 Standard RAID 를 또 RAID로 묶습니다.
예를들어 2개의 RAID 0를 RAID 1로 묶습니다. (RAID 0+1 혹은 RAID 01)
2개의 RAID 1을 RAID 0으로 묶을 수도 있습니다. (RAID 1+0 혹은 RAID 10)
극단적으로 2개의 RAID 1를 묶은 RAID 0 2개를 RAID 0로 묶는 경우도 있(는것 같)습니다. (RAID 10+0)
다음의 그림을 참고하시면 이해가 쉽게 되실 겁니다.
* 그림 출처 - https://en.wikipedia.org/wiki/Nested_RAID_levels
드디어 RAID 기본 설명과 RAID Level에 대해 포스팅을 해봤네요.
다음 포스팅으론 RAID 타입에 대해 알아보겠습니다.
'Computer System > Storage' 카테고리의 다른 글
[스토리지] RAID 정리 3. RAID 설정 (레이드 옵션, Stripe Size, Read/Write Policy) (0) | 2018.09.03 |
---|---|
[스토리지] RAID 정리 2. RAID 구현 방법, 물리적 구성 방법 (하드웨어, 소프트웨어, 펌웨어 레이드) (2) | 2018.09.02 |
[스토리지] RAID 정리 0. 개요 (레이드) (0) | 2018.08.31 |
[Linux] Device-Mapper multipath 설정 상세 (multipath.conf 파라미터) (0) | 2018.05.17 |
[스토리지] gluster-block - lio (targetcli), user:glfs (tcmu-runner) 설정 유틸리티 (0) | 2018.04.16 |