||1

1페이지

지난 몇년동안 RAID는 정말 엄청나게 대중적으로 변하였다. 순전히 하이엔드 엔터프라이즈 서버에서 주력이었던 것이, 오늘날에는, 매니악적인 메인보드는 더 좋은 사양의 더 좋은 온보드 RAID를 가지게 되었다. 온보드 RAID 컨트롤러의 풍족은 오늘날의 가정용 컴퓨터에서 RAID 형식을 보는 것이 이질적이지 않다는 것을 의미한다. 이것의 사용 이유는 빨라지는 속도, 늘어나는 안정성이나 간단히 자랑할 수 있는 것이기 때문이다. 일단은, 2(개나 그 이상의) 디스크는 1개보다 더 낫다. 맞지?

누가 당신에게 묻는가에 따라, RAID는 Redundant Array of Inexpensive Disks 나 Redundant Array of Independent Disks 로 의미가 바뀌게 된다. 기술적으로, 원래 이름이 의미하는 것은 1개 이상의 드라이브를 배열로 구성하여 사용하는 것에 주어지는 것이 맞는 것이다. RAID에서 쓰였던 (inexpensive)값싼' 이라는 단어는, 쓸만한 성능과 오류 허용오차를 가진 디스크가 엄청나게 비쌀 때 이것을 대체할 적당한 디스크 솔류션에 쓰이는 것이었다.

RAID는 재고품 하드를 이용하여 성능 향상과 허용 오차한계의 증가를 위한 방법으로 단가를 엄청나게 줄이게 된다. RAID에는 여러가지 종류가 있으며 각각의 RAID는 그들 고유의 장점과 약점이 있는데, RAID의 왕도는 없으며 고유 용도에 따른 최적 설정의 RAID 레벨을 고르는 것이 중요하다.

몇천명의 유저가 동시에 접근하고 있는 오라클 DB, 고성능 HD 비디오 워크스테이션이나 단순히 가정용 사용자가 사진 저장에 쓰는 등등에도 각기 다른 종류의 RAID는 다수의 장점을 제공한다. 각기 다른 종류는 명확히 각기 다른 사양을 요구하며, 극단적으로 예산의 차등화가 이루어진다. 어떤 RAID 레벨을 사용하는가에 따라 각각 장단점이 균형있게 잡혀있다. 주요하게 고려될 사항으로는 성능, 여분과 단가이다.

몇몇 RAID 레벨들은 용량의 감소에 상관 없이 무조건적인 성능 향상에만 초점을 맞추고 있고, 다른 것들은 용량을 최우선 고려사항으로 하여 이에따라 성능은 약간 뒤쳐지게 된다. RAID의 특정 종류는 쓸만한 성능을 위해 위력적인 하드웨어 컨트롤러를 요구하여, 단가 상승을 초래하고, 소프트웨어 솔류션을 사용하여 적당한 성능을 보장하는 다른것에 비교된다. 그러면 RAID가 정확히 제공하는 것은 무엇인가?

성능 증대

하드 디스크 플래터에서 읽어오거나 쓸 수 있는 데이터 속도에는 제한이 있다. 불행하게도 하드 드라이브의 기계적인 설계로 인해 이 제한은 컴퓨터에서 데이터가 다루어지는 다른 모든 부분보다 느리게 된다. 하드디스크 드라이브 안의 플래터와 액츄에이터는 움직이는 것만 빠를 뿐이며 기계적인 제한폭과 허용오차는 (RAM 같은) 고체상태 저장장치가 제한받지 않을 뿐이다.

대부분의 RAID 실행은 같은 시간에 많은 디스크에서 읽어오거나 쓰기를 하는 데에 1개의 디스크에서 실행하는 것보다 더 높은 성능을 제공한다. 이론적으로는, 데이터는 1개 디스크에서 회수하는 것보다 두개의 디스크에서 회수하는 것이 시간을 반으로 쪼갤 수 있고, 8개의 디스크는 2개의 디스크보다 4배 빠르고 등등이다. 당연히 실제적으로 이것은 정확하게 맞지는 않은데, RAID 컨트롤러의 오버헤드와 여유 공간에 대한 계산이 연산을 느리게 하지만, 2개 디스크나 2000개 디스크의 배열이나, RAID는 확실히 성능을 증대시킨다.

데이터 보안

데이터 보안은 하나나, 가끔씩 많은 하드드라이브들의 완벽한 불량으로 배열이 헝클어지거나, 배열에 속해 있는 어떠한 데이터도 잃어버리지 않으려는 것에서 나온 개념이다. 이것은 데이터 저장 용량에 관련되어 해결되는데, 예를들어 몇몇 디스크 용량이 추가 데이터 저장의 댓가로 희생된다. 반복량은 미러링을 통해 나오는데, 이것은, 모든 데이터의 중복 복사로 패리티 정보를 통해 모든 데이터가 보호되는데, 나중에 다루게 될 것이다.

데이터 가용성

데이터 가용성은, 배열이 데이터 분실 뿐만 아니라 서비스의 중단을 초래하는 디스크 고장이 나올 때 데이터 보안과 혼돈되지 말아야 할 것이다. 이 기능이 일반 사용자에게는 특별히 중요하지는 않고, 기업용에서 중요한 것이다. 가끔씩 이것은 간단히 고장난 디스크를 교체할 때 웹 싸이트 같은 서비스가 꺼지면 안되는 곳에서 쓰인다. 데이터 가용성은 데이터 보안을 꼭 포함하지만, 데이터 보안은 데이터 가용성을 꼭 포함할 필요는 없다. Host-swapping과 hot-sparing 은 배열을 끄지 않고서도 고장난 디스크의 회복을 할 수 있게 하는 것으로 많은 RAID 컨트롤러에서 쓰고 있는 기능이다.

