2014/08/04

[Korean] 일반용도에서의 RAID 사용

일반적인 용도에서 목적에 부합되는 RAID 저장소 설계는 작업의 시간대비 효율을 중시해야할 상황일 때 중요합니다. 사용하는 목적은 여러 케이스가 있는데, 대표적으로 3가지 케이스가 있습니다. 먼저 단일 디스크만으로는 낼 수 없는 성능을 뽑아내어 작업속도를 증가시키는 경우와, 작업중 돌발상황에 의한 HDD의 돌연사 등으로 데이터를 유실할 위기를 방지차원에서 사용하는 경우, 두 마리 토끼를 다 잡기위한 성능/신뢰성을 동시에 확보하는 케이스가 있습니다. 3가지 케이스는 추구하는 목적에 따라 그 목적에 부합되게 설계된 RAID 레벨 시스템을 사용하면 되는데, 각각 장단점이 분명히 존재하므로, 무작정 생각없이 사용하다 장애가 발생했을 시, 사용하지 않은 경우보다 못한 최악의 상황이 발생할 수도 있으니 신중히 택해야 하겠습니다.

 인터넷에 찾아보면 널리고 널린 것이 RAID에 대한 설명이므로, RAID 레벨은 간단히 설명만으로 넘어가며, 일반적인 목적에 따른 저장소 설계에 대해서 알아보겠습니다.

RAID 레벨의 이야기를 하기전에 기본적인 지식부터 짚고 넘어가겠습니다.

- RAID는 성능/안정성을 확보해주는 것은 분명하지만 만능이 아니므로 환상을 버려야 한다.
- 다수의 HDD를 많이 연결한다고 성능이 무한히 선형적으로 증가하지 않는다.
- RAID에 사용할 HDD는 모델명, HDD의 펌웨어는 모두 동일한 것을 사용하길 강력히 권장한다.
- 절전모드는 RAID시스템에 안좋은 영향을 끼칠 가능성이 크다.
- RAID가 깨졌을 때, 가능하면 랜선뽑고 다른 작업 없이 얌전히 리빌딩 다 되기를 기다리는 것이 좋다.
- RAID 컨트롤러의 펌웨어는 가능하면 최신으로 업데이트해서 사용한다.
- RAID 컨트롤러의 펌웨어 업데이트를 할 때는 반드시 백업을 먼저 한 후에 업데이트 한다.
- 메인보드 내장의 RAID 5는 기본적으로 크게 신뢰하지 않는 것이 건강상 이롭다.
- RAID 0 또는 1은 어설프게 싼 컨트롤러 카드보다 메인보드 내장형이 성능은 더 좋은 경우가 있다.
- 용량은 적고 성능만을 위한 HDD-RAID보다는 SSD 1개+백업 HDD 1개 조합이 좋다.
- RAID는 RAID컨트롤러가 아닌 OS상에서도 지원한다. 윈도우 동적볼륨, 리눅스 LVM 등.
- Hardware형 컨트롤러 : I/O processor와, 캐시메모리 내장, 정전 등 데이터유실 방지용 배터리장착 등
- Software형 컨트롤러 : IOP가 없어 CPU가 패리티 연산 등을 담당, 캐시메모리는 시스템메모리로 사용
- HP/DELL/IBM 벤더들은 각자 회사 벤더용 컴퓨터가 아닐 경우 인식이 안될 수도 있다.
- VMware ESXi는 HP/DELL/IBM/Intel 등의 서버벤더용과 Adaptec/LSI 정도만 지원하니 주의
- Microsoft Hyper-V Server(무료버전), Citrix Xen, Openstack 등 각 하이퍼바이져가 컨트롤러의 드라이버를 지원하는지 확인한 후 도입한다.
- SSD RAID는 보드내장 또는 캐시메모리가 없는 HBA 컨트롤러를 사용한다. SSD 확산 이전에 나온 IOP/캐시 컨트롤러들은 제 성능이 나오지 않는다.
- 정말 RAID를 사용해야 하는가, 다시 한 번 검토한 후에 도입할 지 결정한다.



