[Raid0-5] Raid 설명 - 디스크 미러링 - 레이드 설명 - raidrive - raid0 - raid5

Redundant Array of Inexpensive/Independent Disk
복수 배열 독립 디스크

저장장치 여러 개를 묶어 고용량·고성능 저장 장치 한 개와 같은 효과를 얻기 위해 개발된 기법입니다.

저장장치소모품입니다.
원형 판에 기록하는 HDD와 전자 칩에 기록하는 SSD 모두 소모품입니다.
5년에서 10년정도 수없이 읽고 쓰기를 반복하면 녀석들이 지쳐서 (여러 가지 물리적인 원리가 있지만, 쉽게 말해서 지치는 것이 맞다.)

읽고 쓰는 능력이 퇴화되며 속도가 느려지고, 결국에는 읽고 쓸수 없는 부분인 불량섹터가 발생하게 됩니다.
가령 '사랑해요'라는 내용을 저장했는데, 다음번에 읽어들일 때 '사탕해요'라는 내용이 튀어나오면, 상식적으로 저장된 내용이 1바이트라도 왜곡이 된 그 디스크는 가치를 상실하고 폐기처분의 대상이 되고 맙니다.

여러개의 디스크를 특정 방법으로 연결해주는 시스템인 RAID는 바로 이렇게 저장장치가 갑자기 고장나는 경우를 대비해서 활용할 수 있는 유용한 기법입니다.

가정용 컴퓨터에서 읽고 쓰는 양이 많지 않다면 그다지 필요성을 못 느끼겠지만, 하루에도 천문학적인 숫자의 바이트를 주고받으며 읽고 쓰는 구글이나 페이스북 데이터 담당 본체 컴퓨터를 상상해보면.

물론, 이후에도 설명되지만 RAID의 본래 목적은 데이터의 가용성(무정지)이지, 명확히는 백업용은 아닙니다.
무정지 구현을 극도로 추구하면 RAID 1, 고성능 구현을 극도로 추구하면 RAID 0이 되며, RAID 5, 6은 둘 사이에서 적당히 타협한 형태. RAID 10이나 RAID 01과 같이 두 가지 방식을 혼용하는 경우도 있습니다.


RAID 서버에 바이러스가 침투하면 RAID를 구성하고 있는 모든 디스크가 동시에 다 같이 감염이 됩니다.
랜섬웨어 역시 마찬가지. 초대형 서버의 경우에도 RAID 외에 별도로 미러링 서버나 자기 테이프 등 별도의 데이터 백업 솔루션을 마련해 둡니다.
데이터 백업의 용도로 RAID를 염두에 두고 있는 사람이 있다면 다른 대책을 고려하는게 좋습니다.
성능이 다른 두 하드웨어를 이용하면 성능이 낮은 쪽으로 하향 평준화 되고 맙니다.





 

 

동작 방식에 따라 Level 0 ~ 6으로 분류한다. 주로 사용되는 것은 0, 1, 5, 6이며 컨트롤러 개발사에 따라 다른 방식을 제공하기도 한다.

 

RAID 0

 

Striping.
여러 개의 멤버 하드디스크를 병렬로 배치하여 거대한 하나의 디스크처럼 사용한다. 데이터 입출력이 각 멤버 디스크에 공평하게 분배되며, 디스크의 수가 N개라면 입출력 속도 및 저장 공간은 이론상 N배가 된다. 다만 멤버 디스크 중 하나만 손상 또는 분실되어도 전체 데이터가 파손되며, 오류검출 기능이 없어 멤버 디스크를 늘릴수록 안정성이 떨어지는 문제가 있다. 따라서 장착된 하드디스크의 개수가 RAID-5 구성 조건에 충족되지 않는 등의 불가피한 경우가 아니라면 절대로 RAID 0으로 구성하지 않는 걸 추천한다.

 

RAID 1

 

Mirroring.
각 멤버 디스크에 같은 데이터를 중복 기록한다. 멤버 디스크 중 하나만 살아남으면 데이터는 보존되며 복원도 1:1 복사로 매우 간단하기 때문에, 서버에서 끊김 없이 지속적으로 서비스를 제공하기 위해 사용한다.