용량 증대

당신이 한개의 볼륨에서 엄청난 공간을 필요로할 때, 가끔 가장 큰 하드드라이브도 성에 차지 않을 때가 있다. 만약 당신이 무압축 1080p 비디오를 몇시간동안 녹화하여 심지어 가장 최근의 가장 큰 1TB 드라이브도 이 모든 정보를 저장하기에 충분하지 않을 때가 있다. 몇몇 500GB 디스크의 배열은 1개의 충분한 공간을 가진 드라이브만 만드는 것이 아니라, 1TB 플래그쉼 모델보다 GB당 훨씬 더 싼 가격이 된다. 여기에서 얻어지는 극단적으로 많은 용량의 드라이브 하나가 그렇게 성능이 좋은 것이 아니다. 만약 당신이 초고성능 DB를 필요로 한다면, 초고성능 드라이브의 사용이 이치에 맞다. 현재의 2.5인치 15k rpm 드라이브는 고성능 I/O 성능의 왕중왕이며, 최고용량이 73GB정도이기 때문에 아마 1개 이상의 드라이브를 사용할 것이다.

어떤 RAID 레벨이 어떤 일을 하는가에 대한 문제의 본질을 들어가기 전에, 우리는 몇몇 문장에 대해 우리 스스로 좀 더 친숙해져야 한다...

2페이지

스트라이핑

대부분 RAID 레벨은 스트라이핑을 쓰는데, 이것은 개개적인 파일들이 나뉘어져 1개 이상의 드라이브에 나뉘어 쓰이게 될 때 기술하는 단어이다. 스트라이핑은 RAID가 읽기와 쓰기 동작을 모든 디스크에 동시에 수행함으로써 기계적 저장 장치의 성능 제한에 근접하게 내는 방법이다. 4개 디스크 배열에서, 각 파일의 1/4씩이 각개 디스크에 있게 된다. 각개 디스크가 파일의 1/4만 쓰게 됨으로써, 작업은 1개 디스크에 쓸 때보다 훨씬 빠르게 완료된다. 파일을 다시 읽어들이는 때에도 비슷한 개념이 적용된다.



스트라이핑은 바이트 레벨이나 블록레벨로 수행된다. 바이트레벨 스트라이핑은 각각의 파일이 바이트 크기 단위로 나뉘어지는 것을 의미한다. 같은 4개 디스크 배열을 사용할 때를 예를 들면, 1번째 바이트는 첫번째 디스크에 쓰여지고, 2번째 바이트는 두번째 드라이브 같은 식으로 되는데, 5번째 바이트는 그때 첫번째 드라이브에 다시 쓰여지며 모든 연산 과정이 이렇게 반복된다.

블록 레벨 스트라이핑의 경우, 간단히 위의 표에서 'byte'라는 말을 'block'라는 단어로 재구성하면 된다. 각각의 파일은 블록 단위로 나뉘게 되는데, 기본적으로 512바이트이지만, 다른 크기로도 재정의 될 수 있다. 블록의 크기는 공통적으로 스트라이프 사이즈로 정해진다. 만약 파일 크기가 스트라이프 크기보다 작다면, 간단히 1개 디스크에만 저장이 된다.

스트라이핑은 중복량을 가지고 있지 않으며, 그리하여 데이터 분실에 대한 어떠한 보호책도 갖고 있지 않다. 많은 RAID 레벨들은 미러링이나 패리티 포함 스트라이핑을 사용하여 데이터 보안성과 가용성을 보증한다.

미러링

미러링은 중복 저장량을 주는 방법에 있어 가장 단순한 방법이다. 이 기술은 스트라이핑으로 혼합되지 않은 2개의 디스크에서만 쓰일 수 있다. 데이터가 1개 디스크에 쓰이면, 동시에 다른 디스크에도 쓰이게 되어, 미러된 배열의 2개 드라이브는 언제나 정확히 각개 다른 디스크에 대한 복사본이 되게 된다. 만약 드라이브 중 1개가 고장나도, 다른 드라이브가 인계받기 때문에 데이터 손실이나 정지되지 않고 계속 서비스를 계속 할 수 있게 된다. 이 중복 형식은 어떠한 휘황찬란한 계싼을 필요로 하지 않으므로 실행하기에 아주 가볍기 때문에 온보드 RAID 솔루션으로 보통 쓰인다. 미러링의 단점은 공간의 비효율적인 사용에 있다. 미러링을 사용하는 배열은, 디스크의 전체 용량의 반에 해당하는 용량이 중복량으로 가게 된다.

패리티

패리티는 중첩되는 데이터로 전체 용량의 반을 잃어버림이 없는 중복량을 제공하는 방법으로 스트라이핑에서 쓰일 수 있는 방법이다. 중복량을 패리티로 사용하는 배열에서는, 1개 드라이브의 크기보다 작은 공간이 디스크 고장의 경우 전체 배열을 회복시킬 수 있는 정보를 저장하는데 필요한 공간으로 쓰인다. 이 패리티 정보는 논리적 '배타적OR' 로 디스크에 데이터가 저장되는 것에서 파생된 것이다. 만약 당신이 오늘 아침 커피를 아직 마시지 않았다면, (정신이 맑지 않다면) 이 다음 구절은 넘어가고 싶을 것이다.



