Media Log

[Raid]에 해당되는 글 1

  1. RAID의 이해 2010.08.12

RAID의 이해

2010. 8. 12. 13:14 | ### 프로그래밍
출처 : http://k.daum.net/qna/view.html?qid=0DKLc

RAID의 개념

RAID는 본래 Redundant Array of Inexpensive(or Independent) Disks의 약어로, 1988년 미국 U.C.버클리 소속 과학자 David a Patterson, Garth Gibson, Randyh Kats에 의해 정의된 것이다. 기본적인 RAID의 개념은, 작고 값싼 드라이브들을 연결해 비싼 대용량 드라이브 하나(Single Large Expensive Disk)를 대체하자는 것이었지만, 그동안 하드 디스크를 포함한 스토리지 기술의 지속적인 발달로 인해 이제는 그 의미가 퇴색되어 버리고, 현재의 RAID 기술은 다음과 같이 정의된다.

 

  • 여러 개의 하드 디스크를 하나의 Virtual Disk로 구성하여 대용량 저장장치로 사용
  • 여러 개의 하드 디스크에 데이터를 분할·저장하여 전송속도의 향상
  • 시스템 가동중 생길 수 있는 하드 디스크의 에러를 시스템 정지없이 교체, 데이터 자동복구

 

이렇게 다양한 가용성을 제공하는 RAID는 6개의 레벨로 분류되어 서로 다른 용도를 위해 사용되어지는데, RAID의 자세한 기능은 RAID의 각 레벨별 설명을 통해 알 수 있다.

RAID의 레벨

RAID의 제안자들로부터 6개로 구분되었던 RAID의 각 레벨은 그간 보다 다양화되었으며, 그 구성과 기능면에 있어 서로 다르기 때문에, 사용자의 목적에 맞는 RAID 레벨 구성이 필수이다. 현재는 이 중 RAID 0, 1, 0+1 이렇게 3개정도가 보편적으로 사용되고 있다.

 

RAID 0 (Striping)

 

 

 RAID 레벨 0에서 데이터는 빠른 입·출력이 가능하도록 여러개의 하드 디스크에 분산되어 저

장된다. 즉, 하나의 디스크에 저장하는데 8분이 소요되는 데이터를 4개의 디스크에 동시분산하여 저장하면, 2분만에 모든 데이터의 저장이 완료되는 식으로, 이것은 장애 발생에 대비한 여분의 데이터 기록과 저장공간을 갖지 않기 때문에 성능이 매우 뛰어난 반면, 단 하나의 디스크에서 장애가 발생하더라도 데이터를 전부 손실할 수 있는 위험이 있다. 장애보정에 관한 RAID의 기본 정의에서 다소 벗어난 개념이라고도 할 수 있으며, 상대적으로 빠른 데이터 입·출력 성능이 요구되는 동영상 편집과 출판작업 등에 적합하다.

 

RAID 1 (Mirroring)

 

 

흔히 Mirroring이라고도 불리는 RAID 레벨 1은 단순히 한 드라이브에 기록되는 모든 데이터를 다른 드라이브에 복사하는 식이다. 즉, 이렇게 해서 하나의 드라이브가 고장나더라도, 또 다른 드라이브를 통해 완벽한 복구가 가능한데, 이러한 복구능력을 제외한 단순 성능에 있어선 하나의 드라이브를 사용할 때보다 큰 잇점은 없다고 할 수 있다. 두 개의 드라이브를 사용함으로 읽기성능은 하나를 사용할 때보다 빠르지만, 쓰기성능은 약간 느린편이다. 최소 두 개의 드라이브로 구성되며, 전체 하드디스크 용량의 50%만을 사용할 수 있기 때문에, 지속적인 백업이 필요치 않은 개인사용자에겐 별로 메리트가 없는 구성이다.

 

