RAID란 무엇인가?

IT업계에 종사하는 사람 중에 RAID (Redundant Array of Independent Disks)라는 말을 들어보지 못한 사람은 그리 많지 않을 것 같다. RAID는 특정 제품이나 상품명은 아니다. 하지만 스토리지 혹은 어레이라고 부르는 제품중에 RAID기술을 적용하지 않은 제품은 단 한 개도 없을 정도로 널리 사용되다 보니 이러한 제품 자체를 RAID라고 부르는 경우도 종종 있다. RAID는 원래 1988년 미국의 U.C. Berkely의 컴퓨터공학과에서 발표한 논문으로부터 시작된 전산학 개념중의 하나이다. 과거 대용량 디스크가 엄청나게 비쌌던 시절에, 값싼 저용량 디스크를 여러 개 묶어서 하나의 대용량 디스크처럼 쓰고자 하는 기술로 출발한 것이 RAID이다. 스토리지 업체 뿐만 아니라 웬만한 OS에서도 그것이 하드웨어 방식이건 소프트웨어 방식이건 RAID는 기본적으로 제공하는 기술이다. 과거에 비하여 100GB이상의 대용량 디스크가 가정에서도 쉽게 사용되고 있는 현대 시대에도 RAID는 필요하다. 스토리지에서 흔히 사용되는 테라바이트 단위의 정말로 대용량이 필요한 곳에는 없어서는 안될 기술이 바로 RAID이다. 단적으로 1TB짜리 디스크 모듈은 지구상에 존재하지 않는걸 봐도 그렇지 않은가. 사실 RAID를 논한다는 것은 대단히 기술적인 문제이고 아무리 쉽게 이야기를 하고 싶어도 어쩔 수 없이 어느 정도는 골치 아픈 용어와 익숙치 않은 개념 들을 사용할 수 밖에 없는, 별로 재미 없는 주제이긴 하지만 한번만 머리 아프면 IT업계에 종사하는 사람들에겐 여러 곳에서 아는 척(?)할 수 있는 유용한 개념중의 하나이기도 하므로 하품은 조금 뒤에 하기로 하고 수박 겉핥는 식으로라도 한번 알아보기로 하자.

RAID의 목적은 크게 세가지라고 볼 수 있다. 첫째는 서두에 밝힌 바와 같이 여러 개의 디스크 모듈을 하나의 대용량 디스크처럼 사용할 수 있도록 한다는 것, 두번째는 여러 개의 디스크 모듈에 데이터를 나누어서 한꺼번에 쓰고 한꺼번에 읽는 식으로 IO속도를 높인다는 것, 마지막으로 여러 개의 디스크를 모아서 하나의 디스크로 만들었으니 그중 하나 혹은 그 이상의 디스크에 장애가 나더라도 최소한 데이터가 사라지는 것은 방지하자는 것이 그 목적이라고 할 수 있다. 이러한 RAID에는 몇 가지 종류가 있다. RAID 레벨이라고 하는 것이 그것인데 RAID-0, RAID-1 이런 식으로 뒤에 번호가 붙는다. RAID 레벨에는 0부터 7까지가 있고 이들을 조합한 것이 몇 가지가 있는데, 모두 설명하자면 정말 이 페이지를 바로 지나쳐 버릴지도 모르므로 실제로 업무 환경에서 사용되고 제품에 적용되는 몇 가지만 간단하게 알고 넘어가자.

RAID-0

두번째 목적에서 언급한 것처럼 여러 개의 디스크 모듈에 데이터를 분산 저장하는 기술을 스트라이핑(striping)이라고 한다. RAID-0는 단순한 스트라이핑이다. 10개의 100GB용량의 디스크를 하나의 1TB디스크로 묶어서 RAID-0를 적용할 수 있다. 10GB짜리 파일 하나를 1개의 디스크에 저장하는 것보다는 10개의 디스크에 동시에 나누어 저장하고 한꺼번에 읽어들이는 것이 빠르다는 것은 직감으로도 알 수 있으리라. 얼핏 보면 10배 빠를 것 같기도 하다. 다섯번째 디스크에 장애가 난다면….? 10개 디스크에 저장된 모든 데이터는 지구상에서 사라진다. 이것이 RAID-0이다. 실제로 RAID-0만으로 구성된 스토리지는 주변에서 찾기 쉽지 않다. 어지간한 강심장이 아니라면 RAID-0만으로는 사용하지 않는다고 보면 된다. 단, 이후에 설명하는 모든 RAID레벨은 기본적으로 RAID-0를 포함한다고 보면 된다. 데이터를 분산 저장한다는 개념은 누가 보아도 명백히 훌륭하기 때문이다.