XOR 이라고도 불리우는 배타적 OR 작동은, 참/거짓의 이 2개 값 중, 오직 하나의 값이 참일 때만 참이다. 우리는 컴퓨터 얘기를 하고 있으므로, 참과 거짓 대신 1과 0을 사용하겠다. - 0은 거짓, 1은 참.

이제, 만약 당신이 위 표를 보고 있다면, 표에 열이 눈에 띌 것인데, 만약 1개 열이 지워졌다면, 남겨진 2개 값으로 XOR  작동을 하여 다시 재구성될 수 있다. 패리티에는 이런 개념이 숨겨져 있다. XOR 작동은 데이터의 바이트단위로 작동되어 한번에 1비트씩 단비트 단위로 작동된다.



이 위 표는, 싱글 비트와는 반대되게 바이트가 쓰이고 있다. 심지어 첫 2개 열에 난수 값이 주어졌다 하더라도, 1개 열이 지워져도, 정보는 남겨진 2개 열에 의한 XOR 작동으로 정보가 재구성될 수 있다.

중복량 정보 연산의 형식은 여느 디스크의 비트, 바이트나 블록 상에서 패리티 정보를 계산하는데 쓰일 수 있다. 예를들어, 위의 예제는 추가적인 드라이브의 첨가로도 확장될 수 있다.



다시한번 말하지만 만약 값이 지워졌다면, 값은 행의 나머지 값에서의 XRO 연산 작업을 함으로 정확하게 계산될 수 있다. 위의 표에서 보는 것은 4개 디스크 RAID3 배열이 비트레벨에서 어떻게 되는지에 대한 핵심이다. ( 비록 당신이 12바이트 만큼의 게임을 설치하지 않는다 하더라도)

중복량 정보에 대한 패리티를 사용하는 것의 단점은 계산적으로 비싸다는 것이다. 위 표의 한 개 열을 없애고 남은 값 에서 지워진 값을 연산해보라. 확실히, 컴퓨터는 암산하는 것보다 좀 더 빠르지만, 이 연산의 엄청난 숫자들은 매순간마다 엄청난 연산을 수행을 해야되는 필요가 있다. 만약 4디스크 배열이 (심지어 1개 디스크 표준 속도에 가까운 속도인) 50MB/sec의 쓰기 속도를 낸다면, RAID 컨트롤러는 초당 300 million개 가까운 XOR 연산을 수행할 수 있어야 한다.

이것은 평균적인 가정용 PC에서 보기 힘든 RAID 설정이지만, 특별히 낯선 것은 아니다. 외부 서버 환경에 가장 보통으로 쓰이는 RAID 레벨을 볼 때, 그것들의 작동 행태를 본다면, 그것들을 이용하는데 제일 수월한 레벨이 어떤 것인지 예측할 수 있을 것이다.

3페이지

RAID0 - 중복량이 없는 블록레벨 스트라이핑

RAID0은 오늘날 거의 모든 새 메인보드에 내장되어 있기 때문에 성능 증대를 위한 데스크탑 시스템에 쓰이는 가장 공통적인 RAID 레벨 중 하나이다. 이 RAID 레벨은 단순히 저것들과 혼합이 가능함에도 불구하고, 미러링이나 패리티 없이 스트라이핑만 하는데, 이것은 나중에 다루겠다.

배열에 쓰인 모든 파일들은, 512 바이트보다(또는 따로 설정된 블록/스트라이프 크기로) 더 큰 파일로 제공되어 다수의 디스크에 고루 나뉘어진다. 만약 파일이 1블럭 안에 맞다면, 이것은 간단히 배열에 다음 사용 가능한 블럭으로 쓰여지며 1개 디스크에만 남게 된다. 이것은 모든 작업이 모든 디스크에서 병렬적으로 수행되기 때문에 파일의 쓰기와 읽기를 가속시키게 된다. 이것은 무작위/순차 읽기와 쓰기 수행 시 모두에 적합한 속도 증가가 된다.

RAID0의 형태는 문서상으로는 당신의 데이터를 1개의 디스크에 저장하는것과 비교해 극도로 향상된 성능을 제공하기 때문에 하드웨어와 성능 중시 매니악들에게 아주 구미가 당기는 것이다. RAID0이 속도를 엄청나게 올리는 것은 특정 상황에서는 맞는 말이지만, 이 상황은 가정용 PC에서 특별히 적용되는 것이 아니다. 하드드라이브 벤치마크는 가정용 시스템에서 RAID0의 성능 저하로 많이 얻어맞을 때가 있다. (그리고 빠돌이 정신도 이따금씩 합세하기도 한다.)

우리는 하드드라이브 기술의 소개에서 이미 하드드라이브의 벤치마크는 엄청나게 어려워 실제 성능의 추측만 할 수 있다는 것을 이미 알 수 있다. 하드드라이브 벤치마크 프로그램의 주력적인 기반은 순차적 전송 비율에서의 그들의 점수놀음으로, RAID0은 큰 수치를 가져다 주지만 데스크탑 성능에는 약간 동떨어져있다.



