System/Windows Server

[Windows Server 2016] RAID 이론

jykim23 2019. 3. 3. 15:09

※잘못된 내용과 오타가 있다면 덧글로 피드백주시면 감사하겠습니다.※

이 포스트는 '뇌를 자극하는 Windows Server 2012 R2' 한빛미디어 출판사의 책으로 공부한 내용을 정리한 것입니다.

 

 

 

목차

 

1. RAID의 개념과 구분

 

2. RAID 레벨

 

3. Windows Server에서 RAID 구현 실습

 

4. 하드디스크에 문제가 발생한 경우

 

 

 

RAID

여러 개의 디스크를 하나로 묶어서 사용하는 방식에 대해서 살펴보자.

 

 

1. RAID의 개념과 구분

 RAID란 Redundant Array of Independent Disks 혹은 Redundant Array of Inexpensive Disks의 약자로, 원래 목적은 저렴한 저용량의 디스크 여러 개를 하나의 비싼 대용량의 디스크로 사용하고자 하는 것이었습니다.

 

 예를 들어 1TB 하드디스크 10개를 가지고, 마치 10TB 하드디스크 1개처럼 사용하고자 하는 것입니다. 그렇게 디스크를 구성함으로써 여러 가지 좋은 점을 얻을 수 있게 되었습니다. RAID는 구성 방식에 따라서 입출력 성능의 향상이나, 디스크 결함 허용(Fault Tolerance, 여러 개의 디스크 중에서 하나 또는 일부가 고장나도 데이터의 안전을 보장)의 특징을 갖게 할 수 있습니다.

 

 RAID는 크게 하드웨어 RAID와 소프트웨어 RAID 두 가지로 나눌 수 있습니다.

 

 하드웨어 RAID는 하드웨어 장치로 RAID를 구성하는 것으로, 별도의 장치에 여러 개의 디스크를 장착해 하나의 디스크처럼 사용하는 장비를 의미합니다. 하드웨어 RAID는 안정적으고 효율적이지만 가격이 꽤 비쌉니다. 하드웨어 RAID는 각 제조사마다 지원하는 방식이 다를 수 있으므로 논외로 하겠습니다.

 

 소프트웨어 RAID는 컴퓨터에 장착된 여러 개의 디스크를 운영체제 레벨에서 RAID로 구성하는 기능을 말합니다. Windows Server, Linux Server, Unix Server에서는 다양한 소프트웨어 RAID를 지원합니다. 하드웨어 RAID보다는 안정적인 면이 떨어지지만, 디스크만 추가한다면 저렴한 비용으로 빠르고 안정적인 시스템을 구성할 수 있다는 장점이 있습니다.

 

 

여기서 잠깐

 요즘 제작된 PC나 노트북용 메인보드도 자체적으로 하드웨어 RAID기능을 가지고 있는 것이 많이 있습니다. 고가의 서버용 하드웨어 RAID보다는 기능이 떨어지지만, 개인용 PC에서 하드웨어 RAID를 사용하고자 할 경우에는 별 무리가 없습니다.

 

 참고로 RAID는 1987년 버클리 대학의 연구원들이 'Redundant Array of Inexpensive Disks'라는 논문에서 Redundant Array of Independent Disks 혹은 Redundant Array of Inexpensive Disks 0~5를 정의한 것이 시초였습니다. 추가로 1989년에는 RAID 6가 정의되었습니다.

 

 구성 방식이나 이론적인 내용은 하드웨어 RAID와 소프트웨어 RAID가 동일합니다.

 

 

 

2. RAID 레벨

RAID는 구성 방식에 따라 몇 개의 레벨로 나눌 수 있습니다.

 

 

