IT 분야에 종사하는 사람들이라면 최소한 RAID 기술에 대해 한번씩은 들어본 적이 있을 것이다. RAID는 오래된 개념이지만 현재까지도 다양한 방식으로 새롭게 개발되거나 상용화돼 사용된다. 본 기고를 통해 기본적인 RAID 개념을 소개하고, 최근 RAID 기술의 경향과 향상된 기능들을 소개하고자 한다.
본론에 앞서 필자가 겪은 재미있는 에피소드를 잠깐 소개하고자 한다. 1997년, 당시에는 PC 통신의 한계를 넘어 인터넷이 거의 모든 PC 사용자들에게 새로운 대세로 전환되던 때였다. 이에 발빠른 한 방송국에서는 문제를 출제하고, 그 답을 인터넷 검색을 통해 빨리 맞추는 팀이 승리하게 되는 '인터넷 정보사냥'이라는 프로그램을 진행했다.
비용절감이냐, 데이터 보호냐
노먼 켄 오치는 1978년 'System for recovering data stored in failed memory unit(손상된 메모리에 저장된 데이터를 복구하기 위한 시스템)'으로 미국 특허를 받았다. 이 특허에서는 풀 스트라이프 쓰기(Full Stripe Write)로 정의되는 RAID 5와 RAID 1이라는 용어로 확립된 디스크 미러링 혹은 듀플렉싱 뿐만 아니라 RAID 4로 정의된 전용 패리티를 이용한 보호에 관해서도 언급했다.
이처럼 RAID는 약 30년 전으로 거슬러 올라가게 된다. 여기서 눈여겨볼 사항은 RAID의 목적에 대해 서로 다른 접근 방식을 가지고 있었다는 것이다. 즉, RAID라는 개념을 노먼 켄 Ouchi는 저장된 데이터 보호와 복구라는 측면에서, 나머지 3명의 박사들은 저렴한 전산 자원을 이용해 고성능의 저장 장치를 대체할 수 있는 방안으로 생각했다는 점에서 약간의 차이가 있었던 것을 알 수 있다.
서로 다른 방식으로 리던던시 제공하는 RAID
1988년 'A Case for RAID'에서 언급했던 RAID 종류에 대해 설명하고자 한다. 한 가지 유념할 것은 RAID 레벨의 숫자가 RAID의 성능을 의미하는 것은 절대 아니라는 것이다.
·RAID 0 : 스트라이핑
가장 쉽게 기억하는 방법은 RAID 0은 리던던시를 제공하지 못한다는 것이다. 디스크를 스트라이핑해서 성능을 향상시킬 수 있을지는 모르지만 단순 스트라이핑만 구성할 경우, 스트라이프로 구성돼 있는 디스크 중 어느 하나만 손실되더라도 모든 스트라이프는 손상되기 때문에 가용성을 보장하지 못한다. 즉, 데이터를 잃어버리게 된다. 몇몇 RAID 기관이나 관련 전문지 기고에서 RAID 0를 RAID의 기본 목적인 리던던시를 제공하지 못하기 때문에 RAID로 인정하지 않는 경우도 있다. 영화 '죽은 시인의 사회'에서 키팅선생(캡틴)이 시가 적힌 교과서를 찢는 것처럼 RAID 0는 잊어도 좋다.
·RAID 1 : 미러링
디스크에 있는 모든 데이터는 정확하게 다른 디스크에 복사된다. 저장 작업이 완료됐을 시점에는 두 개의 디스크에 완벽하게 데이터가 저장된다. 만일 하나의 디스크가 손상될 경우 파트너 디스크는 아무런 시스템 개입없이 계속 운영된다. RAID 1의 장점은 관리하기 매우 수월하고, 정상 운영 혹은 복구시 CPU 자원을 많이 사용하지 않는다는 것이다. 반면에 RAID 1의 단점은 가격이다. 정확하게 보호하고자 하는 디스크 용량의 2배가 필요하다.
·RAID 2 : 해밍 ECCcode error
RAID 2는 ECC(Error code correction) 메모리가 사용하는 디스크 데이터 검증 방식인 해밍 인코딩 방식을 사용한다. 현재까지 RAID 2를 적용한 상용 제품을 보거나 들은 적은 없다.
·RAID 3 : 가상 디스크 블록
RAID 3, RAID 4, RAID 5은 같은 방식에서 출발했다. 즉, 패리티에 기반을 둔 RAID라는 것이다. RAID 1처럼 모든 데이터의 복제본을 유지하는 것이 아니라 패리티 기반의 RAID는 하나의 디스크를 추가해, 데이터를 여러 디스크에 걸쳐서 저장하는 것이다. 추가된 디스크에는 다른 디스크에 저장된 데이터를 기반으로 해 XOR로 연산된 데이터 값을 저장한다. 만일 어느 디스크에 있는 데이터가 손상되면 그 값은 남아 있는 디스크들의 데이터를 가지고 복구할 수 있다. 이 방식은 RAID 1 방식이 100%의 디스크를 더 필요로 하는 것에 비해 훨씬 저렴하다. 그러나 디스크에 있는 데이터를 연산해야 하기 때문에 데이터를 저장하거나 디스크가 손상된 후 데이터 복구가 필요할 경우에 성능에 영향을 받는다. 상용화된 대부분의 패리티 기반 RAID는 이런 성능 상의 문제를 해결하기 위해 캐시 메모리를 사용하고 있다.
RAID 3에서는 모든 쓰기 작업은 RAID 어레이의 모든 디스크(대분분 4개 이상)에 걸쳐 스크라이프돼 저장된다. 모든 쓰기 작업은 모든 디스크에서 수행되기 대문에 어레이의 입장에서는 한 순간에 단지 하나의 데이터 블록만 저장할 수 있으므로, RAID로 인해 성능 저하가 발생할 수 있다. RAID 3의 성능은 쓰기 작업에 따라 달라질 수 있다. 작은 크기의 쓰기 작업은 성능 저하가 많이 발생할 수 있으며, 대용량의 순차 쓰기 작업은 더 나은 성능을 보여준다.
·RAID 4 : 전용 패리티 디스크
RAID 4는 다수의 데이터 디스크와 데이터 디스크로부터 생성된 패리티를 관리하는 전용 디스크로 구성된다. 패리티가 전용 디스크에만 저장되기 때문에 데이터용 디스크의 용량이 부족할 경우에, 새로운 데이터 디스크의 블록을 모두 '0'으로 지정하면, 사용하던 어레이의 RAID 셋에 상관없이 용량을 사용 중에도 확장할 수 있다. 그러나 모든 쓰기 작업은 반드시 패리티 디스크를 통해 수행되기 때문에 이 디스크가 전체 어레이의 쓰기 작업에 영향을 미치는 성능 상의 병목 지점이 될 수 있는 단점이 있다.
·RAID 5 : 스트라이프 패리티
RAID 5는 RAID 4 방식에서 패리티가 하나의 전용 디스크에 저장되는 것이 아니라, 어레이에 있는 모든 디스크에 분산돼 저장된다는 점만 빼고 동일하다고 할 수 있다. 패리티를 각각의 데이터 디스크에 분산시킴으로써 RAID 4에서 단점이라고 했던 패리티 디스크의 병목 현상을 줄일 수 있다. 그러나 RAID 5를 소프트웨어적으로 구현할 때 만일 디스크 작업에 15% 이상의 쓰기 작업이 발생할 경우, 성능은 급격히 저하될 수 있다.
최근에 출시되고 있는 하드디스크는 점점 대용량화되고 있다. 이것은 사용자의 데이터가 예전의 단순한 데이터베이스에서 멀티미디어, 이미지, 아카이빙 등의 대용량 데이터화되고 있는 추세에 발맞추기 위함이다. 또한 최근에는 데이터의 가치에 알맞도록 저장 장치의 위치를 다르게 할 수 있는 ILM(Information Lifecycle Management)도 사용자의 큰 관심사 중에 하나다.
이런 사용자의 요구 사항을 충족시키기 위해 업계에서는 비싼 광 채널 기반의 하드디스크보다는 대용량을 지원할 수 있는 SATA(Serial ATA) 하드디스크를 앞다퉈 출시하고 있다. SATA 디스크의 경우 단일 디스크로 250GB, 320GB 혹은 500GB까지 지원하고 있다. 하지만 대용량 디스크를 이용해 RAID를 구성할 경우, 저용량 디스크보다 물리적인 손상이 발생할 확률이 높아진다. RAID를 구성해 리던던시를 제공한다고 하더라도 물리적으로 하나의 디스크가 손상돼 재설치하는 중에, 그 RAID 그룹 안에 있는 또 다른 디스크가 물리적으로 손상될 확률 역시 높아지는 것이다. 동시에 2개의 디스크가 손상될 경우(글로벌 핫 스페어가 없고, 별도의 백업 정책을 수립하지 않았을 경우), 그 RAID 그룹 안에 저장된 모든 데이터는 불행히도 복구할 수 없다. 그래서 업계에서는 2개의 디스크에 동시에 장애가 발생하더라도, 데이터를 보호할 수 있는 이중 패리티(Dual Parity)를 지원하는 RAID를 출시하고 있다.
·RAID 6 : 이중 패리티
RAID 6는 RAID 5의 분산 패리티를 채용하고 있으며, 그 패리티를 이중으로 하고 있다. RAID 6에 있는 모든 디스크는 두개의 패리티 영역이 있으며, 각각 독립적으로 연산된다. RAID 6의 장점은 만일 2개의 디스크에 동시에 장애가 발생하더라도, RAID는 모든 데이터를 저장해 서비스를 제공할 수 있으며 복구할 수 있다는 것이다. 가장 큰 단점은 성능 저하가 발생한다는 것이다. RAID 5에 비해 거의 2배 정도의 저하가 발생한다고 볼 수 있는데, 이것은 2개의 패리티가 독립적으로 생성되기 때문이다. 또한 RAID 5에 비해 2개의 패리티를 저장해야 하기 때문에 하나의 디스크가 더 필요하며, 이는 추가적인 비용 부담을 의미한다.
·이중 RAID(RAID 10, RAID 0+1)
RAID에 대한 변형이라고 할 수 있는 이중 RAID 방식도 상당히 업계에서 많이 사용되고 있다. RAID 10의 경우는 RAID 0와 RAID 1을 혼합해 적용한 방식으로 RAID 1처럼 미러링을 실시한 후 그 데이터를 다시 스트라이핑하는 기법이다. 이에 반해 RAID 0+1은 RAID 0와 RAID 1을 혼합한 것은 동일하지만, 먼저 데이터를 스트라이핑 한후, 그 데이터를 미러링하는 방식을 취한다. 두 RAID 방식 모두 서로 간의 약점을 보완할 수 있는 방식을 채택하고 있다.
다양한 RAID 구현 방식
RAID 구현 방식은 전용 하드웨어에서 구현되는 하드웨어 방식과 일반 하드웨어에서 특정 소프트웨어를 이용해 구현하는 소프트웨어 방식이 있다. 또한 하드웨어 방식과 소프트웨어 방식을 함께 사용하는 하이브리드 RAID 방식도 있다. 다음에 설명할 방식은 현재 출시돼 있는 스토리지 시스템의 아키텍처나 다른 구성들을 고려하지 않은 순수한 RAID에 대한 설명이라는 것을 미리 밝혀둔다.
먼저 소프트웨어 방식에는 일반적인 드라이브 컨트롤러(IDE/ATA, SCSI, 혹은 파이버 채널)를 통해 운영체제가 디스크 어레이를 관리한다. 현재 CPU의 처리 속도를 고려해, 다른 작업에 사용돼야 할 CPU 자원을 사용해 RAID를 관리한다고는 해도, 소프트웨어 RAID는 하드웨어 RAID보다 빠를 수 있다. 하드웨어 방식과 한가지 큰 차이가 있다면, 하드웨어적인 RAID 구현 방식은 OLTP 데이터베이스와 같은 애플리케이션의 처리 속도를 향상시킬 수 있도록 설계된 쓰기 전용 캐시와 함께 연동된다는 것이다. 이 경우 하드웨어 RAID 방식은 쓰기 전용 캐시에 저장된 데이터를 안전하게 스토리지 저장 공간으로 이동시켜 데이터를 보호한다. 소프트웨어 RAID의 단점은 손상된 디스크와 부트 영역에 할당된 디스크에 따라서, 어레이가 리빌딩되고 나서야 컴퓨터가 재시동될 수 있다는 것이다.
하드웨어 RAID 방식은 최소한 전용 RAID 컨트롤러를 필요로 한다. 데스크탑 PC에서는 PCI 확장 슬롯에 장착되는 카드가 될 수도 있고, 메인보드에 그 기능이 포함돼 있는 빌트 인(built in) 형태를 취하기도 한다. 규모가 큰 RAID 환경에서는 일반적으로 컨트롤러와 디스크는 다수로 구성돼 있는 외장 캐비닛에 장착되곤 한다. 디스크는 IDE, ATA, SATA, SCSI, 파이버 채널 혹은 서로 혼합된 구성이 될 수도 있다. 컨트롤러는 서버에 한 개 혹은 다수의 SCSI, 광 채널 혹은 iSCSI를 통해 직접 또는 패브릭을 통해 연결된다. 이 컨트롤러는 디스크 관리와 패리티 연산을 수행한다.
하드웨어 RAID는 일반적인 디스크 드라이브보다는 빠른 속도를 지원하며, 특히 스토리지 시스템의 RAM 속도, 캐시가 다른 컨트롤러에 이중화되는 비율, 캐시 양, 그리고 캐시에서 디스크로 데이터가 이동되는 속도에 의해 달라진다. 따라서 배터리로 백업되는 캐싱 디스크 컨트롤러는 고성능의 데이터베이스 서버 처리에 알맞다고 할 수 있다. 일반적으로 하드웨어 RAID 구현 방식은 시스템 운영 중에 손상된 드라이브를 교체할 수 있다. 극히 드문 경우에 하드웨어 컨트롤러 손상에 의한 데이터 손실이 발생하기도 한다.
하이브리드 RAID 방식은 저렴한 하드웨어 RAID 컨트롤러의 도입으로 점점 더 많은 관심을 받고 있다. 하이브리드 RAID 방식은 하드웨어는 RAID 기능이 없는 일반적인 디스크 컨트롤러와 사용자가 부팅시에 BIOS를 통해 RAID를 셋업할 수 있는 애플리케이션으로 구성된다.
하드웨어 방식과 소프트웨어 방식은 모두 손상된 드라이브를 즉각적으로 교체해 사용할 수 있도록 미리 설치돼 있는 핫 스페어를 지원한다. 이것은 시스템 점검과 수리에 필요한 시간을 절감할 수 있으며, 같은 RAID에서 또 다른 드라이브의 손상으로 인한 데이터의 손실을 예방할 수 있다.
지금까지 RAID의 역사, 구현 방법과 특성까지 기본적인 사항에 대해 알아봤다. 앞서 언급했듯이 RAID는 초기에는 고가의 디스크를 대체하기 위한 저가의 디스크를 연결해 사용하는 비용 효과적인 목적에서 출발해 저장된 데이터를 보호하는 기능을 제공하는 동시에, 서버에서 운영되는 애플리케이션의 성능을 향상시키기 위해 사용되고 있다. 다음 호에서는 서버에서 운영되는 애플리케이션에 알맞은 RAID를 비교 설명하도록 하겠다.
작성자 : 김성태 | 넷앱코리아 기술영업부 차장
출판일 : 2006년 2월호
'Scrapbook > 개발 및 프로그래밍' 카테고리의 다른 글
생성자(Constructor) (0) | 2006.04.04 |
---|---|
Visual Syudio .NET 2003 C++ 컴파일 에러 처리법(콘솔) (0) | 2006.03.30 |
ASP에서 이미지 파일을 보호하는 방법 (0) | 2004.08.24 |
ServerXMLHTTP의 인코딩 문제 (0) | 2004.08.06 |
[SQL Server] EM에서 예약작업/일정시간에 자료 업데이트 (0) | 2004.07.27 |