기본적인 것을 알아보았습니다. 다른 것은 다 재쳐두고 마지막 항목, 정말로 도입해야하는 지 재차 검토후에 사용여부를 결정하길 바랍니다. RAID가 깨져도 리빌딩을 할 수 있는 지 여부와 걸리는 시간이 크게 좌지우지 하기 때문입니다.

1. RAID 0 stripe
신뢰성 0점, 성능 3점, 장애복구시간 0점

HDD에 한 데이터를 나눠서 작성되며, 연결한 만큼 속도가 읽기/쓰기의 전송속도가 증가하지만. access 타임은 크게 증가하지 않습니다. 디스크 한 개라도 결함이 발생하거나 기타 상황에 따른 타이밍이 어긋날 경우 RAID는 깨지며 데이터가 유실됩니다. 다음은 목적에 따른 RAID 0의 선택 케이스입니다.

- 거대한 크기의 이미지 작업 : photoshop, iilustrator, GIMP 등 이미지 작업에서도 간혹 고사양 및 RAID 시스템을 요구하는 경우가 있습니다. 포스터작업 등 수만x수만 픽셀의 이미지파일 등을 작업할 때 작업PC에 상당한 부하가 걸리는데, 이 때는 RAID보다는 우선 소프트웨어가 4GB이상의 메모리를 지원하는 지 여부를 알아본 후 메모리 증설을 먼저 하는 것이 좋습니다. 일단 파일을 읽어들이면 메모리상에서 작업이 돌아가므로 디스크에 로드가 걸리는 부분은 파일을 불러들일 때와 저장할 때 뿐이므로, 램과 관련된 부분을 보강해주는 것이 효율상 좋습니다.

- 장시간 HD 동영상 작업 : 최근에는 무압축 영상을 편집하는 경우는 거의 없어 일반적인 경우 RAID를 쓸 일은 거의 없다고 봐도 됩니다. 압축영상의 경우, HDD 1개의 속도에도 충분히 커버할 수 있기 때문이지요. 하지만 커다란 용량의 파일이 수시로 읽고 쓰여지는 특성상 성능과 용량이 동시에 필요할 경우에는 RAID 0이 필요할 수도 있습니다. 이 경우, 작업 후 중간/최종결과물은 반드시 백업습관을 들여야 하는 것은 잊지 말아야하며, 속도만 중시하며 큰 용량을 사용하지 않을 때는 복수의 HDD RAID보다는 SSD 1개를 사용하는 방법도 고려할 수 있겠습니다.


2. RAID 1 mirror
신뢰성 3점, 성능 1점, 장애복구시간 3점

HDD에 동일한 데이터가 똑같이 복제되듯 작성되며, RAID가 깨져도 데이터는 유실되지 않습니다. 장애시 가장 빠르게 복구가 가능하며, 이 때문에 신뢰성은 모든 RAID레벨 중 가장 좋습니다. 이 때문에 일반 용도가 아닌 업무에서도 많이 사용되는 방식이며, 성능확보를 위해 간혹 RAID 0+1(Stripe 후에 Mirror) 또는 1+0(Mirror 후에 Stripe)으로 조합되어 사용되기도 합니다.
RAID 컨트롤러에 따라 spare디스크(평소에는 미사용/미작동, 일부HDD 장애발생시, 자동적으로 사용)를 사용할 수도 있습니다.


- 거대한 크기의 이미지 작업 : 이 작업에 RAID 1 사용은 자료가 성능확보없이 중요하다 판단할 때 사용하는 것이 적절하다고 생각됩니다.

- 장시간 HD 동영상 작업 : 이 작업에서 RAID 1은 HDD의 낭비라 생각됩니다.

- NAS : 소규모 NAS, 개인용도 NAS 등 최근 많은 제품들이 출시되어 있어 사람들의 관심이 많은 분야입니다. 백업 및 순차적 읽기속도가 향상되므로, 동시에 여러 사용자가 몰렸을 때 안정적인 성능을 뽑을 수 있습니다. RAID가 깨져 자료가 유실될 확률도 적어 적합한 방식입니다.