만약 당신이 엄청난 비트의 아주 큰 파일(몇백 메가바이트 이상)에 대한 작업을 한다면, RAID0이 당신에게 적격이다. 가정에서 사용할 때 RAID 0은 Audio와 비디오 제작의 은인이다. RAID0이 제공하는 순차 쓰기 속도는 때때로 무압축 HD 비디오 녹화에 필요하며 높은 순차 기록 전송률은 초고해상도 사진, 하이파이 오디오나 비디오를 편집하는데 가속을 붙인다.

RAID0 배열에 설치한 게임역시 이따금 게임에서의 레벨 로딩 시간의 이득을 볼 수 있다. Battle field 2142에서 맵로딩이 몇초 더 빠르면 다른 누구보다 유리한 고지를 차지할 수 있다! RAID0을 하지 않는다면, 절대로(절대!) 게임 상에서 높은 프레임 레이트를 기록할 수 없다는 것을 기억하라. OS 로딩 시간도 약간은 줄어들 수 있지만, RAID 컨트롤러의 바이오스는 POST시 초기화를 요구한다. 이 추가 시간은 보통 Windows의 시작 화면에서 몇초를 줄이는 것보다 훨씬 낫다.

RAID0은 또한 무작위 쓰기와 읽기에 최고지만, 이런 종류의 디스크 활동은 서버에 주로 쓰인다. 배열의 디스크마다 각개파일을 나누기보다, 큰 스트라이프 크기와 많은 작은 파일로 쪼개면 각각 분리된 디스크에 파일이 저장되게 된다. 대부분의 RAID 컨트롤러는 배열안의 디스크 마다 독립적으로 쓰기/읽기 수행을 시킬 수 있는 능력이 있어 다른 파일이 디스크에서 불려올때 파일들은 배열 안의 한 개 디스크에 쓰여질 수 있다. RAID0 배열은 패리티 정보가 주어진 것이 없기 때문에 연산을 필요로 하지 않아, 아주 적은 컨트롤러 오버헤드만으로 파일을 디스크에 빨리 적을 수 있다. 이런 RAID0의 특성은 웹 서버 같은 곳에서 이득을 볼 수 있지만, 현재 이 글을 읽는 당신같은 독자는 침실에서 즐기려 이런 종류의 배열을 사용할리는 없다고 본다.

그러나 여기에도 꺼릴 점, 아주 큰 꺼릴만한 문제가 있다. - 만약 RAID0에서 1개 디스크가 고장이 나면 배열 안의 모든 데이터가 회복 불능 상태가 되고, 특화되지는 않은 데이터 복구 서비스를 이용해야 한다.(행운이 뒤따른다면, 파산선고 까지는 가지 않을 것이다.) 심지어 SATA에서 일어나기 쉬운 케이블 탈거 현상 사고가 당신에게 일어난다면, 당신은 모든 것을 잃어버릴 것이다. RAID0은 중복량이 없다는 면에서 약간의 오기인데, 그렇다고 AID0이라고 부르는 것도 이상하다. 요즘 나오는 드라이브들은 아주 안정적이며 최근 몇년간 문제화 된것 도 없고, 대부분의 사용자들은 크기에 대한 제약으로 드라이브를 교체할 때까지 오랫동안 쓰지만, 모든 드라이브가 똑같은 것은 아니다.

디스크의 사용 시간이 중요한 것이 아니다. 다수의 드라이브를 사용하면 실제적으로 디스크 고장을 겪을 위험율이 훨씬 더 증가하게 된다. 간단히 말하면, 4개의  RAID0 배열은 1개 드라이브를 사용하는 것보다 고장 확률이 4배 더 증가한다. 당신의 모든 데이터를 배열로 인해 불완전해진 드라이브에만 넣는 것은 위험한 일이다. 추가적인 위험은 온보드 RAID 컨트롤러의 사용 때 나온다.

만약 당신이 RAID0에서 괜찮은 성능 이득을 얻을 수 있다고 느낀다면, 우선적으로 데이터 관리를 잘하고 왠만하면 RAID0+1이나 RAID 10을 쓰는 것이 좋다. 혹시라도 고장이 났을 때, 당신이 정기적인 백업을 그렇게 중요하게 생각하지 않는 사람이라면 확실히 더 좋은 방법이다.

장점

/큰 파일 작업 시 성능 향상
/100%의 용량 효율이라, 중복량으로 희생되는 드라이브가 없다.
/싸다 - 내장/소프트웨어 컨트롤러도 성능이 잘 나온다.

단점

/데이터 손실 위험 증가
/가정용 어플리케이션에서는 괄목할만한 성능 향상이 이루어지지 않는다.

3페이지

RAID1 - 스트라이핑이 없는 미러링

RAID0 같이, 데스크탑에서 가장 보편적으로 쓰이는 '안정성 있는' RAID 레벨이며, 대부분의 메인보드 내장 컨트롤러에서 지원하는 것이다. RAID1은 단순히 똑같은 데이터를 딱 2개(그 이상도, 이하도 아닌) 디스크 배열에 똑같이 기록하게 된다. 주요 장점은 명확하게 : 1개 드라이브가 고장이 나도 어떠한 데이터도 손실되지 않는다. 1개 디스크가 고장나면, 배열은 성능저하된 상태로 운용된다. RAID1에서는 복잡한 계산이 주어지지 않기 때문에, 성능저하가 되어도 데이터 안전성은 얻어지게 된다.