그림 1. RAID-0의 데이터 저장 방식

RAID-1

그렇다면 어떻게 해야 디스크 모듈의 장애로 인하여 데이터가 사라지는 경우를 막을 수 있을까. 이것을 연구한 것이 RAID-0를 제외한 모든 종류의 RAID가 고민하는 부분이고 각각 다른 접근 방식을 택하고 있다. 가장 단순하면서도 가장 강력한 방법이 RAID-1이다. RAID-1은 미러링(mirroring)이라고도 하는데, 말 그대로 완전히 동일한 내용의 디스크 모듈을 두개씩 가져가는 것이다. 100GB디스크 모듈 10개로 500GB의 대용량 디스크를 만들 수 있다. 각 모듈이 두개씩 한쌍이 되기 때문에 실제 가용량은 반밖에 되지 않는다. 이것이 RAID-1의 단점이다. 원하는 만큼의 용량을 구성하고자 할 때 가장 돈이 많이 든다는 것이다. 어떤 디스크에 장애가 나도 데이터는 멀쩡히 살아 있게 된다. 단, 하나의 쌍으로 이루어진 디스크 두개가 동시에 장애가 난다면 역시 속수 무책이다.


그림 2. RAID-1의 데이터 저장 방식

RAID-4

RAID-1은 너무 비싸다. 디스크를 반밖에 사용하지 못한다니… 너무 아깝다는 생각이 들지 않는가. 그래서 연구해낸 것이 패리티(Parity)라는 것이다. 각 디스크에 데이터를 분산 저장할 때 저장되는 데이터들을 특정 연산을 한 결과값이 패리티 데이터인데, 이러한 패리티 데이터를 별도의 패리티 디스크에 저장하는 것이 RAID-4이다. 데이터 디스크와 패리티 디스크가 독립적이기 때문에 볼륨을 확장할 때 별도의 데이터 백업과 복구 과정을 없앨 수 있는 유연성을 가지고 있는데 이것이 RAID-4의 최대 장점이다. 하지만 문제는 한 개의 디스크 장애에 대해서는 완벽하게 대처할 수 있지만 동시에 두개의 디스크에 장애가 나면 데이터가 손실된다. 왜 그럴 수 밖에 없는가는 계속 숫자 이야기를 해야 하기 때문에 자세히 설명 하지는 않겠다. 또 하나의 문제는 패리티 디스크에 병목 현상이 발생할 소지가 매우 많고 이로써 전체 스토리지의 성능 저하를 가져온다는 것이 가장 큰 단점인데, 이 병목 현상을 근본적으로 해결하는 원천 기술을 보유한 네트워크 어플라이언스(Network Appliance, 이하 넷앱)를 제외한 다른 스토리지 업체들이 RAID-4를 채택하지 못하는 이유가 여기에 있다. 이 병목현상만 없앨 수 있다면 RAID-4는 가장 장점이 많은 RAID방식이라고 할 수 있다.


그림 3. RAID-4의 데이터 저장 방식

RAID-5

RAID-4의 병목현상을 해결하기 위하여 나온 것이 RAID-5이다. 별도의 패리티 디스크를 가지고 있지 않고 모든 패리티 데이터를 데이터 디스크에 분산 저장하는 것이다. 이렇게 하면 패리티 디스크 자체가 없기 때문에 패리티 디스크로 인한 병목 현상 자체도 없어지는 것은 당연하다. 하지만 동시에 두개의 디스크에 장애가 나면 데이터를 손실하는 문제는 여전히 가지고 있고 더군다나 RAID-4가 가지고 있는 볼륨 확장의 유연성은 사라진다. 디스크를 추가할 때 모든 데이터에 대한 패리티 데이터를 다시 연산하여 재기록 해야 하기 때문이다. 하지만 현재까지는 세계적으로 가장 많이 사용되는 RAID레벨이기도 하다.


그림 4. RAID-5의 데이터 저장 방식

RAID-DP

