성능과 안정성을 향한 디스크 스토리지의 진보
박재곤 기자
컴퓨팅이 ‘계산’이란 의미로 받아들여지던 시절에 스토리지는 그저 보조기억장치에 불과했다. 하지만 컴퓨팅에서 데이터가 차지하는 비중이 커지면서 스토리지는 컴퓨팅의 핵심 요소 중 하나로 자리잡았다. 하지만 스토리지가 아무런 기술 발전없이 그냥 현재의 위상을 갖게 된 것은 아니다. 그리고 디스크 스토리지 시스템은 스토리지가 단순 저장장치에서 컴퓨팅 요소로 부상하는 계기를 마련했다고 평가할 수 있다.
디스크 스토리지는 말 그대로 하드디스크 기반의 저장 장치를 말한다. 일반 사용자의 PC에 있는 하드디스크가 대표적인 디스크 스토리지다. 다양한 저장장치 중에서 디스크 스토리지는 다른 저장장치에 비해 빠른 속도와 안정성 등으로 모든 시스템의 주력 저장장치로 자리잡고 있다.
디스크 스토리지도 용량과 속도, 안정성 등에서 눈부신 발전을 하고 있다. 일반 사용자들에게도 친숙한 예를 들면, 1990년대 초에 한창 인기를 얻은 PC인 286 AT의 하드디스크는 보통 20MB~40MB 정도였다. 이러던 것이 90년대 말 펜티엄III급 PC에서는 10GB, 현재의 최신 PC에서는 200GB~300GB 정도의 하드디스크가 사용되고 있다. 속도 또한 5400RPM에서 7200RPM으로, 그리고 현재는 1만 RPM 제품이 보급되고 있다.
하지만 이런 하드디스크 자체의 용량과 성능 향상 만으로는 디스크 스토리지에 대한 성능과 용량, 안정성의 요구를 모두 수용할 수는 없다. 일반 PC의 하드디스크라면, 최신 하드디스크 한두 개로 이런 요소를 모두 만족시킬 수 있겠지만, 수백, 수천 명이 사용하는 서버의 디스크 스토리지라면, 그리고 수백, 수천명이 사용하는 서버 수십, 수백 대가 사용하는 디스크 스토리지라면 사정이 달라진다.
스토리지의 시스템화
디스크 스토리지에 대한 용량과 성능, 안정성에 대한 요구가 높아지면서 디스크 스토리지는 서서히 시스템으로 발전하기 시작했다. 디스크 서브시스템으로 알려진 것이 바로 그것으로, 이것은 여러 대의 디스크를 모아서 하나의 단일 시스템을 만드는 개념이다.
파일 서버와는 달리 디스크 서브시스템은 하드디스크 서버의 개념으로 설명할 수 있다. 서버들은 고유의 인터페이스를 통해 접속 포트를 통해 디스크 서버시스템에 연결되는데, 이때 서버들은 디스크 서브시스템을 완전히 하나의 하드디스크처럼 인식한다.
디스크 서브시스템은 서버와는 분리된 별도의 시스템으로 구성돼 SCSI나 파이버채널 등의 인터페이스를 통해 단일 서버 또는 여러 대의 서버와 연결된다(그림 1). 디스크 서브시스템의 핵심은 바로 컨트롤러다. 여러 개의 접속 포트를 통해 들어오는 요청에 따라 디스크 서브시스템 내의 하드디스크를 제어해 필요한 데이터를 서버로 전송해주는 역할을 하기 때문이다(그림 2).
디스크 서브시스템은 JBOD(Just a Bunch of Disks)와 비교하면 그 특징이 분명해진다. JBOD는 말 그대로 하드디스크들을 다발로 모아놓은 것이다. 시스템이라고는 하지만 내부에 별도의 컨트롤러나 캐시가 없고, 접속 포트 또한 한 개 뿐이다. 때문에 장착할 수 있는 하드디스크의 수에도 제한이 있고, JBOD에 연결된 서버는 각각을 독립된 여러 개의 하드디스크로 인식한다. JBOD는 입출력과 전원공급 등을 하나의 엔클로저에 통합함으로써 여러 대의 하드디스크를 서버마다에 흩어놓는 것보다는 관리가 용이한 장점이 있다.
현재 디스크 서브시스템은 장착된 컨트롤러에 따라 3가지 정도로 나눌 수 있다. 우선 컨트롤러가 없는 JBOD가 그 첫 번째 단계이고, 두 번째는 뒤이어 설명할 RAID 컨트롤러를 장착한 시스템이다. 그리고 여기서 한단계 더 진보한 디스크 서브시스템은 RAID 기능 외에 실시간 복사나 원격지 미러링, LUN 마스킹 등의 기능을 제공한다.


