디스크의 종류와 용어 6 장 - 레이드 그리고 동적 디스크 [이동 완료]
이동 완료 2010. 9. 10. 23:57 |이곳은 백업 블로그 입니다. 현재 캐플이 활동 중인 블로그는 CAppleBlog.co.kr 입니다. 최신 정보들은 새로운 블로그에서 확인해 보세요. ^^
- 이곳은 기존 블로그들의 글을 한군데로 모아 놓은 백업 블로그입니다.
- 현재 링크는 대부분 올바르지 않으며 이러한 링크들은 모두 cappleblog.co.kr 로 이동합니다. (※ 링크 주의)
- 블로그와 커뮤니티는 서로 다른 공간입니다.(로그인을 따로 해야합니다.)
- 저는 윈티티(WinTT)이자 신비(ShinB)이며 캐플(CApple)입니다. 편한대로 불러주세요.
이 자료는 신규 블로그에서 새롭게 제공되고 있습니다. 페이지가 자동으로 이동하지 않는 분들은 아래의 링크를 클릭하세요.
윈도우 7 에서 사용할 수 있는 디스크의 종류 중에는 우리가 일반적으로 사용하는 기본 디스크 외에 동적 디스크란 것이 있습니다. 동적 디스크란 윈도우 2000 부터 지원되기 시작한 윈도우의 새로운 디스크 형식으로 동적 디스크에서는 여러 개의 디스크를 스팬하는 볼륨(스팬 볼륨 및 스트라이프 볼륨)을 만드는 기능이나 내결함성이 있는 볼륨(미러 볼륨 및 RAID-5 볼륨)을 만드는 기능을 가지고 있습니다. 이러한 동적 디스크에서 만들어지는 모든 볼륨을 동적 볼륨이라고 합니다.[동적 디스크의 볼륨은 기본 디스크의 파티션과 비슷한 개념이라고 생각하시면 됩니다.]
애초의 목적이 서버 운영체제를 위한 것이다 보니 윈도우 서버 제품군에서[윈도우 2000 Server 제품군, 윈도우 서버 2003, 윈도우 서버 2008, 윈도우 서버 2008 R2] 지원을 하며 윈도우 데스크탑 제품군의 경우[윈도우 2000 Professional, 윈도우 XP, 윈도우 비스타, 윈도우 7] 기능이 제한된 Home 에디션 그룹에서는 지원하지 않으며 Professional 이상 급의 에디션 그룹에서 일부 동적 볼륨을(스팬 볼륨, 스트라이프 볼륨) 지원하기도 합니다.[미러 볼륨까지 지원하기도 합니다.]
이러한 동적 디스크는 운영체제 차원에서 관리되고 지원되는 레이드의 한 종류로써 소프트웨어 기반 레이드입니다. 동적 디스크는 별도의 레이드 컨트롤러를 통해 하드웨어적인 차원에서 관리되고 지원되는 하드웨어 기반 레이드나 메인보드의 칩셋을 통해 바이오스 차원에서 관리되고 지원되는 펌웨어(드라이버) 기반 레이드와 같은 레이드의 한 종류로써 동적 디스크를 이해하기 위해선 반드시 레이드를 먼저 이해해야만 합니다. 그리하여 이번 포스팅에서는 레이드에 대한 설명이 주축을 이루게 될 것 입니다.
※ 펌웨어 기반 레이드는 소프트웨어 기반 레이드로 보기도 합니다.
RAID(Redundant Array of Inexpensive Disks, Redundant Array of Independent Disks, 복수 배열 독립 디스크) 란 여러 개의 하드 디스크에 데이터를 나눠서 저장하는 기술입니다. 데이터를 나누는 다양한 방법이 존재하며 이 방법들을 레벨이라고 합니다. 레벨에 따라 저장장치의 신뢰성을 높이거나 전체적인 성능을 향상시키는 등 목적에 따라 레벨의 선택이 가능합니다.[컨트롤러에서 지원한다는 가정하에]
설명이 뭔가 좀 어렵죠? 쉽게 이야기하자면 파티션이 하나의 디스크를 마치 여러 개의 디스크를 사용하는 것과 같이 해주는 기술이라면 레이드는 이와 반대로 여러 개의 디스크를 마치 하나의 디스크처럼 사용할 수 있게끔 해주는 기술이라고 할 수 있습니다. 쉽죠? 파티션이나 레이드도 따지고 보면 일종의 가상화의 개념으로 접근할 수 있습니다. ^^
레이드는 1987년 UC 버클리 대학의 David A. Patterson, Garth A. Gibson, Randy Katz 세 사람이 이와 관련된 논문을 발표하면서 시작되었습니다. 논문은 저렴한 디스크들의 중복 배열을 통해 보다 저렴하고 안전하며 신뢰할 수 있는 스토리지를 꾸미는 것에 대한 기술을 담고 있습니다. 즉, 고용량의 디스크는 그만큼 가격도 쌔기 때문에 좀 더 저렴한 디스크 여러 개를 사용하여 고가의 고용량 디스크를 사용하는 것과 같은 효과를 가지게끔 만들어 보자는 것에서 시작한 것 입니다. 더불어 이를 통해 신뢰성과 성능 향상의 효과도 기대할 수 있으며 현존하지 않는 고용량의 디스크 구성도 가능해 지는 것이죠.[버클리, 스탠퍼드, MIT 놈들 머리엔 뭐가 들어있는지...]
- 문제의 레이드가 시작된 논문 - 공돌이와 수학은 위대했습니다. -_-;;
위의 논문을 통해 정의된 최초의 레이드는 레벨 0~5 까지의 사양으로 구성되어 있었습니다. 이 후 1989년 다시 레벨 5 를 강화한 레벨 6 가 추가 됩니다. 이러한 레이드 레벨 0~6 을 표준 레이드 레벨(Standard RAID Levels) 이라고 합니다. 이 외에 두 개의 레벨을 하나로 합친 중첩 레벨(Nested RAID Levels) 로 레벨 0+1, 레벨 10(1+0), 레벨 50(5+0) 등이 등장하며 스토리지 업체들에 의해 독자적으로 추가된 레벨 등이 존재하고 있습니다. 하지만 어디까지나 표준은 레벨 0~6 까지 입니다.
레이드는 스트라이핑(Striping, 분산), 미러링(Mirroring, 중복), 패리티(Parity, 무결성) 이라는 세 가지 근원이 되는 기술로 이루어지며 이러한 세 가지 기술을 어떻게 적용하느냐에 따라 레벨이 나누어집니다.
스트라이핑은 데이터를 여러 개의 디스크에 분산하여 저장하는 것을 의미합니다. 이러한 분산은 하나의 디스크에 담을 수 없는 용량의 데이터를 여러 개의 디스크에 분산시키는 것으로 보다 큰 용량을 구성하려는 목적을 가진 레이드의 핵심이라고 할 수 있습니다. 이러한 스트라이핑은 다시 두 가지로 나누어 집니다.
하나의 디스크가 꽉차면 다른 디스크에 이어서 데이터를 기록하는 방식입니다. 이러한 특성으로 인해 분산을 통한 성능의 향상은 전혀 없으며 오직 여러 개의 디스크를 단순하게 하나의 공간으로 묶는 것만을 목적으로 하고 있습니다.
데이터를 쪼개서 여러 개의 드라이브에 나누어 동시에 기록하는 방식입니다. 스트라이프는 여러 개의 디스크를 하나의 공간으로 묶는 것 외에 여러 개의 디스크에 동시에 데이터를 기록하기 때문에 디스크를 하나만 사용할 때 보다 높은 성능을 낼 수 있습니다. 이는 하나의 디스크에 데이터를 쓰는 동시에 다른 디스크에도 데이터를 쓰기 때문에 그만큼 빠른 처리가 가능하며 반대로 데이터를 읽을 때에도 여러 디스크에 나누어진 데이터를 동시에 읽어오기 때문에 그만큼 빠른 처리가 가능한 것 입니다. 이로인해 단일 디스크를 사용할 때보다 성능상으로 큰 이점을 가집니다.
다만 데이터를 쪼개서 여러 개의 디스크에 나누어 저장하는 특성으로 인해 하나의 디스크에 장애가 발생하면 모든 디스크의 데이터가 쓸모 없어진다는 치명적인 단점이 존재합니다. 이러한 단점을 해결하기 위해 미러링과 패리티가 존재합니다.
미러링은 하나의 데이터를 두 개의 디스크에 중복하여 저장하는 것을 의미합니다. 완전히 동일한 데이터 하나를 두 개의 디스크에 함께 저장함으로써 데이터의 안정성을 극대화한 방식이라고 할 수 있습니다. 하지만 같은 데이터를 중복하여 저장하기 때문에 용량의 낭비가 굉장히 심하다는 단점이 있습니다.
패리티는 데이터의 무결성을 확인하는 오류 체크 기술로서 만약 데이터에 장애가 발생하면 저장된 패리티를 통해 데이터를 복구할 수 있습니다. 데이터와 해당 데이터에 대한 패리티가 함께 저장되며 만약 특정 디스크의 장애로 인해 데이터를 잃어버린 경우 패리티를 통해 잃어버린 데이터를 복구합니다.
스트라이핑 기술과 함께 사용되며 패리티의 저장 방식에 따라 여러가지 레벨로 나누어집니다. 이러한 데이터의 패리티를 생성하고 패리티를 통해 데이터를 복구하는 작업에는 XOR 연산이 필요한데 이로 인해 데이터를 저장하고 복구하는데 성능 저하가 일어납니다. 이를 해결하기 위해 레이드 컨트롤러는 전용의 XOR 연산 프로세서를 포함하는 것이 보통입니다.[소프트웨어 기반 레이드와 펌웨어 기반 레이드에선 이를 CPU 가 처리합니다.]
레이드는 위에서 말한 6 개의 표준 레이드 레벨과 몇 가지의 중첩 레이드 레벨이 존재하고 있습니다.[스토리지 업체의 독자적인 레이드 레벨은 논외로 칩니다.] 그럼 이러한 레이드 레벨의 원리와 각각의 특성에 대해서 간략하게 알아보도록 하겠습니다.
표준 레이드 레벨은 최초에 구상된 5 개의 레벨과(RAID 0, 1, 2, 3, 4, 5) 이후 추가된 RAID 6 를 의미합니다. 이 중 솔직히 레이드 2, 3, 4 는 현재는 안 쓰이고 있다고 생각하시길 바랍니다. 그냥 참고용으로만 알아두시면 좋습니다.
※ 표의 구성은 위키피디아 RAID 자료에 포함된 표의 구성을 따랐으나 설명은 표의 원문을 번역한 것이 아닌 위키피디아 Standard RAID levels 자료의 내용을 제가 나름대로 쉽게 요약하여 재작성한 것을 기재한 것 입니다. 참고하세요.
※ 공간 효율성은 전체 디스크 크기의 합을 1 로 놓았을 때를 기준으로 합니다. 이 때 전체 디스크 크기의 합은 n * min(Disk 1, Disk 2, Disk 3...)[디스크 수 * 디스크 중 가장 작은 디스크 크기] 입니다.
※ 일부 항목은 원문으로 기재되어 있습니다.[번역하기 난해해서... I am a boy. You ar a girl 수준의 영어 실력이라;;]
표준 레이드 레벨을 동시에 하나로 구현한 레이드 레벨입니다. 대표적으로 RAID 0+1, RAID10(RAID 1+0) RAID 50(RAID 5+0), RAID 51(RAID 5+1), RAID 60(RAID 6+0) 등이 있습니다. 모두 알아보는 것은 글의 주제와 너무 동떨어지니 간단하게 알아보도록 하겠습니다.
만약 디스크가 6 개일 경우 디스크를 3 개씩 스트라이핑한 후 이를 미러링합니다. 즉, 스트라이핑 후 미러링을 하는 구성입니다.
만약 디스크가 6 개일 경우 디스크를 2 개씩 미러링한 후 이를 스트라이핑합니다. 즉, 미러링 후 스트라이핑을 하는 구성입니다.
이제 레이드에 대해서 어느정도 아시겠나요? 처음에 이야기했듯이 동적 디스크는 운영체제 차원에서 관리되는 소프트웨어 기반 레이드입니다. 그렇기 때문에 동적 디스크의 동적 볼륨은 레이드 레벨과 서로 상응하며 각각의 동적 볼륨이 지원하는 레이드 레벨은 아래의 표와 같습니다.[이 때 단순 볼륨은 레이드가 아닌 단일 디스크 구성을 생각하시면 됩니다.]
이 중 윈도우 7 에서 사용할 수 있는 동적 볼륨은 단순, 스팬, 스트라이프, 미러 볼륨이며 RAID-5 볼륨은 지원하지 않습니다. RAID-5 볼륨은 윈도우 서버 제품군을 위한 것으로 윈도우 서버 2008 R2[서버 2008, 서버 2003, 2000 서버 에디션 포함] 에서만 지원을 하고 있습니다.
스팬 볼륨에 상응하는 JBOD 의 경우 위의 레이드 레벨에서는 설명을 하지 않았는데요. JBOD 는 그저 단순하게 디스크를 하나로 묶어주는 것으로[스트라이핑, 미러링, 패리티 없음] 위에서 이야기한 레이드의 세 가지 기반 기술 중 스트라이핑에서 스팬 기술만이 적용된 레이드라고 생각하시면 됩니다.
그 외의 동적 볼륨은 모두 해당 레이드 레벨에 그대로 상응한다고 생각하시면 됩니다. 그렇기 때문에 구성이나 특성이 거의 동일하게 적용된다고 할 수 있습니다.
동적 디스크는 레이드이지만 그 나름대로 자신만의 특성을 가지고 있습니다. 동적 디스크가 가지는 특성 중 중요한 네 가지만 이야기 하도록 하겠습니다.
동적 디스크의 가장 큰 특징이라면 소프트웨어 기반 레이드로 레이드 컨트롤러에 의해 컨트롤러 차원에서 디스크들을 묶는 게 아닌 윈도우 차원에서 디스크에 존재하는 볼륨들을 묶는 것이라고 할 수 있습니다. 즉, 동적 볼륨은 디스크들을 하나로 묶는 게 아닌 여러 디스크에 나누어진 볼륨들을 하나로 묶는 것이죠. 그래서 하나의 디스크 그룹에 여러 개의 서로 다른 동적 볼륨을 생성하는 게 가능하며 서로 다른 종류의 동적 볼륨이(서로 다른 종류의 레이드 레벨이) 존재하는 것도 가능합니다.
사실 이러한 특성이 상황에 따라 굉장히 유용하지만 레이드라는 영역에서 따지고 보자면 상당히 변태적[-_-]이라고 할 수 있습니다. 동적 디스크의 이러한 특성은 어디까지나 앞에서 말했다시피 디스크가 아닌 디스크 위의 볼륨들을 묶어서 레이드 레벨을 구성하는 동적 볼륨의 특성으로 인한 것 입니다. 아무튼 목적에 따라 잘만 활용하면 굉장히 유용한 특성 중에 하나입니다.
이러한 동적 디스크의 특성과 비슷한 것이 바로 인텔 내장 칩셋에서 지원하는 매트릭스 레이드라는 기술 입니다. 하나의 레이드 배열을 쪼개서 서로 다른 두 개 이상의 레이드 레벨을 구성할 수 있는 기술이죠. 유용하게 사용하시는 분들은 굉장히 유용하게 잘 사용하고 있는 기술 중 하나입니다.
동적 디스크의 동적 볼륨은 볼륨에 관한 모든 정보가 해당 디스크에 기록이 됩니다. 이러한 특성으로 인해 단순히 디스크들만 분리하여 다른 컴퓨터로 옮겨도 아무런 문제없이 그대로 이전의 동적 볼륨을 그대로 사용할 수 있습니다. 하드웨어 기반 레이드와 펌웨어 기반 레이드의 경우 다른 시스템으로 레이드를 어떻게 옮기는 지 알 수 없지만 아무튼 모른다손 치고 보더라도 굉장히 단순하고 간단하게 옮길 수 있다는 것은 확실합니다.
동적 디스크는 소프트웨어 기반 레이드입니다.[관련 볼륨에 한하여] 소프트웨어 기반 레이드의 경우 스트라이핑과 미러링의 데이터 분산을 위한 연산 작업이 추가되며 RAID 5 의 경우 여기에 더해 패리티를 위한 XOR 연산까지 추가됩니다. 이러한 연산 작업들로 인해 단일 디스크를[기본 디스크] 사용할 때 보다 어쩔 수 없이 디스크의 성능이 약간 하락하게 됩니다. 다만 RAID 0 의 경우 데이터 분산을 위한 연산으로 인해 발생하는 성능의 하락폭보다 스트라이핑으로 인한 성능의 상승폭이 더 크기 때문에 이러한 문제가 크게 와닿지 않고 사용자들도 별로 개의치 않는 것 입니다.
또한 소프트웨어 기반 레이드는 레이드에 관련된 모든 연산 작업을 CPU 가 처리하게 됩니다. 그러다 보니 동적 디스크를 사용하기 전보다 CPU 리소스의 점유율 또한 올라가게 됩니다.
동적 디스크는 원래 윈도우 서버 제품군을 위해 개발된 기술 입니다. 사실 서버에서는 다른 무엇보다 RAID 5 가 중요합니다. 그런데 RAID 5 의 미칠듯한 XOR 연산은 CPU 를 당황하게끔 만들기에 충분하지요.[레이드 컨트롤러에 괜히 XOR 전용의 프로세서와 캐시 버퍼가 달리는 게 아닙니다.] 하지만 다행히도 서버는 멀티 프로세서가 기본이다 보니 시스템에 크게 무리를 주지 않고 처리하는 게 가능할 뿐 입니다.
다행히 요즘은 데스크탑도 듀얼은 기본이요 쿼드는 옵션이며 옥타는 선택이라고 할 만큼 멀티 코어가 보편화 되어 있어서 이러한 문제는 크게 염려하지 않아도 될 수준이 되었습니다.[가장 큰 연산을 필요로 하는 RAID-5 볼륨은 일반 윈도우 데스크탑 제품군에서는 아예 지원하지도 않고]
동적 디스크는 윈도우에서 지원하는 새로운 디스크 형식입니다. 그렇기 때문에 다른 운영체제에서는 접근이 불가능하며 오직 윈도우에서만 접근이 가능하다는 단점이 있습니다.[그것도 동적 디스크를 지원하는 에디션에서만] 이러한 이유로 윈도우만 사용하는 경우에는 크게 문제가 되지 않지만 윈도우와 다른 운영체제를 함께 사용하는 경우에는[동적 디스크를 지원하지 않는 윈도우 에디션 포함] 동적 디스크를 사용하는 것에 대해서 깊이 고민해 보아야 할 것 입니다.
긴 글 읽으시느라 수고 많으셨습니다. ^^ 동적 디스크와 레이드에 관한 내용은 여기까지 입니다. 이상입니다. ^^a
※ 이 포스팅은 아래의 자료들을 참고로 하여 작성되었습니다. 그 외에 추가적으로 참고된 자료도 많지만 중요한 뼈대는 아래의 자료들입니다.
동적 디스크
윈도우 7 에서 사용할 수 있는 디스크의 종류 중에는 우리가 일반적으로 사용하는 기본 디스크 외에 동적 디스크란 것이 있습니다. 동적 디스크란 윈도우 2000 부터 지원되기 시작한 윈도우의 새로운 디스크 형식으로 동적 디스크에서는 여러 개의 디스크를 스팬하는 볼륨(스팬 볼륨 및 스트라이프 볼륨)을 만드는 기능이나 내결함성이 있는 볼륨(미러 볼륨 및 RAID-5 볼륨)을 만드는 기능을 가지고 있습니다. 이러한 동적 디스크에서 만들어지는 모든 볼륨을 동적 볼륨이라고 합니다.[동적 디스크의 볼륨은 기본 디스크의 파티션과 비슷한 개념이라고 생각하시면 됩니다.]
애초의 목적이 서버 운영체제를 위한 것이다 보니 윈도우 서버 제품군에서[윈도우 2000 Server 제품군, 윈도우 서버 2003, 윈도우 서버 2008, 윈도우 서버 2008 R2] 지원을 하며 윈도우 데스크탑 제품군의 경우[윈도우 2000 Professional, 윈도우 XP, 윈도우 비스타, 윈도우 7] 기능이 제한된 Home 에디션 그룹에서는 지원하지 않으며 Professional 이상 급의 에디션 그룹에서 일부 동적 볼륨을(스팬 볼륨, 스트라이프 볼륨) 지원하기도 합니다.[미러 볼륨까지 지원하기도 합니다.]
이러한 동적 디스크는 운영체제 차원에서 관리되고 지원되는 레이드의 한 종류로써 소프트웨어 기반 레이드입니다. 동적 디스크는 별도의 레이드 컨트롤러를 통해 하드웨어적인 차원에서 관리되고 지원되는 하드웨어 기반 레이드나 메인보드의 칩셋을 통해 바이오스 차원에서 관리되고 지원되는 펌웨어(드라이버) 기반 레이드와 같은 레이드의 한 종류로써 동적 디스크를 이해하기 위해선 반드시 레이드를 먼저 이해해야만 합니다. 그리하여 이번 포스팅에서는 레이드에 대한 설명이 주축을 이루게 될 것 입니다.
※ 펌웨어 기반 레이드는 소프트웨어 기반 레이드로 보기도 합니다.
레이드(RAID)
RAID(Redundant Array of Inexpensive Disks, Redundant Array of Independent Disks, 복수 배열 독립 디스크) 란 여러 개의 하드 디스크에 데이터를 나눠서 저장하는 기술입니다. 데이터를 나누는 다양한 방법이 존재하며 이 방법들을 레벨이라고 합니다. 레벨에 따라 저장장치의 신뢰성을 높이거나 전체적인 성능을 향상시키는 등 목적에 따라 레벨의 선택이 가능합니다.[컨트롤러에서 지원한다는 가정하에]
설명이 뭔가 좀 어렵죠? 쉽게 이야기하자면 파티션이 하나의 디스크를 마치 여러 개의 디스크를 사용하는 것과 같이 해주는 기술이라면 레이드는 이와 반대로 여러 개의 디스크를 마치 하나의 디스크처럼 사용할 수 있게끔 해주는 기술이라고 할 수 있습니다. 쉽죠? 파티션이나 레이드도 따지고 보면 일종의 가상화의 개념으로 접근할 수 있습니다. ^^
레이드는 1987년 UC 버클리 대학의 David A. Patterson, Garth A. Gibson, Randy Katz 세 사람이 이와 관련된 논문을 발표하면서 시작되었습니다. 논문은 저렴한 디스크들의 중복 배열을 통해 보다 저렴하고 안전하며 신뢰할 수 있는 스토리지를 꾸미는 것에 대한 기술을 담고 있습니다. 즉, 고용량의 디스크는 그만큼 가격도 쌔기 때문에 좀 더 저렴한 디스크 여러 개를 사용하여 고가의 고용량 디스크를 사용하는 것과 같은 효과를 가지게끔 만들어 보자는 것에서 시작한 것 입니다. 더불어 이를 통해 신뢰성과 성능 향상의 효과도 기대할 수 있으며 현존하지 않는 고용량의 디스크 구성도 가능해 지는 것이죠.[버클리, 스탠퍼드, MIT 놈들 머리엔 뭐가 들어있는지...]
- 문제의 레이드가 시작된 논문 - 공돌이와 수학은 위대했습니다. -_-;;
위의 논문을 통해 정의된 최초의 레이드는 레벨 0~5 까지의 사양으로 구성되어 있었습니다. 이 후 1989년 다시 레벨 5 를 강화한 레벨 6 가 추가 됩니다. 이러한 레이드 레벨 0~6 을 표준 레이드 레벨(Standard RAID Levels) 이라고 합니다. 이 외에 두 개의 레벨을 하나로 합친 중첩 레벨(Nested RAID Levels) 로 레벨 0+1, 레벨 10(1+0), 레벨 50(5+0) 등이 등장하며 스토리지 업체들에 의해 독자적으로 추가된 레벨 등이 존재하고 있습니다. 하지만 어디까지나 표준은 레벨 0~6 까지 입니다.
레이드는 스트라이핑(Striping, 분산), 미러링(Mirroring, 중복), 패리티(Parity, 무결성) 이라는 세 가지 근원이 되는 기술로 이루어지며 이러한 세 가지 기술을 어떻게 적용하느냐에 따라 레벨이 나누어집니다.
분산 - 스트라이핑(Striping)
스트라이핑은 데이터를 여러 개의 디스크에 분산하여 저장하는 것을 의미합니다. 이러한 분산은 하나의 디스크에 담을 수 없는 용량의 데이터를 여러 개의 디스크에 분산시키는 것으로 보다 큰 용량을 구성하려는 목적을 가진 레이드의 핵심이라고 할 수 있습니다. 이러한 스트라이핑은 다시 두 가지로 나누어 집니다.
묶음 - 스팬(Span)
하나의 디스크가 꽉차면 다른 디스크에 이어서 데이터를 기록하는 방식입니다. 이러한 특성으로 인해 분산을 통한 성능의 향상은 전혀 없으며 오직 여러 개의 디스크를 단순하게 하나의 공간으로 묶는 것만을 목적으로 하고 있습니다.
분산 - 스트라이프(Stripe)
데이터를 쪼개서 여러 개의 드라이브에 나누어 동시에 기록하는 방식입니다. 스트라이프는 여러 개의 디스크를 하나의 공간으로 묶는 것 외에 여러 개의 디스크에 동시에 데이터를 기록하기 때문에 디스크를 하나만 사용할 때 보다 높은 성능을 낼 수 있습니다. 이는 하나의 디스크에 데이터를 쓰는 동시에 다른 디스크에도 데이터를 쓰기 때문에 그만큼 빠른 처리가 가능하며 반대로 데이터를 읽을 때에도 여러 디스크에 나누어진 데이터를 동시에 읽어오기 때문에 그만큼 빠른 처리가 가능한 것 입니다. 이로인해 단일 디스크를 사용할 때보다 성능상으로 큰 이점을 가집니다.
다만 데이터를 쪼개서 여러 개의 디스크에 나누어 저장하는 특성으로 인해 하나의 디스크에 장애가 발생하면 모든 디스크의 데이터가 쓸모 없어진다는 치명적인 단점이 존재합니다. 이러한 단점을 해결하기 위해 미러링과 패리티가 존재합니다.
중복 - 미러링(Mirroring)
미러링은 하나의 데이터를 두 개의 디스크에 중복하여 저장하는 것을 의미합니다. 완전히 동일한 데이터 하나를 두 개의 디스크에 함께 저장함으로써 데이터의 안정성을 극대화한 방식이라고 할 수 있습니다. 하지만 같은 데이터를 중복하여 저장하기 때문에 용량의 낭비가 굉장히 심하다는 단점이 있습니다.
무결성 - 패리티(Parity)
패리티는 데이터의 무결성을 확인하는 오류 체크 기술로서 만약 데이터에 장애가 발생하면 저장된 패리티를 통해 데이터를 복구할 수 있습니다. 데이터와 해당 데이터에 대한 패리티가 함께 저장되며 만약 특정 디스크의 장애로 인해 데이터를 잃어버린 경우 패리티를 통해 잃어버린 데이터를 복구합니다.
스트라이핑 기술과 함께 사용되며 패리티의 저장 방식에 따라 여러가지 레벨로 나누어집니다. 이러한 데이터의 패리티를 생성하고 패리티를 통해 데이터를 복구하는 작업에는 XOR 연산이 필요한데 이로 인해 데이터를 저장하고 복구하는데 성능 저하가 일어납니다. 이를 해결하기 위해 레이드 컨트롤러는 전용의 XOR 연산 프로세서를 포함하는 것이 보통입니다.[소프트웨어 기반 레이드와 펌웨어 기반 레이드에선 이를 CPU 가 처리합니다.]
레이드 레벨의 특성
레이드는 위에서 말한 6 개의 표준 레이드 레벨과 몇 가지의 중첩 레이드 레벨이 존재하고 있습니다.[스토리지 업체의 독자적인 레이드 레벨은 논외로 칩니다.] 그럼 이러한 레이드 레벨의 원리와 각각의 특성에 대해서 간략하게 알아보도록 하겠습니다.
표준 레이드 레벨(Standard RAID Levels)
표준 레이드 레벨은 최초에 구상된 5 개의 레벨과(RAID 0, 1, 2, 3, 4, 5) 이후 추가된 RAID 6 를 의미합니다. 이 중 솔직히 레이드 2, 3, 4 는 현재는 안 쓰이고 있다고 생각하시길 바랍니다. 그냥 참고용으로만 알아두시면 좋습니다.
※ 표의 구성은 위키피디아 RAID 자료에 포함된 표의 구성을 따랐으나 설명은 표의 원문을 번역한 것이 아닌 위키피디아 Standard RAID levels 자료의 내용을 제가 나름대로 쉽게 요약하여 재작성한 것을 기재한 것 입니다. 참고하세요.
※ 공간 효율성은 전체 디스크 크기의 합을 1 로 놓았을 때를 기준으로 합니다. 이 때 전체 디스크 크기의 합은 n * min(Disk 1, Disk 2, Disk 3...)[디스크 수 * 디스크 중 가장 작은 디스크 크기] 입니다.
※ 일부 항목은 원문으로 기재되어 있습니다.[번역하기 난해해서... I am a boy. You ar a girl 수준의 영어 실력이라;;]
중첩 레이드 레벨(Nested RAID level, Hybrid RAID level)
표준 레이드 레벨을 동시에 하나로 구현한 레이드 레벨입니다. 대표적으로 RAID 0+1, RAID10(RAID 1+0) RAID 50(RAID 5+0), RAID 51(RAID 5+1), RAID 60(RAID 6+0) 등이 있습니다. 모두 알아보는 것은 글의 주제와 너무 동떨어지니 간단하게 알아보도록 하겠습니다.
RAID 0+1
RAID 0+1 은 먼저 디스크를 스트라이핑(RAID 0) 한 후 이를 다시 미러링(RAID 1) 하는 구성입니다. 레벨의 구성에 최소 4 개의 디스크가 필요합니다.만약 디스크가 6 개일 경우 디스크를 3 개씩 스트라이핑한 후 이를 미러링합니다. 즉, 스트라이핑 후 미러링을 하는 구성입니다.
RAID 10(RAID 1+0)
RAID 10 은 먼저 디스크를 미러링(RAID 1) 한 후 이를 다시 스트라이핑(RAID 0) 하는 구성입니다. 레벨의 구성에 최소 4 개의 디스크가 필요합니다.만약 디스크가 6 개일 경우 디스크를 2 개씩 미러링한 후 이를 스트라이핑합니다. 즉, 미러링 후 스트라이핑을 하는 구성입니다.
기타 중첩 레이드 레벨
이와 같이 중첩 레이드 레벨은 앞의 레이드 구성을 먼저 한 후 이를 다시 뒤의 레이드 레벨로 다시 한 번 더 구성하는 형식입니다. 즉, RAID 50 은 RAID 5 를 구성한 후 이를 미러링 하는 구성, RAID 51 은 RAID 5 를 구성한 후 이를 스트라이핑 하는 구성인 것 입니다. 이와 같은 방법으로 각 중첩 레이드 레벨을 이해하시면 됩니다. 아래는 주요 중첩 레이드 레벨의 모식도 입니다.동적 디스크와 레이드 레벨의 상관 관계
이제 레이드에 대해서 어느정도 아시겠나요? 처음에 이야기했듯이 동적 디스크는 운영체제 차원에서 관리되는 소프트웨어 기반 레이드입니다. 그렇기 때문에 동적 디스크의 동적 볼륨은 레이드 레벨과 서로 상응하며 각각의 동적 볼륨이 지원하는 레이드 레벨은 아래의 표와 같습니다.[이 때 단순 볼륨은 레이드가 아닌 단일 디스크 구성을 생각하시면 됩니다.]
동적 볼륨 | 레이드 레벨 |
---|---|
단순 볼륨 | None |
스팬 볼륨 | JBOD |
스트라이프 볼륨 | RAID 0 |
미러 볼륨 | RAID 1 |
RAID-5 볼륨 | RAID 5 |
이 중 윈도우 7 에서 사용할 수 있는 동적 볼륨은 단순, 스팬, 스트라이프, 미러 볼륨이며 RAID-5 볼륨은 지원하지 않습니다. RAID-5 볼륨은 윈도우 서버 제품군을 위한 것으로 윈도우 서버 2008 R2[서버 2008, 서버 2003, 2000 서버 에디션 포함] 에서만 지원을 하고 있습니다.
스팬 볼륨에 상응하는 JBOD 의 경우 위의 레이드 레벨에서는 설명을 하지 않았는데요. JBOD 는 그저 단순하게 디스크를 하나로 묶어주는 것으로[스트라이핑, 미러링, 패리티 없음] 위에서 이야기한 레이드의 세 가지 기반 기술 중 스트라이핑에서 스팬 기술만이 적용된 레이드라고 생각하시면 됩니다.
그 외의 동적 볼륨은 모두 해당 레이드 레벨에 그대로 상응한다고 생각하시면 됩니다. 그렇기 때문에 구성이나 특성이 거의 동일하게 적용된다고 할 수 있습니다.
동적 디스크만의 특성
동적 디스크는 레이드이지만 그 나름대로 자신만의 특성을 가지고 있습니다. 동적 디스크가 가지는 특성 중 중요한 네 가지만 이야기 하도록 하겠습니다.
볼륨 차원의 레이드 구성 - 매트릭스 레이드?
동적 디스크의 가장 큰 특징이라면 소프트웨어 기반 레이드로 레이드 컨트롤러에 의해 컨트롤러 차원에서 디스크들을 묶는 게 아닌 윈도우 차원에서 디스크에 존재하는 볼륨들을 묶는 것이라고 할 수 있습니다. 즉, 동적 볼륨은 디스크들을 하나로 묶는 게 아닌 여러 디스크에 나누어진 볼륨들을 하나로 묶는 것이죠. 그래서 하나의 디스크 그룹에 여러 개의 서로 다른 동적 볼륨을 생성하는 게 가능하며 서로 다른 종류의 동적 볼륨이(서로 다른 종류의 레이드 레벨이) 존재하는 것도 가능합니다.
하나의 동적 디스크 그룹에 서로 다른 동적 볼륨이 존재하는 모습.
사실 이러한 특성이 상황에 따라 굉장히 유용하지만 레이드라는 영역에서 따지고 보자면 상당히 변태적[-_-]이라고 할 수 있습니다. 동적 디스크의 이러한 특성은 어디까지나 앞에서 말했다시피 디스크가 아닌 디스크 위의 볼륨들을 묶어서 레이드 레벨을 구성하는 동적 볼륨의 특성으로 인한 것 입니다. 아무튼 목적에 따라 잘만 활용하면 굉장히 유용한 특성 중에 하나입니다.
이러한 동적 디스크의 특성과 비슷한 것이 바로 인텔 내장 칩셋에서 지원하는 매트릭스 레이드라는 기술 입니다. 하나의 레이드 배열을 쪼개서 서로 다른 두 개 이상의 레이드 레벨을 구성할 수 있는 기술이죠. 유용하게 사용하시는 분들은 굉장히 유용하게 잘 사용하고 있는 기술 중 하나입니다.
디스크 옮기기
동적 디스크의 동적 볼륨은 볼륨에 관한 모든 정보가 해당 디스크에 기록이 됩니다. 이러한 특성으로 인해 단순히 디스크들만 분리하여 다른 컴퓨터로 옮겨도 아무런 문제없이 그대로 이전의 동적 볼륨을 그대로 사용할 수 있습니다. 하드웨어 기반 레이드와 펌웨어 기반 레이드의 경우 다른 시스템으로 레이드를 어떻게 옮기는 지 알 수 없지만 아무튼 모른다손 치고 보더라도 굉장히 단순하고 간단하게 옮길 수 있다는 것은 확실합니다.
디스크 성능의 하락
동적 디스크는 소프트웨어 기반 레이드입니다.[관련 볼륨에 한하여] 소프트웨어 기반 레이드의 경우 스트라이핑과 미러링의 데이터 분산을 위한 연산 작업이 추가되며 RAID 5 의 경우 여기에 더해 패리티를 위한 XOR 연산까지 추가됩니다. 이러한 연산 작업들로 인해 단일 디스크를[기본 디스크] 사용할 때 보다 어쩔 수 없이 디스크의 성능이 약간 하락하게 됩니다. 다만 RAID 0 의 경우 데이터 분산을 위한 연산으로 인해 발생하는 성능의 하락폭보다 스트라이핑으로 인한 성능의 상승폭이 더 크기 때문에 이러한 문제가 크게 와닿지 않고 사용자들도 별로 개의치 않는 것 입니다.
또한 소프트웨어 기반 레이드는 레이드에 관련된 모든 연산 작업을 CPU 가 처리하게 됩니다. 그러다 보니 동적 디스크를 사용하기 전보다 CPU 리소스의 점유율 또한 올라가게 됩니다.
동적 디스크는 원래 윈도우 서버 제품군을 위해 개발된 기술 입니다. 사실 서버에서는 다른 무엇보다 RAID 5 가 중요합니다. 그런데 RAID 5 의 미칠듯한 XOR 연산은 CPU 를 당황하게끔 만들기에 충분하지요.[레이드 컨트롤러에 괜히 XOR 전용의 프로세서와 캐시 버퍼가 달리는 게 아닙니다.] 하지만 다행히도 서버는 멀티 프로세서가 기본이다 보니 시스템에 크게 무리를 주지 않고 처리하는 게 가능할 뿐 입니다.
다행히 요즘은 데스크탑도 듀얼은 기본이요 쿼드는 옵션이며 옥타는 선택이라고 할 만큼 멀티 코어가 보편화 되어 있어서 이러한 문제는 크게 염려하지 않아도 될 수준이 되었습니다.[가장 큰 연산을 필요로 하는 RAID-5 볼륨은 일반 윈도우 데스크탑 제품군에서는 아예 지원하지도 않고]
윈도우 전용
동적 디스크는 윈도우에서 지원하는 새로운 디스크 형식입니다. 그렇기 때문에 다른 운영체제에서는 접근이 불가능하며 오직 윈도우에서만 접근이 가능하다는 단점이 있습니다.[그것도 동적 디스크를 지원하는 에디션에서만] 이러한 이유로 윈도우만 사용하는 경우에는 크게 문제가 되지 않지만 윈도우와 다른 운영체제를 함께 사용하는 경우에는[동적 디스크를 지원하지 않는 윈도우 에디션 포함] 동적 디스크를 사용하는 것에 대해서 깊이 고민해 보아야 할 것 입니다.
긴 글 읽으시느라 수고 많으셨습니다. ^^ 동적 디스크와 레이드에 관한 내용은 여기까지 입니다. 이상입니다. ^^a
※ 이 포스팅은 아래의 자료들을 참고로 하여 작성되었습니다. 그 외에 추가적으로 참고된 자료도 많지만 중요한 뼈대는 아래의 자료들입니다.
http://en.wikipedia.org/wiki/RAID
http://en.wikipedia.org/wiki/Standard_RAID_levels
http://en.wikipedia.org/wiki/Nested_RAID_levels
http://en.wikipedia.org/wiki/JBOD
http://en.wikipedia.org/wiki/Intel_Matrix_RAID
http://technet.microsoft.com/ko-kr/library/aa995741(EXCHG.65).aspx
http://en.wikipedia.org/wiki/Standard_RAID_levels
http://en.wikipedia.org/wiki/Nested_RAID_levels
http://en.wikipedia.org/wiki/JBOD
http://en.wikipedia.org/wiki/Intel_Matrix_RAID
http://technet.microsoft.com/ko-kr/library/aa995741(EXCHG.65).aspx