본문 바로가기

CS

RAID

RAID (Redundant Array of Inexpensive/Independent Disk)란, 여러개의 저장장치를 묶어서 하나의 고용량/고성능 저장 장치처럼 사용하는 기술입니다. 영어를 직역해서 표현하면, '저렴한/독립된 디스크의 복수 배열'이라는 의미를 지닌다. RAID는 여러개의 디스크를 배열하여 속도와 안전성, 효율성, 가용성증대를 하는데 쓰이는 기술이다. 

 

가장 중요한 컨셉은 여러개의 디스크를 하나로 묶어 하나의 논리적인 디스크로 작동하게 한다는 것이다. 이 특성상 문제가 있는 디스크만 교체하면 되고 그 동안 다른 저장공간에는 영향없이 저장장치를 운영할 수 있다. 저장공간을 추가할 때도 마찬가지이다. 

 

 

RAID를 구성하는 방법에는 하드웨어적인 방법과 소프트웨어적인 구성방법이 있다. 

RAID 하드웨어적 구성 방법

하드디스크는 물리적으로 손상될 가능성이 있는 친구입니다. 손상이 된경우 하드디스크 전체가 사용할 수 없게됩니다. 하지만 이 하드디스크에 매우 중요한 데이터가 존재한다면 어떻게 될까?  RAID의 중요성은 여기서 대두된다.

 

RAID의 하드웨어적인 구현은 별도의 어댑터 카드, 메인보드 속 내장칩을 통해 RAID를 구성하는 경우를 말한다. 하드웨어적인 방법으로 RAID를 구성하면 운영체제에 이 디스크가 하나의 디스크처럼 보이게 한다. 

RAID 소프트웨어적 구성 방법

주로 운영체제안에서 구현되며 사용자에게 디스크를 하나의 디스크처럼 보이게한다. 운영체제는 여러개의 디스크로 인식하고 하드웨어적 구성에 비해 성능 향상 폭이 작고 안정성도 떨어진다.

 

RAID 종류

RAID의 종류는 0에서 6까지의 종류가 있으며 이를 조합해 복합된 방식( ex: 0 + 1, 1 + 0)을 구성한다.

RAID 0

Striping(스트라이핑)이라고도 부르며, RAID 0을 구성하기 위해서는 최소 2개의 디스크가 필요하다. 

 

- RAID를 구성하는 모든 디스크에 데이터를 분할하여 저장한다.

- 전체 디스크를 모두 동시에 사용하기 때문에 성능은 단일 디스크의 성능의 N배이다. 

- 마찬가지로 용량역시 단일 디스크의 N배이다.

- 하나의 디스크라도 문제가 발생하면 전체 RAID가 깨지는 현상이 발생한다.

- 즉 안정성은 1/N으로 줄어든다고 할 수 있다.

 

성능과 용량은 최대한으로 사용하는 대신 안정성을 버린 녀석이다.

 

RAID 1

Mirroring(미러링)이라고 부르는 방식이다. RAID 0과 마찬가지로 최소 2개의 디스크가 필요하다.

 

- RAID 1은 모든 디스크에 데이터를 복제하여 기록한다.

- 즉 동일한 데이터를 N개로 복제하여 기록한다. 

- 여러 디스크로 RAID를 구성해도, 실제 사용가능한 용량은 단일 디스크의 용량과 동일하다.

- Write 시엔 데이터를 복제하여 기록하기 때문에, RAID 컨트롤러 복제, 연산하는 시간을 감안하면 단일 디스크의 Write성능보다 낮게 나올 수 있다.

- 안정성이 높다. 극단적으로, N-1개의 디스크가 고장나도 데이터 사용이 가능하다. 

- 안정성이 중요한 시스템에서 사용할 수 있으나, 비용 문제로 인해 거의 사용하지 않는다.

 

RAID 2

RAID 2

bit단위로 striping을 하고, error correction을 위해 Hamming code를 사용한다. 

 

- m + 1개의 데이터 디스크와 m개의 패리티 디스크로 구성된다.

- 최소 3개의 디스크로 구성가능하다.

- 1개의 디스크 에러시 복구 가능하다. (2개 이상의 디스크 에러시 복구 불가)

 

RAID 3