RAID1 배열은 두 드라이브가 활성화 되어 동작하는 상태와 매우 유사한 성격으로 성능저하가 된 상태에서 계속 작동을 한다. (많은 온보드에서 RAID 컨트롤러가 지원하지 않는) hot-swapping이 지원되는 RAID 컨트롤러를 사용하면 고장난 디스크는 교체 가능하며 시스템 전원을 내리지 않고서도 배열을 재구축 할 수 있다. RAID1에서 제공받는 데이터 안전성의 댓가는 공간효율로 치르게 된다. RAID1 에서는 오직 물리적 용량의 반만 사용하여, 2개의 500GB 드라이브를 RAID1로 사용할 때, 마법같이 그 중 하나의 용량이 사라져 버린다.



성능 측면에서, RAID1은 1개 디스크 사용에 비해 별다른 차이점을 보이지 않는다. 순차적 읽기와 쓰기 성능은 거의 동일한데 반해 무작위 읽기와 쓰기 성능은 약간 차이가 나는데, 1개는 높고 나머지 1개는 낮다. 무작위 읽기 성능은 1개 드라이브가 제공하는 성능보다 훨씬 좋은데 컨트롤러가 제공하는 서비스가 각각의 드라이브에서 병렬적으로 읽기 요청을 각기 다르게 보내서 그런것이지만, 이것은 서버에서의 사용에 있어 우선적인 이득이 된다. 왜냐하면 데스크탑 PC에서는 그렇게 많은 무작위 접근이 일어나지 않기 때문인데, 그래서 데스크탑 PC에서는 RAID1이 제공하는 눈에 띄는 성능 변화를 제공하는 것이 잘 보이지 않는다. 그러나 뒤집어 보면, RAID1에서의 무작위 쓰기 성능은 1개 드라이브가 제공하는 성능보다 약간 나쁜데, 데이터가 같은 시간에 두 드라이브에 같이 쓰여지기 때문이다.

한가지 절대 유념해야 할 것은 RAID1을 백업용도로 생각하지 말라는 것이다. 미러링을 할 때 물리 디스크 고장에서 당신의 데이터를 보호해주는 것은 맞지만, 소프트웨어 관련 데이터 손실까지 보호해주지는 않는다. 예를들어, 만약 특별히 짜증나는 바이러스가 당신의 시스템을 침공하면, 이것은 친절하게도 두 드라이브에 조화롭게 있는 데이터 모두를 부숴버릴 것이다. 또한 컨트롤러가 두 드라이브 모두에 데이터 손실을 해버리기 때문에 일어나는 배드 클러스터같은 물리 드라이브 손상으로 인해 데이터 손실이 일어날 기회도 있다.

장점

/높은 안정성
/온보드 RAID 컨트롤러에서 손쉽게 수행된다.
/1개 드라이브 보다는 읽기 성능이 좀 더 나아진다.

단점

/50% 공간 효율
/쓰기 성능이 1개 드라이브보다 좀 더 나빠진다.

4페이지

RAID 10과 RAID 0+1 - 블록레벨 스트라이핑과 미러링의 합세

이 RAID 레벨들은 RAID0과 RAID1의 혼합이다. 이것들은 RAID0의 읽기 성능과 쓰기성능을 모두 유지하는데, 대부분의 RAID0의 무작위 읽기와 쓰기 성능과 RAID1의 데이터 안정성을 제공한다. 또다른 가산점은 이 미러링과 스트라이핑 둘 다 복잡한 패리티 연산을 하지 않는다는 것으로, RAID 컨트롤러를 특별히 비싼 것을 쓸 이유가 없어진다.

주된 단점은 RAID1과 같다. - 50% 저장 효율. RAID10/01의 낮은 공간 효율은, 특별히 큰 배열을 사용할 때 드라이브를 구입하려고 돈을 지불하면서, 컨트롤러가 저렴함으로 인해 이루었던 단가 절감을 빠르게 소멸시켜 버린다.

보통 잘못 생각하는 것이 RAID10과 RAID 0+1이 2개의 단어가 다름에도 같은 것이라고 생각하는 것이다. 이 2가지 형태의 RAID는 비슷하며, 같은 기술을 사용하는데, 그것들이 사용하는 명령들은 다르다. 대부분의 온보드 RAID 컨트롤러는 비록 그들의 RAID10이라고 주장하더라도, 실제적으로 RAID 0+1을 지원한다. 추가적으로 구입하는 RAID 어댑터들에게서는, 둘 중 하나만 지원하거나, 가끔씩 두 RAID 레벨 모두 지원하는 것이 있기도 하다.



RAID0+1은 RAID0의 RAID1이나, 2개의 스트라이프된 미러로 아주 쉽게 기술된다.8개의 주어진 디스크에서, 배열은 각각 4개의 디스크로 구성된 2개의 RAID0으로 나뉘며 1개의 배열은 다른 배열의 미러이다. 같은 8개의 디스크로, RAID10으로 설정되면, 4개의 RAID1 배열로 나뉘며 이때 컨트롤러는 이 미러가 된 배열을 1개의 RAID0 배열로, 다시 말하면 2개 이상의 미러된 배열의 스트라이프로 배치시킨다.