이번 연재에서 주제로 삼은 것이 바로 RAID-DP이다. DP는 이중 패리티(Dual Parity)의 약자인데, RAID-DP라는 것은 원래의 RAID논문에 나온 공개되어 있는 개념이 아닌 넷앱이 독자적 기술로 개발하여 이번에 새로 발표한 기술이다. RAID-DP는 기본적으로 RAID-4가 가지는 모든 장점을 그대로 가져간다. RAID-DP가 RAID-4를 기반으로 만들어졌기 때문이다. 이중 패리티라는 말 자체가 알려주듯이 패리티를 이중으로 가져간다는 것이다. 좀 더 정확히 말하면 패리티 디스크가 하나의 RAID그룹에 두개가 들어간다. 그렇다면 두개의 디스크에 장애가 발생해도 데이터는 멀쩡히 살아 있을 수 있다. 한 개의 디스크에 장애가 생기면 RAID-4나 RAID-5에는 보통 여유분의 디스크인 스페어 디스크(Spare Disk)가 있기 때문에 자동으로 이 스페어 디스크에 기존의 데이터 정보를 기초로 한 패리티 연산을 통하여 그대로 원래의 데이터를 100% 살려 낼 수 있다. 문제는 이 데이터를 살려 내는 그 시간 동안 또 다른 디스크가 장애가 나는 최악의 사태가 흔하지는 않지만 발생은 한다는 것이다. 더군다나 요즘처럼 해가 갈수록 단위 디스크 모듈의 크기가 날로 증가하는 추세에 있어서 이러한 데이터 재생 시간도 비례해서 증가하게 된다. 단순한 확률적인 계산으로 따지면 RAID-DP는 RAID-5에 비하여 70만배정도 안정성이 향상된다. 물론 어디까지나 확률적인 문제이긴 하지만. 자, 그럼 여기서 한가지 의문이 생긴다. 일반적으로 대용량의 볼륨은 몇 개의 RAID그룹으로 나뉘게 된다. RAID 4의 예를 들면, 파이버채널 기반의 스토리지를 기준으로 데이터디스크 7개+패리티디스크 1개의 8개 디스크를 하나의 RAID그룹으로 묶는 것이 일반적이다. 여기에 RAID-DP를 적용하면 데이터디스크 6개+패리티디스크 2개가 되므로 결국 디스크 한 개의 용량만큼 가용량이 줄어들게 된다. 정말 그럴까? 그렇지 않다. RAID-DP를 적용할 시에는 데이터디스크 12개+패리티디스크 2개를 하나의 RAID그룹으로 묶는 것이 권장 사항이다. 그렇다면 결국 가용할 수 있는 데이터 공간은 동일하고 안정성은 훨씬 향상되는 두마리 토끼를 동시에 잡을 수 있게 된다.

RAID-DP를 적용해야 할까?

그렇다면 지금 사용하고 있는 스토리지에 RAID-DP를 바로 적용해야 할까? 지금까지도 잘 쓰고 있었는데 갑자기 RAID 레벨을 바꾸는게 좀처럼 쉽지 않을텐데… RAID-1을 사용하다가 RAID-5로 바꾼다면 볼륨 전체의 데이터를 백업 한 후에 해당 볼륨을 파괴하고 RAID-5로 다시 재구성 한 후에 데이터를 복원시키는 "엄청난" 작업이 필요하다. 물론 반대의 경우도 마찬가지이다. 그 동안에 서비스가 중지되어야 함은 물론이거니와 이러한 작업을 좋아하는 운영자는 아무도 없을 것이다. 넷앱의 제품을 사용한다면(RAID-DP는 넷앱의 고유 기술이니까) RAID-4를 사용하고 있을것이다. RAID-DP를 사용하고자 한다면 OS가 DataONTAP 6.5인지 확인해야 한다. 만약 그렇다면 데이터의 백업과 복구, 볼륨의 파괴와 재 생성, 서비스의 중단과 같은 만나고 싶지 않은 일들은 결코 일어나지 않는다. 볼륨의 RAID만 RAID-DP로 바꿔주는 명령 한 줄이면 바로 RAID-DP로 바뀌게 된다. 어떤 이유에서건 RAID-DP에서 RAID-4로 돌아가는 일 또한 같은 과정을 밟는다. 물론 이중 패리티가 저장될 디스크 여유분이 있어야 함은 물론이다.

RAID-DP와 2차 스토리지

