none
결함허용(RAID : Redundant Array of Independent Disks)이란.. RRS feed

  • 일반 토론

  • - 개요
    80년대에는 hard disk의 용량이 제한적이었고, 용량이 큰 drive를 만들기 위해서는 많은 비용이 들었다. 따라서 가격적인 측면에서 비싼 단일 Drive 보다는 작고 값싼 drive를 묶어서 사용하는 방법이 제안되었다. 즉, 200MB의 hard disk보다는 50MB의 hard disk를 4개 묶어서 사용하는 방법이 가격적인 측면에서 보다 유리하다는 점을 이용하는 것이다.

    1987년 UC Berkeley의 David Patterson, Garth Gibson, Randy Katz가 'A Case for Redundant Arrays of Inexpensive Disks'라는 논문을 발표하므로서, data accessibility와 가격적인 장점을 가진 array들이 공급될 수 있게 되었다. RAID는 disk들이 묶이는 방식에 따라 Level로 나뉘어지며 performance와 Reliability를 고려하여 Level을 결정하게 된다.

    UC Berkeley의 연구자들은 당시 RAID 1에서 RAID 6까지 6단계로 나누었으나, 현재 제품들은 원래의 specification을 바탕으로 변형되어 구현되었다. 또한 Storage 기술의 발전으로 MB당 가격이 지속적으로 하락하였으므로 가격적인 면보다는 데이터 가용성 측면을 강조하기 위해 'Inexpensive'에서 'Independent'로 용어의 재정의가 이루어졌다.
     

    - 기본 개념
    보통 CPU나 Memory의 속도를 얘기할 때 ns(nano second) 단위를 사용한다. 이에 반해 hard disk의 속도 단위는 ms(mili second)이다. 이것은 1000배의 차이이며, 기계적인 장치가 전자장치에 비해 현격히 느림을 보여준다. 이러한 속도의 차이를 줄이기 위해서는 hard disk의 회전속도의 증가, 버퍼의 확장 등 다양한 방법이 구현되고 있으나 비용과 기술적인 측면에서 한계가 있다. 따라서 다음과 같은 방법으로 저장장치의 성능을 향상시키는 방법을 고려해 볼 수 있다.

    예를 들어 1 sector를 기록하는데 1초가 걸린다고 가정하면, 단일 디스크에서는 3 sector를 쓰기 위해서는 3초의 시간이 걸린다.
     
    이러한 과정을 세개의 동일한 디스크에 기록한다면, 3 sector를 각 disk에 1 sector씩 기록하면 되고, 이때 1sector를 기록하는데 1초가 걸리므로, 3 sector를 기록하는데 드는 총 시간은 역시 1초가 된다.
     
    이것이 RAID의 기본 개념으로서 3배의 성능을 내는 disk를 개발하는 것보다, 상대적으로 저렴한 disk를 세개 연결하여 사용하는 것이 비용적인 측면에서 더 우수하게 되는 것이다.

    이때 연속적인 data를 여러 개의 disk에 분산해 기록하고 읽어오는 절차가 부가적으로 필요하며, 아울러 분산되어 있는 데이터를 장애로 보호하기 위한 방법도 필요하게 된다.
    이러한 성능과 데이터의 안정성을 측면에서 RAID는 여러가지 Level로 분류된다. 각 Level은 계층적인 구조가 아니며 RAID 5가 RAID 0이 비해 더 우수한 구조라고 이해될 필요는 없는 것이다.

    ⼇ RAID 0
    가장 기본적인 구현방식으로 data striping이라고도 한다. 빠른 입출력이 가능하도록 여러 드라이브에 분산 저장하며, 여분의 정보를 기록하지 않기 때문에 성능은 매우 뛰어나지만 어느 한 드라이브에서 장애가 발생하게 되면 데이터는 손실된다.
     
    ⼇ RAID 1
    한 드라이브에 기록되는 모든 데이터를 다른 드라이브에 복사해 놓는 방법으로 mirroring 이라고도 한다. 복구능력을 제공하며 읽기에서는 성능의 향상이 있으나 쓰기 작업에서는 속도의 향상이 미미하다. 이 경우 어느 드라이브가 고장 나더라도 데이터의 손상은 일어나지 않으므로 속도와 안정성 측면에서 상당히 우수하지만, 단 두 대의 드라이브만으로 구현이 되기 때문에 큰 볼륨을 구현하기가 어려우며, 전체 공간의 50%의 용량만 데이터를 저장할 수 있으므로 단가가 비싼 측면이 있다.
     
    ⼇ RAID 2
    1988년 Berkeley 논문에서 제안된 level로서 기본적인 stripe array에 data 보호기능을 추가한 것이다. Hamming code를 이용해 Error check 및 보정을 하도록 되어있으나, 상업적으로 ECC를 지원하는 drive가 출시되지 않아 구현되지 않았다.

    ⼇ RAID 3
    RAID 0와 마찬가지로 Stripe를 이용하여 데이터를 저장하나, 에러의 check 및 수정을 위해 별도의 패리티 drive를 유지하는 것이 다른점이다. 한 드라이브에 패리티 정보를 저장하고 나머지 드라이브들 사이에 데이터를 byte 단위로 분산하므로 패리티 정보는 어느 한 드라이브에 장애가 발생했을 때 데이터를 복구할 수 있게 해 준다. 이 경우데이터가 저장되어 있는 드라이브에 장애가 발생되었을 경 우에는 복구가 가능하지만, 패리티가 저장되어 있는 드라이브에 장애가 발생했을 경우 문제를 발생시키는 단점이 있다. 속도에서는 XOR 연산 때문에 속도가 RAID 1 보다 저하되며 특히 쓰기 작업에서, parity 드라이브가 병목이 될 수 있다.

    RAID 3에서 parity가 결정이 되는 것은 다음과 같다. 먼저 그림과 같이 1번 드라이브에 135가 기록되고 나머지 드라이브에 순서대로 11, 96, 157이 기록되어진다고 가정한다.
     
    이들 숫자를 이진수로 계산한 후 even parity로 계산하여 Bit 7에 1의 숫자가 짝수이면 parity는 0, 홀수이면 1을 각각 채워넣으면 된다.  

    ⼇ RAID 4
    RAID 3와 유사한 형식으로서 2개 이상의 data disk와 고정 parity 드라이브를 가지고 있다. 그러나 RAID 3와 다른 점은 byte level이 아닌 block level로 구현되므로 stripe의 size가 커 작은 파일의 경우 하나의 stripe에서 읽어드릴 수 있다. 이것은 transaction과 같이 작고 동시다발적으로 일어나는 read 작업에서 좋은 성능을 나타낼 수 있다.

    ⼇ RAID 5 
    광범위하게 사용되는 RAID 방식으로 RAID 3, RAID4의 단점을 극복한 방식이다. 고정적인 parity 드라이브 대신 parity는 모든 disk에 분산되어 있다. 이러한 방식은 write 시 parity가 분산되어 쓰여지므로 병목을 줄여준다. 그러나 여전히 read, recalculate, parity 갱신과 같은 작업이 있기 때문에 속도는 느릴 수 밖에 없다. 읽기에서는 RAID 3와 동등하나 RAID 3가 parity 분산 알고리즘이 없는 관계로 sequential read에서는 더 우수하다.
     
    ⼇ RAID 6
    UC Berkeley 의 연구자들이 1989년에 제안한 방식으로서, RAID 5에서 한걸음 더 나아가 두개의 드라이브 장애시에도 데이터의 복구가 가능하도록 만든 방식이다. 즉, RAID 5는 하나의 parity 정보를 유지하는데 반해 RAID 6는 두개의 parity 정보를 유지하므로서 보다 신뢰성 있는 데이터의 보호를 제공한다. 읽기에서는 RAID 5와 큰 차이는 없으나, 쓰기 작업의 구현이 아주 복잡한 단점이 있다.

    ⼇ RAID 10
    (0+1) 기본적으로 striping과 mirroring의 혼합으로 RAID 0로 볼륨을 구성한 후 그 볼륨을 mirroring 하는 방식이다. RAID 1 구성시 드라이브의 크기 이상으로 용량을 확장할 수 없다는 단점과 RAID 0가 데이터를 보호하지 못한다는 점을 극복한 방식으로서, 읽기, 쓰기 작업 성능도 우수하다는 장점이 있으나 RAID 1과 마찬가지로 전체 용량의 50%만 사용할 수 있다는 점에서 비용이 비싼 방법이 된다.

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

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

    다음 표에서는 다양한 RAID 구현 사용의 장점과 단점을 보여 줍니다.

    RAID 구현 장점 단점

    Microsoft Windows 2000 이상 RAID-5 볼륨

    하드웨어 비용이 추가되지 않습니다.

    시스템 처리 리소스를 사용합니다.

    하드웨어 기반의 스트라이프

    프로세서 사이클을 사용하지 않습니다. 모든 RAID 구현 중에서 성능이 가장 뛰어납니다.

    특별한 하드웨어 비용이 추가됩니다.

    일반적으로 사용되는 RAID 솔루션은 여러 수준의 중복과 내결함성을 제공합니다.

    RAID 구현 장점 단점

    하드웨어 기반의 RAID 3, 5 또는 10

    성능이 뛰어납니다. 프로세서 사이클을 사용하지 않습니다.

    비용이 듭니다.

    하드웨어 기반의 RAID 1

    중복성이 우수합니다. 프로세서 사이클을 사용하지 않습니다.

    하드웨어 추가로 인해 추가 비용이 듭니다.

    하드웨어 기반의 RAID 10

    성능이 뛰어납니다. 중복성이 우수합니다.

    하드웨어 추가로 인해 추가 비용이 듭니다.

    Windows 2000 이상 미러 볼륨

    중복성이 양호합니다. 비용이 저렴합니다.

    시스템 처리 리소스를 사용합니다.

    Windows 2000 기반 RAID 5

    읽기 성능이 뛰어납니다. 비용이 저렴합니다.

    시스템 처리 리소스를 사용합니다.


    2006년 8월 31일 목요일 오후 4:24