RAID(Redundant Array of Inexpensive (or Independant) Disks)는 여러 드라이브의 집합을 하나의 드라이브처럼 사용할 수 있게 하고, 장애 발생시 데이터를 복구할 수 있도 록 합니다. 기본적인 RAID의 개념은 작고 값싼 드라이브들을 연결해서 크고 비싼 드라이브 하나 (SLED: Single Large Expansive Disk)로 대체 하자는 것에서 출발 했습니다.
1988년 버클리 대학의 David Patterson, Garth Gibson, Randy Katz가 SIGMOD에서
'A Case for Redundant Arrays of Inexpensive Disks (RAID)'라는 논문을 발표했는데,
이 논문은 데이터와 패리티 정보를 디스크에 배치하는 방법에 따라 디스크 어레이를
분류했으며, 이것이 이후 RAID level이라고 불리게 됩니다.
2. RAID의 장점
고 가용성 / 데이터 보호 시스템에 있는 디스크의 수가 증가함에 따라 디스크가 장애를 일으킬 가능성도 함께 증가 합니다. RAID는 미러링 또는 패리티 정보를 이용하여 디스크 장애에 대한 대비를 할 수 있도록 합니다.
드라이브 접속성의 증대 여러 개의 물리적 드라이브를 하나의 논리적 드라이브로 인식함으로써, 용량 및 드라이브 수의 제한을 피할 수 있습니다.
저렴한 비용과 작은 용량으로 대용량 구현 여러개의 소용량 드라이브로 대용량 드라이브를 구현 할 수 있습니다.
효율성 증가 하나의 디스크에 대한 입출력 요구에 비하여 여러 디스크에 데이터를 분산시키고 병렬로 입출력을 처리함으로써 효율성을 증가시킬 수 있습니다.
3. RAID 레벨
UC-Berkeley의 연구그룹은 RAID를 여섯개의 레벨로 분류하였으며 RAID의 각 레벨은 서로 다른 용도를 위해 최적화된 시스템을 구현 할 수 있습니다.
>> RAID 0 (stripping)
Level 0은 데이터의 빠른 입출력이 가능하도록 데이터를 여러 드라이브에 분산하여 저장한다. 데이터 복구를 위한 추가 정보를 기록하지 않기 때문에 성능은 매우 뛰어 나지만,어느 한 드라이브에서 장애가 발생하게 되면 데이터는 손실됩니다. 그러므로 엄밀히 이야기하자면 RAID의 정의에 부합된다고 볼 수 없습니다. 빠른 입출력 속도가 요구되나 장애 복구 능력은 필요 없는 시스템에 적합합니다.
>> RAID 1 (mirroring)
빠른 기록 속도와 함께 장애 복구 능력이 요구되는 경우에 사용되며 2대의 드라이브 만으로 구성할 수 있습니다. RAID level 1은 한 드라이브에 기록되는 모든 데이터를 다른 드라이브에 복사해 놓는 방법으로 복구능력을 제공합니다. RAID level 1은 하나 의 드라이브를 사용하는 것에 비해 약간 나은 정도의 성능을 제공합니다. 읽을때 더 빠르며, 쓸때는 약간 느립니다. 하지만 ECC(에러 검출 코드)를 계산하지 않기 때문에 RAID4나 5보다는 빠릅니다. 이 경우 어느 드라이브가 고장나더라도 데이터의 손상은 일어나지 않습니다. 두 개의 Disk에 Data가 동일하게 기록 되어지므로 Data의 복구 능력은 탁월하나 전체 용량의 절반이 여분의 데이터를 기록하기 위해 사용되기 때문에 저장용량당 단가가 비쌉니다.이 레벨은 mirroring이라고 부릅니다.
>> RAID 2
RAID level 2는 에러검출능력이 없는 드라이브를 위해 hamming 오류정정코드를 사용합니다. 모든 SCSI 드라이브는 에러검출능력을 갖고 있기 때문에 SCSI 드라 이브를 사용할 경우 이 레벨은 별로 쓰이지 않습니다.
>> RAID 3
RAID level 3은 level 4와 유사하나 바이트 단위의 분산 저장을 경제적으로 수행하기 위해선 하드웨어적인 지원이 요구 되며 효율적인 동작을 위해 동기 가능한 (synchronized-spindle) 드라이브를 필요로 합니다. RAID level 3은 한 드라이브에 패리티 정보를 저장하고, 나머지 드라이브들 사이에 데이터를 바이트 단위로 분산합니다. (Block Striping: 전용 패리티를 이용한 블록 분배). 하나의 드라이브에 문제가 생기면, 컨트롤러가 전용 패리티 드라이브로부터 문제가 생긴 드라이브의 손실된 데이터를 가져와 복구/재생시킵니다.
>> RAID 4 (parity)
RAID level 4는 한 드라이브에 패리티 정보를 저장하고 나머지 드라이브들 사이에 데이터를 블럭 단위로 분산합니다. 패리티 정보는 어느 한 드라이브에 장애가 발생 했을때 데이터를 복구할 수 있게 해 줍니다. RAID level 4는 데이터를 읽어들일 때 level 0에 필적하는 매우 우수한 성능을 보이나, 쓸때는 매번 패리티 정보를 갱신하기 때문에 추가적인 시간을 필요로 합니다. 실제적으로는 작고 랜덤하게 기록할수록 느리고 크고 순차적인 기록을 행할때는 그리 느리지 않습니다. 여러 드라이브들 중 에서 한대의 드라이브만이 여분의 패리티 정보를 기록하는데 사용되기 때문에 level 4의 용량당 비용은 그리 높지 않습니다. 저렴한 가격으로 장애 복구 능력이 요구되거나 빠른 판독 속도가 필요한 경우에 사용 됩니다. 다량의 데이터 전송을 요하는 CAD나 이미지 작업에 적합니다.
>> RAID 5 (distributed parity)
RAID level 5는 패리티 정보를 모든 드라이브에 나누어 기록합니다. 따라서, 문제가 생길 경우, 컨트롤러가 정상적으로 운영되고 있는 다른 드라이브로부터 손실된 데이 터를 가져와 복구/재생합니다. 패리티를 담당하는 디스크가 병목현상을 일으키지 않기 때문에,level 5는 멀티프로세스 시스템에서와 같이 작고 잦은 데이터 기록이 있을 경우 더 빠릅니다. 하지만 읽어들이기만 할 경우 각 드라이브에서 패리티 정보를 건너 뛰어야 하기 때문에 RAID level 4 보다 느립니다. 용량당 비용은 level 4와 같습니다. 작고 랜덤한 입출력이 많은 경우 더 나은 성능을 제공하며 빠른 기록속도가 필수적이지 않다면, 일반적인 다중 사용자 환경을 위해 가장 좋은 선택입니다. 그러나 최소한 3대, 일반적으로는 5대 이상의 드라이브가 필요합니다.
>> Level 0+1 : Striping & Mirroring
Disk Striping with Mirroring RAID (0+1)은 RAID 0 과 RAID 1를 통합한 것입니다. - 미러링(mirroring)과 분배(striping). RAID (0+1) 는 하드 드라이브의 리던던트 기능을 완벽하게 지원하기 때문에 여러 개의 드라이브에 문제가 발생해도 장애 없이 사용할 수 있습니다. RAID 1에서 두 개 이상의 하드 드라이브가 연결되면 자동으로 RAID (0+1)이 실행됩니다.
>> Level 7 : JBOD(Just Bunch of Disks) 독립된 디스크로 개별 사용. JBOD란 Just a Bunch of Drives(드라이브의 한 묶음)의 약어입니다. 컨트롤러는 각각의 드라이브를 독립형 디스크로 취급하기 때문에, 각 드라이브는 독립된 논리 드라이브가 됩니다. JBOD일 경우, 데이터를 보호하지 못합니다. (데이터 리던던트 기능이 없음)
>> NRAID(Disk Spanning) NRAID란 Non-RAID의 약어입니다. 모든 드라이브의 용량이 하나의 논리 드라이브가 되기 위해 통합됩니다. (no block striping). 다시 말하면, 논리 드라이브의 용량이 물리 드라이브의 총 용량이 되는 것입니다. NRAID는 데이터를 보호하지 못합니다. (데이터 리던던트 기능이 없음) 모든 연결된 드라이브를 싱글 볼륨으로 만들어주는 디스크 스패닝(disk spanning)을 제공합니다. 평행선상에 있는 여러 개의 드라이브에 데이터를 쓰거나 읽을 경우 데이터를 여러 개의 블록에 나눠줌으로써 디스크 접근 속도를 향상시켜 줍니다.