멤버 디스크를 늘리더라도 저장 공간은 증가하지 않으며, 대신 가용성이 크게 증가하게 된다. 상용 환경에서는 디스크를 2개를 초과해서 쓰는 경우가 드물지만, 극한 환경에서는 3개 이상의 멤버 디스크를 사용하기도 한다. 읽기 성능은 Non-RAID와 별 차이가 없고, 쓰기 성능은 이론적으로는 소폭 하락한다. 다만, 이 하락이 하향 평준화가 기준이므로 동일 모델 동일 주차 생산품으로 구성한 경우 크게 차이가 없을 수 있다.

데이터 안정성과는 상관없다. 데이터의 안정성은 non-RAID 환경에서도 백업 솔루션을 이용하면 버전별로 쭈욱 저장하여 구현이 가능하다. RAID 1의 목적은 가용성이다.

 

RAID 2, 3, 4

 

Fault Tolerance using Dedicated Parity Bit.
오류정정부호(ECC)를 기록하는 전용의 하드디스크를 이용해서 안정성을 확보한다. RAID 2는 비트 단위에 Hamming code를 적용하며, RAID 3, 4는 각각 바이트, 워드 단위로 패리티를 저장한다. 하나의 멤버 디스크가 고장나도 ECC를 이용하여 정상적으로 작동할 수 있지만, 추가적인 연산이 필요하여 입출력 속도가 매우 떨어진다.

예를 들어서 디스크 1에 3, 디스크 2에 6을 저장하면 디스크 3에는 1+2의 값인 9를 저장한다. 이렇게 저장하면 디스크 1이 사라지더라도 디스크 2의 6의 값을 읽고, 디스크 3의 9의 값에서부터 디스크 1의 값 3을 읽을 수 있기 때문에 저장소 하나가 파손되더라도 데이터를 읽을 수 있는 것이다. 용량을 약간 희생하지만 하드 하나만 뻑가도 망할 수 있는 일부 레이드 시스템에 비해 매우 높은 가용성과 저장용량 효율을 보인다.

모든 I/O에서 ECC 계산이 필요하므로 입출력 병목 현상이 발생하며, ECC 기록용으로 쓰이는 디스크의 수명이 다른 디스크들에 비해 짧아지는 문제가 있어 현재는 사용하지 않는다.

 

RAID 5

 

Fault Tolerance using Distributed Parity Bit.
기본 원리는 RAID 4와 비슷하나, 패리티를 한 디스크에 밀어 넣지 않고 각 멤버 디스크에 돌아가면서 순환적으로 저장하여 입출력 병목 현상을 해결한다. N개의 디스크를 사용하면 (N-1)배의 저장 공간을 사용할 수 있다. RAID 4처럼 하나의 멤버 디스크 고장에는 견딜 수 있지만 디스크가 두 개 이상 고장 나면 데이터가 모두 손실된다. 데이터베이스 서버 등 큰 용량과 무정지 복구 기능을 동시에 필요로 하는 환경에서 주로 쓰인다.

매번 쓰기 작업 때마다 패리티 연산 과정이 추가되어, 성능을 보장하려면 고가의 패리티 연산 전용 프로세서와 메모리를 사용해야 한다. 멤버 디스크도 최소 3개 이상 사용해야 하므로 초기 구축 비용이 비싸다는 단점이 있다. 다만 멤버 디스크의 수가 5개 이하인 중소규모 파일서버라면 소프트웨어 RAID도 괜찮다. 부팅용 하드가 별도로 필요하다는 게(그리고 부팅 하드가 뻑나면 RAID까지 풀려서 복구하기 짜증난다는) 애로점이긴 하지만... 읽기 작업은 전체 디스크에 분산되어 속도가 향상되지만, 쓰기 작업은 적어도 둘 이상의 디스크(데이터+패리티)에서 진행되어야 하므로 성능이 약간 떨어진다.