이것을 넘겨보면 2개의 RAID 설정은 하등 다를게 없어 보이는데, 간단히 다른 루트는 같은 목표로 향하고 있으며, 대부분의 방법이 이런 경우이다. 디스크 요구사항, 용량 효율과 성능 특성은 같다. 2개 설정이 아주 크게 다른 영역은 장애 허용 능력에 있다. 만약 4개 디스크가 RAID0+1로 설정이 되면, 장애 허용 능력은 4개 디스크로 구성된 RAID10과 동일하여, 모든 데이터 손실은 2개 드라이브 고장까지는 되지 않는다. 오직 다른점이라곤 어떤 드라이브가 고장나는가만 다르다. 4개 초과의 드라이브가 쓰일 때, RAID10은 명확히 데이터 안정성이 중요시 되는 곳에서는 앞서게 된다.

8개의 드라이브가 RAID0+1 배열로 설정될 때, 디스크 1~4와 디스크 5~8은 2개의 분리된 RAID0 배열로 설정되어 각기 미러가 된다. 우리는 만약 RAID0 배열에서의 디스크 1개가 고장나면, 모든 배열이 손실되어, 만약 디스크 1번이 고장나면, 모든 RAID0 배열이 고장난다는 것을 알고 있다. 이것은 디스크 5~8이 stand alone 방식으로 중복량이 없이 RAID0으로 동작하여, 만약 이것들 중 1개가 고장이 나면, 당신의 데이터를 고이 떠나보내야 한다. 예를들어, 이런식으로 2번째 고장이 데이터 손실을 입을 확률은 4/7이며, 57%이다.

8개의 디스크가 RAID10 배열로 쓰일 때, 디스크 1-2, 3-4, 5-6과 7-8은 스트라이프 된 RAID1 배열로 설정이 된다. 디스크1번이 고장나면, 배열은 디스크2가 추가적인 고장을 일으키지 않는 한 살아남을 수 있다. 이 배열에서, 이런식으로 2번째 디스크가 고장을 야기하여 데이터 손실이 될 확률으 1/7로, 대충 14%가 된다. 명확하게, 데이터 손실의 확률을 최소화 하기 위한 정확한 방법은 고장난 디스크를 교체하는 방법이지만, 이것은 언제나 배열이 재구축될 때 또다른 디스크가 고장이날 가능성을 가지고 있어, RAID10을 사용할 때 손상없이 사용할 확률이 좀 더 늘어나게 된다.

장점

/복잡한 패리티 연산이 없다.
/값싼 컨트롤러도 성능에 부담이 없다.

단점

/낮은 공간 효율

RAID3과 RAID4 - 분리된 패리티 디스크와 스트라이핑

이 RAID 레벨은 오늘날 그렇게 친숙하지 않은데, RAID3가 쓰였던 대부분의 상황에서, RAID5가 훨씬 더 좋은 선택이기 때문이다. 예외가 되는 곳은 아주 높은 읽기 효율을 유지하는 것을 요구하는 어플리케이션인데, 이런 것은 RAID3가 RAID5보다 여유롭게 성능을 상회한다. 가정용 시스템에서, 이것은 RAID5보다 RAID3이 게임 레벨을 로딩하는 데 더 빠를 수 있다는 것이지만, 그게 다다. RAID3에서의 쓰기 성능은 뒤쳐지는데, 분리된 패리티 드라이브를 사용하기 때문이며, 이것은 어느곳이든지 데이터가 배열에 쓰일 때마다 쓰여져야 한다.

보통 최고 성능 측면에서 보면 RAID5로 선택이 되고, RAID3는 오늘날 아주 희귀하다. RAID3는 기술적으로 RAID5보다 싼데, 좀 더 낮은 복잡함이 있기 때문이지만, RAID3가 잘 쓰이지 않는 이유는 아주 비싼 RAID 컨트롤러에서나 유용하게 사용가능하기 때문이다. XFX Revo 컨트롤러같은 NetCell RAID 프로세서를 쓰는 컨트롤러를 제외하고는, 많은 RAID5 어댑터 보다는 훨씬 싸다.



RAID3는 블록레벨 스트라이핑을 하는 것과 달리 바이트 레벨 스트라이핑을 함으로써 아주 특이하다. 이것은 모든 파일이 바이트 단위로 모든 드라이브에 동등하게 분할되어 스트라이프된 드라이브로 간다는 것을 의미하는데, RAID5나 RAID0에서 블록 크기보다 작은 파일은 1개 드라이브에만 저장되는 것과는 상이하다. RAID3의 이 형식은 모든 파일마다 파일 크기에 상관 없이 모든 드라이브에서 읽음으로 하여 추가적인 순차 읽기 성능을 제공한다. RAID3에서 분리된 패리티 드라이브를 사용하는 설정을 쓰는 RAID가 있는데, 비록 심지어 RAID3에선 좀 더 이질적이라도, 다른 RAID 레벨처럼 블록레벨의 스트라이핑을 한다. 이 주어진 RAID 레벨이 RAID3과 RAID5의 중간적 방법이라, 이것이 RAID4라고 불리기에 딱 맞다. RAID4는 훨씬 더 아주 희귀하게 쓰이는데, RAID3이나 RAID5가 최적의 선택이 아닌 곳인 아주 적은 곳에서만(그런곳이 있다면) 쓰이기 때문이다.

RAID3 장점

/1개 드라이브 고장을 부양가능하다.
/순차 읽기 성능이 RAID5보다 낫다.
/NetCell 컨트롤러가 아주 값싸다.

RAID3 단점

/바이트레벨 스트라이핑이 무작위 읽기와 쓰기 성능을 악화시킨다.
/분리된 패리티 드라이브가 병목현상의 주범이 된다.
/RAID5가 대부분의 상황에서 더 빠르고 더 싸다.