2차 스토리지라는 것은 테이프 라이브러리나 주크박스와 같은 용량 대비 저렴한 저장 매체의 단점, 즉 속도의 문제를 해결하기 위하여 대안으로 나온 디스크 기반의 백업 솔루션이다. 보통 우리가 스토리지라고 부르는 것을 1차 스토리지라고 한다면 2차스토리지와 1차스토리지의 가장 큰 차이점은 가격을 낮추기 위하여 파이버 채널 디스크나 SCSI디스크 대신에 ATA디스크를 사용한다는 것이다. 파이버채널 디스크가 144GB모듈까지 나온데 비하여 ATA디스크는 320GB모듈까지도 사용하고 있다. 이렇게 단위 디스크 모듈이 커지는게 문제다. 용량면에서는 대단히 이익인건 틀림없는 사실이지만 앞에서도 언급했듯이 디스크 모듈에 장애가 발생했을 때 데이터 재생 시간이 오래 걸린다는 것이다. 데이터 재생이 다 마치기 전에 또 하나의 디스크에 장애가 난다면 데이터가 모두 사라진다는데에 문제가 있다. 대부분이 ATA디스크를 사용하는 2차 스토리지는 성능보다는 안정성을 최우선으로 생각한다. 그렇다면 RAID-1을 사용하면 되지 않을까. 이것은 2차 스토리지를 사용하는 이유에 근본적으로 위배된다. 가격이 비싸지기 때문이다. RAID-5를 사용하면 어떨까. 지금까지는 선택의 여지가 없었다. RAID-DP를 적용한다면 가격과 안정성 모두를 만족시킬 수 있게 될 것이다.

RAID-DP의 동작 원리

RAID-DP의 동작 원리를 살펴보면 그림과 같이 약간의 숫자 계산을 해야 한다. DP라는 부분은 이중패리티 디스크이고 이것만 빠지면 RAID-4와 동일하다. 그림 5에서 D는 데이터 디스크, P는 패리티 디스크, DP는 이중 패리티 디스크를 표시한다. 각 데이터 디스크의 첫번째 줄을 더한 값인 9를 패리티 디스크에 기록하고, 두번째 줄을 더한 값인 5를 역시 패리티 디스크에 기록하는 방식이다. 첫번째 디스크에 장애가 발생한다면 패리티 디스크의 9에서 두번째, 세번째, 네번째 디스크의 값인 1,2,3을 빼면 3이 되므로 원래 그 값이 3이었다는 것을 알 수 있는 식으로 디스크의 데이터를 복구한다. 두번째 디스크에 추가로 장애가 나면 어떨까. 페리티 디스크의 9에서 세번째, 네번째 디스크의 값인 2,3을 빼면 4가 되는데 첫번째 디스크와 두번째 디스크에 각각 1,3이 있어도 4가 되고 2,2가 있어도 4가 되는 식으로 어디에 어떤값이 있었는지 알 방법이 없어진다. 이를 방지하기 위하여 이중 패리티 디스크에는 각 디스크의 대각선으로 숫자를 계산하여 그 값을 기록한다. 색깔로 구분이 되어 있으므로 말로 설명하는 것 보다 덧셈과 뺄셈만 약간 하면 두개의 디스크에 장애가 생겨도 완벽하게 데이터를 복구할 수 있다는 것을 이해할 수 있으리라 생각 된다.


그림 5. RAID-DP의 데이터 저장 방식

결론

RAID-1이 현재로서는 가장 안정적인 RAID방식이라는 것은 서두에서도 언급했었고 아직까지는 누구도 의심 할 여지가 없다. 그럼에도 불구하고 다른 방식의 패리티를 사용하는 RAID기술이 나오고 널리 사용되는 것은 어디까지나 안정성과 비용이라는 두가지 상반된 물건을 수평저울에 올려놓고 저울질하는 것과 같다. 비용과 전혀 상관 없이 안정성만을 추구한다면 망설이지 말고 미러링을 구성하면 된다. 하지만 훨씬 저렴한 비용에 안정성을 추구한다면 이 글을 읽는 순간부터는 망설이지 말고 RAID-DP를 적용 하라. 장애가 난 디스크는 바꾸면 그만이고 최악의 경우 돈으로 살 수 있다. 하지만 그 안의 데이터, 기업이 각고의 노력으로 축적해 오고 만들어낸 그 데이터는 이 세상 어디에서도 돈으로 살 수 없는 값진 것이다.


출처 : http://www-kr.netapp.com/

+ Recent posts