[그림 1] RAID의 종류와 구성 방식

 

  • 단순 볼륨 - volume
 단순 볼륨은 디스크 1개로 1개의 볼륨을 만듭니다. [그림 1]의 예에서 'ABCEDF'라는 데이터를 저장하면 그냥 해당 디스크에 데이터가 저장됩니다.
  • 스팬 볼륨 - Spanned Volume: Linear RAID
 스팬 볼륨은 2개 이상의 디스크로 1개의 볼륨을 만든 것입니다. [그림 1]에서 디스크별로 용량이 1TB라면, 스팬 볼륨의 용량은 2TB가 된다. 즉, 공간 효율이 100%가 되는 것이며, 이는 구성된 디스크 용량의 총합을 전부 사용한다는 의미도 됩니다. 저장되는 방식은 그림에서 보는 바와 같이 첫 번째 디스크에 데이터가 도무 꽉 찬 후에, 두 번째 디스크를 사용한다. [그림 1]의 예에서 'ABCEDF'를 저장하고 디스크가 꽉 찼다면, 두 번째 디스크에 'F'를 저장하는 방식입니다.
  • 스트라이프 볼륨 - Striped Volume: RAID 0
 스트라이프 볼륨은 2개 이상의 디스크로 1개의 볼륨을 만드는 것으로, 스팬 볼륨과 결과적으로는 동일하지만 내부적으로 저장되는 방식에는 차이가 있습니다. [그림 1]에서 보이듯이 'ABCDEF'를 저장할 때 A는 첫 번째, B는 두 번째 저장하는 방식입니다. 이렇게 저장하면 A와 B를 동시에 저장하기 때문에 디스크의 입출력 속도가 꽤 향상됩니다. 한 글자당 1초의 저장 시간이 걸린다고 가정하면, 단순 볼륨과 스팬 볼륨은 'ABCDEF'를 저장하는데 6초의 시간이 필요하지만 스트라이프 볼륨은 동시에 저장되는 방식으므로, 3초면 저장됩니다. 그래서 스트라이프 볼륨은 입출력 성능이 가장 뛰어난 방식으로 사용됩니다.
 
⊙ 2개의 디스크를 스트라이프 볼륨으로 구성하면 이론적으로는 두 배 빨라져야 하지만, 여러 가지 요인에 의해서 2배가 빨라지지 않을 수는 있습니다. 하지만, 기존보다 입출력 성능이 월등히 좋아지는 것은 확실합니다.
 
 스트라이프 볼륨은 성능은 우수하지만, 만약 두 개의 디스크 중 하나라도 고장 난다면 모든 데이터를 잃어버리게 됩니다. 또한 스트라이프 볼륨은 3개 이상으로도 구성이 가능합니다. 만약 10개의 디스크로 스트라이프 볼륨을 구성했다면 입출력 속도는 더더욱 좋아지겠지만, 10개의 디스크 중 1개라도 고장 나면 모든 데이터를 잃어버리는 위험성이 생깁니다. 그래서 이 볼륨 방식에 데이터를 저장하는 경우에는 데이터가 손실되더라도 큰 문제가 되지 않는 데이터를 저장해야 합니다. 
 예를 들면 인터넷 사이트의 자유게시판 내용이 많이 발생되는 사이트라면, 자유게시판의 내용만 저장되는 별도의 공간을 스트라이프 볼륨으로 구성하는 것도 좋은 방안이 될 수 있습니다. 그렇게 하면 자유게시판을 위한 데이터의 입출력 속도는 현저히 향상됩니다. 또, 되도록 자유게시판의 내용이 보존되는 것이 좋겠지만, 만약 디스크의 고장으로 자유게시판의 내용 (중요하지 않은 내용이 등록된다고 가정)이 없어지더라도 별 문제는 되지 않을 것입니다.
 스트라이프 볼륨의 공간 효율도 디스크의 개수만큼 모두 사용하므로 100%가 됩니다.
 
RAID는 디스크의 크기가 모두 동일하다는 전제 조건을 갖습니다. 즉, 스트라이프, 미러, RAID5는 모두 동일한 크기의 디스크뿐만 아니라 동일한 회사의 동일한 모델의 디스크를 사용하는 것을 기본으로 합니다.
 
 예를 들어 스트라이프를 2TB, 1TB 두 개의 디스크 구성할 경우에 총용량은 공간 효율 100%인 3TB가 아니라 총 2TB밖에 되지 않습니다. 즉, RAID의 경우에는 동시에 디스크를 사용하는 특징 때문에 작은 쪽에 맞출 수 밖에 없습니다. 그러므로 2TB 크기의 디스크에서 1TB밖에 사용할 수 없는 것입니다. 만약, 100TB, 1TB 두 개의 디스크를 사용해도 마찬가지로 작은 쪽에 맞추게 되므로 총 2TB밖에 사용하지 못합니다.
 
 이와 달리 스팬 볼륨은 디스크의 크기가 다르더라도 첫 번째 디스크를 모두 사용한 후에 두 번째 디스크를 사용하는 방식을 사용하기 때문에 공간 효율이 100%가 됩니다. 같은 예로 100TB, 1TB 두 개의 디스크로 스팬 볼륨을 구성하면 총 용량은 101TB가 됩니다.
 
 참고로, 하드디스크 대신 SSD로 RAID를 구성한다면 성능면에서 월등히 뛰어난 RAID를 구성할 수 있습니다.
 
 
  • 미러 볼륨 - Mirrored Volume: RAID 1
 미러 볼륨은 용어에서도 알 수 있듯이 거울처럼 똑같은 디스크를 구성하는 것입니다. [그림 1]의 예를 보면 두 개의 디스크에 모두 'ABCDEF'를 저장하게 됩다. 그래서 디스크 하나에 문제가 생기더라도 데이터는 잘 보존됩니다. 실무에서 중요한 데이터를 저장할 때 많이 사용되는 방식입니다. [그림 1]에도 나와 있듯이 1TB 두 개로 구성 시에 총 사용 용량은 1TB가 됩니다. 즉, 디스크의 공간 효율은 50%가 됩니다. 미러 볼륨은 RAID 5와 함께 디스크 결함 허용을 지원하는 방식입니다.
 
 

 현재는 사용하지 않는다.

 
  • RAID 5

 RAID 5는 미러 볼륨 처럼 데이터의 안전성이 어느정도 보장되면서 공간 효율성도 좋은 방식입니다.

 RAID 5는 최소한 3개 이상의 하드디스크가 있어야만 구성이 가능하며 실무에서 사용할 때는 대부분 5개 이상의 하드디스크로 구성합니다. 구성 원리는 데이터의 저장 시에 패리티를 이용함으로써, 디스크에 문제가 발생 시 원래의 데이터를 예측할 수 있는 방식입니다.

 그럼에도 'ABCDEF'를 저장할 때 A는 첫 번째에, B는 두 번째에, 그리고 세 번째에는 피리티를 저장하는 방식입니다. 좀 더 쉽게 예를 들어보면 2진수로 '010011'(6비트)라는 데이터를 [그림 1]의 RAID 5에 저장한다면 다음 그림과 같이 저장됩니다.

 

 

 