RAID4 장점

/음, 좀 튄다 정도?

RAID4 단점

/RAID5가 대부분의 상황에서 더 낫다.
/RAID3가 나머지 상황에서 더 낫다.
/RAID4를 지원하는 컨트롤러를 찾기가 어렵다.

5페이지

RAID5 - 분배된 패리티 정보와 블럭 레벨 스트라이핑

RAID5는 오늘날 가장 인기있게 쓰이는 RAID 레벨로 알려져있는데 왜냐하면 이것은 엄청난 전천후 능력이 있기 때문이다. RAID5가 최고가 아닌 곳이 없는데, 이것은 모든것이 좋고 적당한 정도의 저장 효율과 데이터 보안성을 가지기 때문이다. 이것은 최소 3개의 디스크를 요구하지만, 성능은 디스크 갯수의 증가와 함께 이루어지며, 얼마나 많은 디스크가 배열에 있든지 간에 상관하지 않고 1개 디스크의 용량이 패리티에 대한 공간으로 할애되게 된다.

RAID5 배열에 있는 어떠한 드라이브도 데이터 손실이 없이 고장날 수 있지만, (중복량이 줄어들면서) 성능 저하가 된 상태로 고장난 드라이브가 교체될 때까지 배열이 동작하게 된다. 고장난 드라이브가 있는 상태에서의 배열의 성능은 컨트롤러에 달려있지만, 약간의 저하에서 심각한 저하까지 다양하다.

이런 상태에서의 배열에서 추가적인 디스크 고장은 모든 데이터를 손실하는 것을 의미한다. 이것을 방지하기 위해 가능한한 드라이브를 빨리 교체하거나 hot-spare를 동작시키는 것도 좋은 아이디어이다. hot-spare란 디스크 고장이 날 때까지 배열에서 쓰이지 않는 드라이브를 말하는데, 이 때 컨트롤러는 자동적으로 새로운 디스크에서의 배열을 재구축하기 시작한다.



RAID5 배열에서 알맞은 성능을 얻기 위해서는 분리된 하드웨어 컨트롤러를 쓰는 것이 최고이다. 많은 온보드 컨트롤러가 기술적으로 RAID5를 지원하지만, 이것에는 XOR 계산을 하는 분리된 프로세서가 없다. 이것은 매 시간 데이터가 배열에 쓰여질 때마다 수행하는 몇백만의 XOR 연산을 익숙치 않은 CPU에 주는 것을 의미한다. 이 연산은 가장 빠른 멀티코어 프로세서에게도 쪼인트를 까는 것이다. 완전한 하드웨어 RAID5 컨트롤러는 최소한 그들 고유의 프로세서, 디스크 컨트롤러, 메모리 컨트롤러와 온보드 메모리를 가지고 있다. 높은 엔드 모델은 분리된 배터리 백업 모듈과 온보드 이더넷 포트도 내장하고 있다.

RAID 컨트롤러의 핵심은 그것의 I/O 프로세서인데, Intel의 IOP341프로세서는 최근의 워크스테이션용 RAID5 어댑터에 아주 많이 쓰이고 있다. 이 프로세서는, 다목적으로 설계된 CPU와는 다르게, XOR 연산 수행을 위해서 설계되었다. 이 분리된 I/O 프로세서는 CPU에 연산을 덜어주며 소프트웨어 RAID 보다 더 좋은 성능을 제공한다. 컨트롤러들은 또한 하드드라이브가 그들 고유의 온보드 캐시를 갖고 있듯이, 온보드 캐시를 가지고 있지만, 8~16MB인 하드 캐시 대신, 근대 컨트롤러는 128MB에서 수 GB대의 온보드 메모리를 가지고 있는 것도 있다.

시스템이 데이터를 배열에 쓸 때, 이것은 실제로 메모리에 직접 써서, 컨트롤러가 패리티를 계산하도록 하고 디스크 어디에 데이터가 쓰일지를 결정한다. 서버 환경에서 이것은 위험한데, 전력 손실같은 상황에선, 캐시 안의 여느 데이터든지 컨트롤러가 그들 고유의 배터리 백업이 없다면 캐시 안의 정보는 없어질 것이다. 이런 상황에서 컨트롤러는 write-through 정책을 쓸 수 있는데, 이리되면 데이터는 디스크에 곧바로 쓰일 수 있으며 캐시 전체를 건너뛰게 된다. 이것은 쓰기 성능을 극도로 저하시킬 수 있어 배러티 백업 모듈이나 그냥 위험을 감수하는 것이 더 좋다. 가정용 시스템에서, 캐시 안의 데이터를 잃는것은 그렇게 큰 문제는 아니니 이런 기능은 쓰지 않는게 최선이다.

데스크탑 환경에서, RAID5는 약간의 성능 향상을 가져오지만, (다른 RAID 레벨과 같이) 이것은 RAID에서 명확하게 이득을 얻을 수 있는 무엇인가를 하지 않는 한은 그렇게 놀라운점을 찾기는 어려울 것이다. 높은 읽기 속도는 RAID0에서 얻을 수 있는 것과 비슷한 성능이지만, 높은 위험도의 데이터 손실이 없다. 데이터 보안성은 데스크탑 환경에서 RAID5에서의 주요한 이득인데, 높은 공간 효율도 RAID1이나 RAID0+1/10 을 상회하는 가산 요인이 된다.