3. RAID 5
신뢰성2점,  성능 2점, 장애복구시간 2점

업무에 많이 사용되는 방식입니다. 최소 3개 디스크가 필요하며, 1개가 불량이 나도 즉각 디스크 교체로 데이터 유실은 방지할 수 있습니다. RAID 컨트롤러에 따라 spare디스크(평소에는 미사용/미작동, 일부HDD 장애발생시, 자동적으로 사용)를 사용할 수도 있습니다. 이 레벨은 패리티연산이 들어가므로 SW RAID 컨트롤러의 경우 CPU가 패리티연산을, HW RAID 컨트롤러는 IOP가 이 작업을 대신 처리하여, CPU에 부담을 줄일 수 있습니다. 

- 거대한 크기의 이미지 작업 : 용량/성능/안정성이 동시에 확보되어 분명히 좋긴 하지만, 굳이 이렇게까지 해서 써야할 상황은 정말 극히 한정된 상황을 제외하고 없을 것이라 생각됩니다.


- 장시간 HD 동영상 작업 : 용량, 용량/성능/안정성이 동시에 확보되어 적합합니다. 쓰기 작업이 빈번히 일어나는 작업이므로 HW컨트롤러를 권장합니다. 또는 백업이 적절히 되는 환경이라면 RAID 5 보다는 성능중시의 0과 별도 단일 디스크 백업을 사용하여, CPU에 부담을 줄이는 것도 좋은 방법입니다.


- NAS : 용량과 성능을 둘 다 확보할 수 있으므로 적합하지만, 한 번 RAID가 깨지면 2TB기준 일주일정도 리빌딩이 걸립니다. 상용 NAS 제품에서는 잘 깨질 일이 없겠지만, 간혹 깨지면 불량난 디스크 교체 후 일주일 정도는 잊고 지내는 편이 좋습니다. 리빌딩 중에는 사용이 가능하긴 하지만, 굉장한 성능저하가 발생하고, 운이 안좋으면 리빌딩실패로 자료가 유실될 수 있으니 건드리지 않기를 권장합니다. NAS의 경우 저장소 역할만을 하므로 SW레이드 컨트롤러로도 커버 가능합니다.



4. RAID 6
신뢰성 3점, 성능 2.5점, 장애복구시간 1점

RAID5에서 불량허용 HDD가 1개 추가된 2개 HDD가 불량이 발생해도 복구할 수 있으며, 성능도 약간 증가합니다. 하지만 리빌딩시에 RAID 5 이상으로 굉장한 시간이 걸리므로 추천하지 않습니다. 이 레벨도 RAID 5와 마찬가지로 패리티연산이 들어가는데, RAID 5 이상으로 연산이 걸리므로, 만약 사용할 경우 HW RAID 컨트롤러 사용을 권장합니다. 애초에 메인보드 내장 컨트롤러는 이 레벨을 지원 안하는 경우가 많습니다.



5. Nested RAID
앞서 잠시 언급했지만, 각각 레벨의 특징을 조합하여 사용하는 경우입니다. 한 예로 0+1과 1+0은 0의 성능과 1의 신뢰성을 확보한 케이스입니다. 용량과 속도가 같은데, 신뢰성에서 차이점이 있습니다. 이 외의 50, 60, 잘 사용하지 않는 1+5 등이 있습니다.

- 0+1 : 먼저 0으로 묶고 묶인 조를 다시 1로 묶는 방식입니다. 4개 HDD 중 A조 2개와 B조 2개가 있다 정의한다면, 어느 한 조에서 1개가 불량이 날 경우 복구가 가능하지만, A조와 B조 각각 1개씩 동시에 불량이 날 경우, 복구할 수 없습니다. 한 조에서 동시에 불량이 날 경우도 당연히 복구 불가능합니다.
RAID 1 [Raid 0 A (1,2,3,4,5) + Raid 0 B ( 6,7,8,9,10)]