RAID 1과 비슷하게 하드디스크가 하나가 사망해도 일단 작동은 해서 가용성은 높다. 그러나 패리티 연산을 통해서 데이터를 저장한다는 특징 때문에 취급상 유의가 필요하며 까다롭다. 다음은 RAID 5를 고려한다면 알아야 할 사항이다.
1. RAID 0보단 안전하다는 인식과 달리 오히려 많은 량(보통 8개 이상)의 디스크를 스토리지로 묶으면, 패리티 연산오류 발생 확률이 높아져서 인해 RAID 0으로 묶은 것보다 깨질 확률이 높아진다고 한다. 그러므로 대단위로 스토리지를 만드려면 RAID 6 또는 RAID 10을 권한다.
2. 데이터가 분산 저장되어 있기 때문에 어레이가 깨지거나 보장되는 내결함 디스크 개수(RAID 5는 최대 1개)를 초과하는 경우 전자는 데이터를 살리기가 대단히 어렵고 후자는 사실상 데이터를 살릴 수 없다.
3. 어레이를 복구하려고 하드를 뽑았는데, 하필 정상이었던 하드를 잘못 뽑아서 어레이가 깨지는 경우도 심심치 않게 발생하니 주의하도록 할 것. 고급 레이드카드/소프트웨어 레이드들은 다시 붙이면 잘 붙긴 하나, 그래도 안 붙는 경우도 있으니 주의...
4. 리빌딩을 하고 있을 때 해당 어레이에 부하를 주지 말 것. 리빌딩 도중에 사용하면 리빌딩 시간이 늘어나고, 무엇보다 리빌딩 하다가 깨질 수도 있다.
PC의 계산 성능이 급속도로 향상됨에 따라 더 이상 패리티 연산 프로세서가 필수적이지 않기 때문에, 윈도우 10에서도 이제 소프트웨어적으로 RAID 5를 구현할 수 있게 되었다. Manage Storage Spaces 기능을 사용해서 드라이브 여러 대를 Storage Pool로 구성할 때, Resilience 옵션을 Parity로 선택하면 된다.

 

RAID 6

 

Fault Tolerance using Distributed Double Parity Bit.
RAID 5와 원리는 같으며, 서로 다른 방식의 패리티 2개를 동시에 사용한다. 성능과 용량을 희생해서 가용성을 높인 셈. N개의 디스크를 사용하면 (N-2)배의 저장 공간을 사용할 수 있다.

스토리지 서버와 같이 디스크를 빼곡히 꽂는(기본 10개 단위) 환경에서 RAID 5는 유지보수가 어려우며, 어레이 안정성을 높이기 위한 목적으로 주로 사용된다. 하드 하나가 고장난 RAID 5 장비에서 교체 하려다가 실수로 멀쩡한 하드 하나를 뽑는다면 RAID 어레이 전체가 사망한다. 동일 상황에서 RAID 6는 문제가 없다. 컨트롤러가 RAID 5보다 더 비싸고, 멤버 디스크도 기본 4개 이상 확보해야 하므로 초기 구축 비용이 비싸다.

하드디스크를 대단위로 물려야 하고, 가용성의 필요성이 RAID 5보다 높아야 하는 상황에서 쓰인다.

 

raid1+0 / raid0+1

 

개인/소규모 서버

99% 이상이 RAID 0을 사용한다. 이 경우에는 원래 목적인 '남는 저장장치의 활용' 차원에서 사용하는 경우가 많다.

주로 적은 용량의 SSD를 장만했는데 업그레이드 하고 남은(또는 방 어딘가에 굴러다니는) 하드디스크에 RAID 0 설정을 하여 용량이 큰 게임을 RAID 볼륨에 설치해서 성능을 조금이나마 올릴 목적으로 사용하며, 토렌트 등을 굴릴 때 하드디스크의 대역폭을 확보하기 위하여 설정하기도 한다. 개인 서버의 경우에는 부하를 분산시키기 위해 남는 디스크를 설치하는 경우도 있다.


대규모 서버

서버가 다운되면 큰 손해를 입는 대규모 서버의 경우에는 RAID를 주로 사용한다. 물론 대규모 서버에서도 위에 언급한 백업 솔루션은 충분히 구축하지만, RAID가 아닌 이상은 어쨌든 서버 닫고 디스크 복구하고 다시 열어야 하는 건 매한가지라 속도와 디스크 내구성에 조금 손실을 입더라도 서버 가용성을 최대한 확보할 목적으로 사용한다. 자동 복구 솔루션을 구축해 놨을 경우 서버 담당자가 바로 달려가지 않더라도, 주기적으로 손상된 어레이만 점검하고 교체하는 것만으로도 충분한 안정성을 얻을 수 있기 때문 그로인해 OS나 중요한 파일같은경우 RAID1로 묶고 나머지 대용량 저장장치는 보통 주로 RAID5 또는 RAID6으로 묶는다.

댓글

Designed by JB FACTORY