[그림 2] RAID 5의 저장 방식(짝수 패리티의 경우)

 

 위 그림에서 네모로 표시된 데이터는 패리티 데이터입니다. 이 경우 짝수 패리티면, 각 행은 짝수가 되어야 합니다. 처음 2비트인 01을 저장할 때 디스크1에 0, 디스크2에 1, 디스크3에는 패리티를 저장할 공간을 비워둡니다. 이 예에서는 짝수 패리티를 사용하기로 했으므로, 0+1+패리티=짝수가 되어야 합니다. 그러므로 패리티는 '1'이 입력됩니다.

 

 다음 2비트인 00을 저장할 때 디스크1에 0, 디스크2에는 패리티로 비워두며, 디스크3에 0을 저장합니다. 이 경우도 짝수가 되기 위해서는 0+패리티+0=짝수이므로 패리티는 '0'이 됩니다. 마지막 2비트인 11을 저장할 때 디스크1에는 패리티로 비워두며, 디스크2에는 1을 디스크3에 1을 저장합니다. 이 경우도 짝수가 되기 위해서는 패리티+1+1=짝수이므로 패리티는 '0'이 됩니다.

 

 이렇게 저장된 RAID 5는 디스크 결함을 허용을 제공합니다. 즉, 3개의 디스크 중에서 1개가 고장 나도 원래의 데이터를 예측할 수 있는 것입니다. 예를 들어 두 번째 디스크인 디스크2가 고장났다고 가정하고, 디스크2에 저장되었던 원래 데이터를 예측해보자.

 

[그림 3] RAID 5의 복구 방식

 

위 그림에서 첫 번째 줄을 보면 현재 디스크1에는 0, 디스크2는 알 수 없음, 디스크3에는 1이 들어있다. '0+?+1=짝수'여야 하므로 ?는 디스크2의 값이 '1'이되는 것을 예측할 수 있습니다. 나머지도 마찬가지로 유추해내면 디스크2에 들어 있던 원래 값이 101이라는 것을 알 수 있으므로 원래의 데이터를 손실 없이 예측하여 사용할 수 있습니다.

 

 RAID 5의 장점은 어느정도 결함은 허용하며, 또한 저장 공간의 효율도 좋다는 것입니다. 각 디스크별로 1TB라고 가정한다면, 총 사용할 수 있는 공간은 2TB입니다. 즉, 전체 용량의 66.6%를 사용할 수 있습니다. 만약, RAID 5를 10개의 디스크로 구성했다면, 전체 10TB 중 1개의 패리티로 사용하는 1TB를 제외하고 나머지 9TB를 사용할 수 있으므로 전체 용량의 90%를 사용하게 됩니다. 여기서 디스크의 개수를 N개라고 하면, N-1만큼의 공간을 사용할 수 있다는 계산을 할 수 있습니다.

 

 여러 개의 디스크로 RAID 5를 구성할수록 저장 공간의 효율을 높일 수 있으며, 실무에서는 8~10개 정도의 디스크로 RAID 5를 많이 사용합니다.

 

 

 

 

 

 

 

 

 

다음 포스트에 실습 내용을 다루도록 하겠습니다.