RAID5 컨트롤러가 비싸지만, 만약 배열이 단가에 맞는 적절하게 큰 용량이라면 디스크에서 절약하는 금액에 의해 충분히 가격이 효율적이다. RAID1의 50% 공간 효율은 2개 드라이브를 사용할 때만 용납할 수준이지만, 용량 요구량이 늘어날 때마다 가격은 급격하게 상승하는데, RAID5를 6개의 드라이브로 구성할 수 있을 때 10개의 드라이브로 RAID0+1을 구성할 수 있다면 누가 10개를 구입할 것인가? 당연히 이 때 당신은 컨트롤러에 더 돈을 써야 하지만, 드라이브에 대한 자금을 줄일 수 있으며, 그리고 누가 새로운 하드웨어의 휘황찬란한 광채를 마다하는가?

장점

/높은 유연성
/넒은범위의 지원
/높은 수준의 저장용량 효율 ( 1개 드라이브의 용량을 패리티 정보로 희생)
/모든 방면에서의 성능이 좋음
/컨트롤러가 아주 보편화되어 있어, 선택의 여지가 넓음

단점

/온보드 컨트롤러는 성능이 낮다
/추가 컨트롤러는 비싸다.
/모든 영역에서 최적이 아니다.

RAID6 - 2번 분배된 패리티 정보와 블럭레벨 스트라이핑

RAID6은 간단히 RAID5에 2배의 패리티 정보 양을 넣은 것으로 2배로 데이터 보호율이 뛰게 된다. RAID6 배열은 2개의 디스크 고장으로도 데이터 손실이 일어나지 않으며, 그리하여 아주 중요한 데이터를 얻었거나, 특별히 당신이 병적일 때 아주 적합하다. 이 추가적인 보호책은 디스크 용량과 성능을 희생하여 얻게된다. RAID6은, RAID5와 같이, 어떤 영역에서든지 아주 나쁘진 않으며 특정 영역에서 아주 뛰어나지도 않다. 대부분의 현대 워크스테이션용 RAID5 컨트롤러는 RAID6도 같이 지원하므로 RAID5에 비해 추가적인 비용을 대야 하는 것은 추가적인 드라이브에 대한 것 뿐이다.



최소 4개의 드라이브로 RAID6 배열의 설정이 가능하기 때문에, 많은 숫자의 드라이브와 특별히 많은 용량 배열에서 더 적합하다. 더 높은 배열의 용량은, 디스크 고장 후에 재구축 하기에 좀 더 많은 시간이 소요된다. 몇 TB 수준의 RAID5 배열을 재구축 하는 것은 많은 시간이 걸리며 만약 재구축 시 다른 디스크가 고장난다면, 배열 상의 모든 데이터는 손실된다. RAID6는 이런 일에 대한 보호책을 제공해준다.

장점

/2개 디스크 고장에서도 생존한다.
/보드 상에서 알맞은 성능을 제공한다.

단점

/RAID5보다 약간 성능이 낮다.
/컨트롤러가 비싸다.

6페이지

내가 RAID가 필요하나?

집에서 RAID의 사용을 하고 싶은 몇몇 상황은 아주 극소수이다. 많은 상황들은 확실히 필요한 상황은 아니지만, 이것은 다양한 이득을 볼 수 있다. 디스크 용량이 커지면, 더 많은 중요 데이터가 당신의 하드드라이브로 들어갈 수 있으며 디스크 고장도 아주 머리아픈 문제로 다가오게 된다. 디스크 고장에 대한 상황에서 데이터 손실에 대한 보호는 가격을 따질 수 없으며, RAID는 아주 큰 마음의 안정을 제공한다.

성능 관점에서 본다 하더라도, RAID는 데스크탑 에서의 사용에서 많은 잡음을 일으키지 않는다. 당연히, 당신은 게임을 로딩할 때 시간 단축 하기를 원하겠지만, CPU나 메모리를 업그레이드 하는 것만으로도 같은 효과를 얻을 수 있다. 이것은 당신이 고사양 그래픽이나, AV 작업을 하지 않는 한은, RAID의 잠재 성능은 그렇게 확 다가오지는 않을 것이다.

당신이 느낄만한 아주 큰 차이는 실생활 성능에서 약간, 아니면 전혀 상관 없는 디스크 벤치마크를 구동시킬 때이다. 레벨간의 성능 차이, 레벨마다의 중복량 요구와 어떤 RAID를 쓰는가에 따른 금액 소요가 아주 균형적으로 작동하며, 적재 적소에 RAID 레벨을 써야 한다.



결론

당신이 RAID에 대해 재미있게 즐겼으며 이것이 도움이 된다는 것을 느꼈길 바란다. 더 중요한 것은, 주위에서 둘러싸고 있는 기술에 대한 혼란을 어느정도 재정립 하였기를 바란다. RAID가 당신에게 할만한지 아닌지를 어떻게 결정하든지 간에, 각기 다른 종류에서 당신이 정말로 예상할수 있는 것을 잘 이해했기를 바란다.

출처: http://www.bit-tech.net/hardware/2007/06/11/understanding_raid/1


기글하드웨어(http://gigglehd.com/zbxe)에 올라온 모든 뉴스와 정보 글은 다른 곳으로 퍼가실 때 작성자의 허락을 받아야 합니다. 번역한 뉴스와 정보 글을 작성자 동의 없이 무단 전재와 무단 수정하는 행위를 금지합니다.