RAID 2 (Hamming 오류정정 코드)

 

 

 이것은 현재 거의 사장된 개념으로, 에러검출능력이 없는 드라이브를 위해 Hamming 이라는 오류정정코드를 사용하는 것이다. 각 데이터는 그림상 우측의 ECC 디스크에 저장된 Hamming 코드를 부여받아 에러를 검출하고 정정하게 된다. 실시간 오류수정이 가능하다는 장점이 있지만, 현재의 SCSI 드라이브들이 자체 에러검출 능력을 갖고 있기 때문에 별로 쓰이지 않고 있으며, EIDE RAID의 경우엔 해당 레벨이 아예 제외된 경우가 많다.

 

RAID 3 (Pararell transfer with parity)

 

 

RAID 레벨 3는 데이터를 분산저장한다는 점에서 앞서 설명한 RAID 0와 일맥상통하지만, 에러검출·수정을 위해 별도의 패리티 드라이브를 사용한다는 점이 다르다. 이것은 바이트 단위로 데이터를 분산저장하기 때문에 드라이브의 장애 발생시 패리티 정보를 이용한 복구가 가능하다. RAID 0의 빠른 입·출력 성능에 에러보정 기술이 첨가되었다고 생각하면 간단하다.

 

RAID 4 (Independent data disks with shared parity blocks)

 

 

 이것은 패리티 드라이브를 사용하는데서 레벨 3와 유사하지만, 각 드라이브에 데이터를 블록 단위로 분산 저장시킨다는 점에서 다르다. 데이터 출력면에 있어 레벨 0에 필적하는 우수한 성능을 갖지만, 저장시엔 매번 패리티 정보를 갱신해야하기 때문에 추가시간이 소요된다. RAID 레벨 4는 최소 3개의 드라이브로 구성된다.

 

RAID 5 (Independent data disks with distributed parity blocks)

 

 

레벨 5는 기존 레벨 3와 4의 단점을 개선한 것으로, 별도의 패리티 드라이브 대신 모든 드라이브에 패리티 정보를 나누어 기록하는 방식이다. 패리티를 담당하는 드라이브가 병목현상을 일으키지 않기 때문에, 작고 잦은 데이터 기록이 있을 경우 더 좋은 성능을 구현한다. 반면, 데이터의 출력시엔 각기 흩어진 패리티 정보의 갱신이 같이 이루어지기 때문에, 레벨 4보다 못한 출력 성능을 갖는다.

 

RAID 0+1 (High Data Transfer Performance)

 

(이상의 이미지는 raid.com에서 발췌한 것입니다.)

 

RAID 0와 RAID 1의 장점만을 이용한 것으로, 성능향상과 데이터의 안정성을 모두 보장받을 수 있다. RAID 0+1레벨을 이용한 데이터 저장시엔 RAID 0가 적용되어 두 개 또는 그 이상의 드라이브에 나누어 쓰고, 동시에 RAID 1을 이용한 백업 드라이브를 생성하게 된다. 이때 데이터 출력은 RAID 0에 연결된 하드디스크에서만 이루어지며, 최소 4개의 드라이브를 사용해야 한다.

 

JBOD

이것은 RAID의 기본 레벨은 아니지만, EIDE RAID 컨트롤러에 종종 포함되는 개념으로, 간단히 RAID 카드에 연결된 드라이브들의 용량을 하나로 합쳐 사용하는 것으로 생각하면 된다. 가끔 'Span'이란 용어로 대체되기도 한다.

 

이외에도 레벨 6, 7, 10, 53 등이 존재하지만, 거의 사용되지 않는 부분이기 때문에 생략하였다. 이렇게 다양한 기능을 제공하는 RAID이지만, 위에서 언급했던 것처럼 현재 가장 많이 사용되는 것은 RAID 0, RAID 1, RAID 0+1정도로 압축할 수 있다. RAID 본연의 목적이 서버나 웍스테이션에 적용하기 위함이었던 것처럼, 초기의 RAID 기술은 SCSI 장비를 이용하였지만, 현재 EIDE 장비의 발전과 함께 저가격, 고성능을 자랑하는 EIDE RAID 제품이 탄생하게 되었으며, 이러한 것들은 RAID 장비로서의 기능은 물론 메인보드의 칩셋에 영향받지 않고 한단계 빠른 EIDE 인터페이스를 사용할 수 있다는 장점을 제공하기도 한다.