RAID 3

bit단위로 striping을 하고, error correction을 위해 패리티 디스크를 1개 사용

 

- 현재는 사용하지 않는 RAID Level 이다.

- 용량 및 성능이 단일 디스크 대비 (N -1)배 증가

- Byte 단위로 striping하기 때문에 너무 작게 쪼개져 현재는 사용하지 않는다. 

- 최소 3개의 디스크로 구성 가능

- 1개의 디스크 에러시 복구 가능(2개 이상의 디스크 에러시 복구 불가)

 

RAID 4

RAID 4

 

Block 단위로 striping을 하고, error correction을 위해 패리티 디스크를 하나 사용합니다. 

 

- 용량 및 성능이 단일 디스크 대비 (N -1) 배 증가

- 1개의 디스크 에러시 복구 가능 (2개 이상의 디스크 에러시에는 복구가 불가능)

- 패리티 코드를 동일한 디스크에 저장 -> 패리티 디스크의 사용량이 높아 디스크의 수명이 줄어듦

 

RAID 5

RAID 5

제일 사용빈도가 높은 RAID Level이다.

Block 단위로 striping을 하고, error correction을 위해 패리티를 1개의 디스트에 저장하는데, 패리티 저장하는 디스크를 고정하지 않고, 매 번 다른 디스크에 저장한다.

 

- 용량 및 성능이 단일 디스크 대비 (N-1)배 증가

- 최소 3개의 디스크로 구성 가능

- 1개의 디스크 에러시 복구 가능

- RAID 4의 단점을 개선

RAID 6

RAID 6

RAID 5에서 성능, 용량을 좀 더 줄이고, 안정성을 좀 더 높인 RAID Level이다. 

Block단위로 striping을 하고, error correction을 위해 패리티를 2개의 디스크에 저장하는데, 패리티 저장하는 디스크를 고정하지 않고, 매번 다른 디스크에 저장한다.

 

- 용량 및 성능이 단일 디스크 대비 (N-2)배 증가

- 최소 4개의 디스크로 구성가능

- 2개의 디스크 에러시 복구 가능

 

Nested Raid

위에서 다룬 표준 RAID (Standard RAID) 구성들을 여러개로 묶어 다시 RAID로 구현하는 방식이다. 

RAID 0 + 1

RAID 0 + 1

여러 디스크에 번갈아 가며 저장하는 RAID 0 방식의 RAID들을 상위에서 여러 디스크에 복제하여 저장하는 방식의 RAID 1 방식으로 다시 그룹핑하는 방법이다.

RAID 1 + 0

RAID 1 + 0

여러 디스크에 복제하여 저장하는 RAID1 방식의 RAID들을 상위에서 여러 디스크에 번갈아 가며 저장하는 방식의 RAID 0 방식으로 다시 그룹핑하는 방법이다. 

 

RAID 5 + 0

RAID 5 + 0

블록(Block)단위로 스트라이핑(Striping)을 하며 에러 체크 및 수정을 위한 패리티 정보를 매번 다른 디스크에 저장하는 RAID 5 방식을 바탕으로, 여러 디스크에 번갈아 가며 저장하는 방식의 RAID 0 방식으로 RAID 5 디스크 들을 다시 그룹핑하는 방법이다.

결론

RAID는 왜 사용할까? 서버에서 데이터를 다룰 때 백업은 필수적이다. RAID를 활용한다면 서버관리자로 하여금 쉽게 저장공간을 증대하고 (가용성 확보), 문제가 발생한 디스크 대신 나머지 디스크들이 문제없이 역할을 해줄 수도 있게 한다. (안정성 확보) 또한 값싼 디스크를 여러개 붙여서 하나의 디스크처럼 보이게 하면서도 신뢰도와 성능을 모두 높일 수 있기 때문에 활용한다. 

 

참고

RAID 구현 방식과 종류에 대하여

'CS' 카테고리의 다른 글

Ch12. File Management  (0) 2022.06.09
Ch2. Operating System Overview (3/3)  (0) 2022.06.07
Ch2. Operating System Overview (2/3)  (0) 2022.06.05
Ch2. Operating System Overview (1/3)  (0) 2022.06.04
Ch1. Computer System Overview  (0) 2022.06.04