성능 용량 안정성 삼박자 갖춘 RAID
디스크 스토리지 시스템이 날로 높아져가는 디스크 스토리지에 대한 성능과 용량, 안정성의 요구를 어떻게 만족시키는가는 RAID를 통해 이해할 수 있다.
RAID(Redundant Array of Inexpensive Disks)는 여러 개의 값싸고 용량이 적은 하드디스크를 모아 논리적으로 하나의 대형 디스크 드라이브처럼 사용하거나 혹은 장애 발생 시 데이터를 안전하게 복구할 수 있도록 하는 장비다.
RAID는 1987년 버클리 대학의 데이비드 패터슨, 가스 깁슨, 랜디 카츠가 SIGMOD에서 ‘A Case for Redundant Array of Inexpensive Disks’라는 논문을 발표하면서부터 관심을 모으게 됐다. 이 논문은 데이터와 패리티 정보를 디스크에 배치하는 방법에 따라 디스크 어레이를 분류했으며, 이것은 나중에 RAID 레벨이라고 불리게 됐다.
RAID의 목적은 크게 세 가지로 볼 수 있다. 첫째는 여러 개의 디스크 모듈을 하나의 대용량 디스크처럼 사용할 수 있도록 하는 것이고, 두번째는 여러 개의 디스크 모듈에 데이터를 나누어서 한꺼번에 쓰고 한꺼번에 읽는 식으로 입출력 속도를 높인다는 것이다. 마지막으로 여러 개의 디스크를 모아서 하나의 디스크로 만들었으니, 그 중 하나 혹은 그 이상의 디스크에 장애가 나더라도 최소한 데이터가 사라지는 것은 방지하자는 것이다.
RAID 시스템 가운데 어떤 것은 시스템을 끄지 않고서도 몇 가지 작업을 할 수 있는 주요 기능을 지니고 있다. 먼저 ‘핫 애드(hot add)’가 있다. 이 기능을 이용하면 시스템을 켠 상태에서 어레이 내에 있는 디스크를 추가할 수 있다. 그리고 ‘핫 스왑(hot swap)’ 기능을 이용하면 시스템이 작동중에도 문제가 생긴 디스크를 다른 디스크로 교체할 수 있다. ‘핫 스페어(hot spare)’는 배열 내에 한 개 이상의 디스크를 예비 디스크로 지정할 수 있는데, 이렇게 하면 손상된 디스크의 데이터가 예비 디스크에 자동으로 복사된다. 이 기능은 서버를 지속적으로 관리하기 어려운 곳에서 사용하기에 적합하다.
일부 RAID 장치는 동적인 확장(dynamic expansion)으로 알려져 있는 ‘핫 RAID 레벨 변환’ 기능도 가지고 있다. 이것은 가령 RAID 레벨 1 시스템의 용량이 다 됐을 때 즉석에서 RAID 5 시스템으로 환경을 재설정해 부족한 디스크 공간을 메워주는 기능이다.
하드디스크는 질과 성능이 크게 향상되긴 했지만, CPU를 비롯한 다른 요소들의 발전으로 하드디스크는 아직도 컴퓨터 시스템 가운데 가장 취약한 부분으로 남아 있다. 때로는 회복이 불가능할 정도로 손상되기도 한다. 그리고 네트워크에서 병목현상이 가장 심하게 일어나는 부분도 바로 하드디스크다. RAID 시스템은 그런 하드디스크의 결함을 비교적 저렴한 비용으로 해결할 수 있는 솔루션이다.
예전에는 채널당 여러 개의 하드디스크를 장착할 수 있는 SCSI 방식을 인터페이스로 많이 사용했지만, 최근에는 로우엔드는 ATA 방식을, 하이엔드는 파이버채널 인터페이스를 주로 채용하고 있다.
RAID 레벨별 이해
이같은 RAID에는 몇 가지 종류가 있다. RAID 레벨이라고 하는 것이 그것인데, RAID-0, RAID-1 이런 식으로 뒤에 번호가 붙는다. RAID 레벨에는 0부터 7까지가 있고 이들을 조합한 것이 몇 가지가 있다. 버클리 대학의 연구팀은 RAID를 여섯개의 레벨로 분류했으며, RAID의 각 레벨은 서로 다른 용도를 위해 최적화된 시스템을 구현할 수 있다.