4번 HDD 불량 => A조 RAID 0 fail발생, B조는 살아있으므로 불량HDD 교체 후 복구가능
8번 HDD 불량 => B조 RAID 0 fail발생, A조는 살아있으므로 불량HDD 교체 후 복구가능
3번, 9번 HDD 불량 => A조, B조 동시에 RAID 0 fail, 복구불가


- 1+0 : 먼저 1로 묶고 묶인 조를 다시 0으로 묶는 방식입니다. 0+1과의 차이점은 A조와 B조 각각 1개씩 동시에 불량이 날 경우에도 복구가 가능합니다. 이는 각 조 별로 1로 묶여있기 때문에 복구가 가능하며, 한 조 전체가 동시에 불량이 날 경우도 복구할 수 있습니다.
RAID 0 [R1A(1,2) + R1B(3,4) + R1C(5,6) + R1D(7,8) + R1E(9,10)]

4번 HDD 불량 => B조 RAID 1 fail발생, B조 복구 후 전체 사용가능
8번 HDD 불량 => D조 RAID 1 fail발생, B조 복구 후 전체 사용가능
2번,3번, 6번,8번,9번 HDD 불량 => 각 조 RAID 1 fail발생, 각조 복구 후 전체 사용가능
3번,4번 HDD 불량 => C조 전체 fail발생, RAID 0 fail로 복구 불가능.



6. JBOD (Just Bunch of Disk)
이건 사실 RAID가 아니라, 그냥 여러개의 디스크를 죽 나열하여 용량만 확장한 케이스이며, 성능/안정성에 대한 이점은 없습니다. 1개의 디스크에 데이터가 우선적으로 쌓이며, 꽉 차면 다음디스크에 쌓이는 형식이며, 중간에 디스크가 불량이 나서 깨져도 다른 살아있는 디스크의 데이터는 살릴 수 있습니다. 보통 자료 내용이 크게 중요하지 않고 디스크 용량만을 확보하고 싶을 때 사용합니다.


7. HBA
이것도 RAID가 아니라, 메인보드에 디스크 포트가 모자랄 때 추가 확장을 위해 쓰는 모드입니다. 단순히 디스크가 더 추가되는 것이므로 RAID가 아니며, 일반적으로 사용하는 느낌과 완전히 동일하게 사용합니다. 위의 1번부터 6번까지의 레벨은 RAID 컨트롤러에서 디스크를 직접 관리하므로 OS 및 BIOS/UEFI에서는 HDD가 묶인 상태의 어레이만 보이는데 반해, HBA는 직접적으로 개개별 HDD가 노출되어 관리할 수 있습니다. IOP가 없는 순수 확장 카드가 이런 방식이며, SW 및 HW RAID컨트롤러의 경우에도 펌웨어 세팅에서 HBA모드로 변경이 가능한 경우, 또는 펌웨어 자체를 HBA모드용으로 갈아 엎어야하는 경우가 있습니다.
 SSD RAID의 경우,  RAID 컨트롤러 자체 캐시메모리가 없는 HBA카드 또는 메인보드 내장의 RAID를 사용하는 편이 성능상 이롭습니다. Trim 및 컨트롤러의 캐시를 거쳐가는 것 때문에 각 벤더들의 SSD지원 최신형 컨트롤러가 아닌 이상 성능이 더 떨어집니다. RAID컨트롤러는 보수적으로 신제품이 나오는 걸 염두하셔야 합니다.



결론
위의 여러 레벨 중 요구되는 성능/신뢰/장애복구율 등을 검토하여 목적에 맞는 레벨을 선택하는 것이 작업능률을 끌어올릴 수 있습니다. 하지만 다시 한 번 명심할 점은 RAID는 만능이 아닙니다.  백업이 용이하다고 평이 난 mirror라도 쉴 세 없이 동시에 돌아가는 RAID특성상 단일디스크보다 안정성이 있다고는 말할 수 없습니다. 오히려 각각 단일 디스크를 사용하며, 수시로 백업하는 경우가 더 이상적일 수도 있음을 인지하길 바라며, 이만 글을 줄입니다.