·RAID 0(stripping)
RAID 0은 데이터의 빠른 입출력을 위해 데이터를 여러 드라이브에 분산 저장한다. 데이터의 복구를 위한 추가 정보를 기록하지 않기 때문에 성능은 뛰어나지만, 어느 한 드라이브에서 장애가 발생하면 데이터는 모두 손실된다. 실제로 RAID 0만으로 구성된 스토리지는 주변에서 찾기 쉽지 않다.
· RAID 1(mirroring)
빠른 기록 속도와 함께 장애 복구 능력이 요구되는 경우에 사용되며, 2대의 드라이브 만으로도 구성할 수 있다. RAID 1은 한 드라이브에 기록되는 모든 데이터를 다른 드라이브에 복사해 놓는 방법으로 복구 능력을 제공한다. RAID 1은 하나의 드라이브를 사용하는 것에 비해 약간 나은 정도의 성능을 제공한다. 읽을 때는 조금 빠른 속도를 제공하지만, 저장할 때는 속도가 약간 느려진다. 하지만 ECC를 계산하지 않기 때문에 RAID 4나 5보다는 빠르다. 두 개의 디스크에 데이터가 동일하게 기록되므로 데이터의 복구 능력은 높지만, 전체 용량의 절반이 여분의 데이터를 기록하기 위해 사용되기 때문에 저장용량당 단가가 비싸다.
· RAID 2
RAID 2는 ECC 기능이 없는 드라이브를 위해 해밍(hamming) 오류정정코드를 사용하는 방식이다. SCSI 디스크 드라이브는 기본적으로 에러검출능력을 갖고 있기 때문에 SCSI 디스크 드라이브를 사용할 경우에는 사용하지 않는다. 또한 RAID 3에 비해 장점이 없기 때문에 거의 사용되지 않는다.

· RAID 3
RAID 3은 한 드라이브에 패리티 정보를 저장하고, 나머지 드라이브들 사이에 데이터를 바이트 단위로 분산한다(Block Striping: 전용 패리티를 이용한 블록 분배). 만약 하나의 드라이브에 문제가 생기면, 컨트롤러가 전용 패리티 드라이브로부터 문제가 생긴 드라이브의 손실된 데이터를 가져와 복구/재생한다. RAID 3은 RAID 4와 유사하나 바이트 단위의 분산 저장을 경제적으로 수행하기 위해 하드웨어적인 지원이 요구되며 효율적인 동작을 위해 동기 가능한(synchronized-spindle) 드라이브를 사용해야 한다. 입출력 작업이 동시에 모든 드라이브에 대해 이루어지는 RAID 3은 입출력을 겹치게 할 수 없기 때문에 대형 레코드가 많이 사용되는 업무에서 단일 사용자 시스템에 적합하다.

· RAID 4(parity)
RAID 4는 한 드라이브에 패리티 정보를 저장하고 나머지 드라이브 사이에 데이터를 블럭 단위로 분산하는 방식이다. 패리티 정보는 어느 한 드라이브에 장애가 발생했을 때 데이터를 복구할 수 있게 한다. RAID 4는 데이터를 읽어들일 때 RAID 0에 필적하는 우수한 성능을 보이나, 저장할 때는 매번 패리티 정보를 갱신하기 때문에 추가적인 시간이 필요하다. 실제적으로는 작고 랜덤하게 기록할수록 느리며, 크고 순차적인 기록을 행할 때는 속도 저하가 거의 없다. 여러 드라이브들 중에서 한대의 드라이브만 여분의 패리티 정보를 기록하는데 사용되기 때문에 RAID 4의 용량당 비용은 그리 높지 않다.
또한 데이터 디스크와 패리티 디스크가 독립적이기 때문에 볼륨을 확장할 때 별도의 데이터 백업과 복구 과정을 거치지 않는 유연성을 제공한다. 하지만 하나의 디스크 장애에 대해서는 완벽하게 대처할 수 있지만, 두개 이상의 디스크에 장애가 발생할 경우에는 데이터 손실이 발생한다. 또한 패리티 디스크에 병목 현상이 발생해 전체 스토리지의 성능 저하를 가져올 수 있다는 것이 단점이다.
· RAID 5(distributed parity)
RAID 5는 패리티 정보를 모든 드라이브에 나눠 기록한다. 따라서 문제가 발생할 경우, 컨트롤러가 정상적으로 운영되고 있는 다른 드라이브로부터 손실된 데이터를 가져와 복구/재생한다. 패리티를 담당하는 디스크가 병목현상을 일으키지 않기 때문에 RAID 5는 멀티프로세스 시스템과 같이 작은 데이터 기록이 수시로 발생할 경우 더 빠르다. 하지만 읽기 작업일 경우 각 드라이브에서 패리티 정보를 건너뛰어야 하기 때문에 RAID 4보다 느리다.
작고 랜덤한 입출력이 많은 경우 더 나은 성능을 제공하며, 빠른 기록속도가 필수적이지 않다면 일반적인 다중 사용자 환경을 위해 가장 좋은 선택이다. 그러나 최소한 3대, 일반적으로는 5대 이상의 드라이브가 필요하다.
RAID 4와 마찬가지로 두개 이상의 디스크에 장애가 발생할 경우에는 데이터 손실이 발생하며, RAID 4가 제공하는 볼륨 확장의 유연성도 제공하지 못한다. 하지만 현재 가장 많이 사용되는 RAID 방식이다.

· RAID 6
RAID 5와 비슷하지만, 다른 드라이브들 간에 분포되어 있는 2차 패리티 구성을 포함함으로써 매우 높은 장애 대비 능력을 제공한다. RAID 6를 채택한 상용 디스크 어레이는 찾아보기 힘들다.
· RAID 7
이 형식은 컨트롤러에 내장된 실시간 운영체계를 사용하며, 속도가 빠른 버스를 통한 캐시, 독자적인 컴퓨터의 여러 가지 특성을 포함하고 있다. RAID 7을 상용 제품에 적용한 업체는 한 곳에 불과하다.

· RAID 0+1(Striping &Mirroring)
RAID 0+1은 RAID 0의 빠른 속도와 RAID 1 의 안정적인 복구 기능을 합쳐 놓은 방식이다. 최소 4대의 디스크로 구성되는 방식으로서, 데이터가 입력되면 스트라이핑 방식으로 두 개 이상의 디스크에 나눠서 저장하며 동시에 같은 형태로 다른 하드디스크에도 동일하게 저장된다.4개의 디스크로 RAID 0 + 1 방식으로 구성하면 2개의 디스크로 스트라이핑할 때와 같은 쓰기 속도가 나오며 읽기 속도는 4개의 디스크에서 나눠서 읽어오기 때문에 보다 빠른 속도를 갖게 된다. 그리고 미러링으로 똑같은 디스크 복사본을 갖고 있기 때문에 장애가 발생했을 때도 완벽한 복구가 가능하다. 월간 온더넷 2006년 9월호

댓글을 달아 주세요