Raid

유영·2023년 5월 8일
0

HTTP

목록 보기
20/22

레이드란

Redundant Array of Independent Disk의 약자로,
2개 이상의 디스크를 병렬로 처리하여 성능 및 안정성을 향상시키는 방식입니다.
과거에는 주로 용량이 작은 디스크들을 연결하여 디스크 용량을 높이기 위해 사용되었는데요.

요즘에는 디스크 성능 향상에서 나아가 디스크 오류나 데이터 손실 등 장애에 대비하기 위한 용도로 사용되고 있습니다. 한 번 손실되거나 삭제된 데이터를 복구하기에 시간과 노력이 많이 소요되는 만큼,
데이트 손실을 방지하기 위한 일종의 대비책이라 보시면 됩니다.
(말 그대로 RAID는 여러개의 디스크를 묶어 하나의 디스크 처럼 사용하는 기술 입니다.)
종합하면 한 개의 디스크에 데이터를 저장하는 방식이 아닌, 데이터 저장의 성능 및 안정성 확보를 위해 복수의 디스크를 구성하는 방식을 레이드(RAID)라 합니다.
물론 이러한 레이드 방식을 적용하기 위해서는 1개 이상의 디스크가 필요합니다.


RAID를 사용하였을 때 기대 효과는

  • 대용량의 단일 볼륨을 사용하는 효과
  • 디스크 I/O 병렬화로 인한 성능 향상 (RAID 0, RAID 5, RAID 6 등)
  • 데이터 복제로 인한 안정성 향상 (RAID 1 등)
    이 있습니다.

RAID는 컴퓨터를 구성하는 여러 부품 (구성품) 중 기계적인 특성 때문에
상대적으로 속도가 (많이) 느린 하드디스크를 보완하기 위해 만든 기술입니다.
RAID를 구성하는 디스크의 개수가 같아도, RAID의 구성 방식에 따라 성능, 용량이 바뀌게 됩니다.
이 구성 방식을 RAID Level (레이드 레벨) 이라고 부릅니다.
여러 RAID 레벨이 있습니다. 각각의 RAID Level에 대해 알아보겠습니다.

레이드(RAID) 종류

어떠한 방식으로 레이드를 구성하느냐에 따라 레이드 방식이 구분되는데요.
대표적인 레이드 방식을 간단히 소개합니다.

1) 레이드 0


먼저, 레이드 0 방식입니다. 두 개 이상의 디스크에 데이터를 순차적으로 저장하는 방식인데요.

한 개의 디스크에 데이터를 처리하는게 아니라 복수개의 디스크에 데이터를 분산해 처리하기 때문에,
처리 속도가 향상된다는 강점을 지니고 있습니다.
하지만 하나의 디스크가 문제가 발생하면 레이드0으로 구성된 모든 데이터가 유실된다는 단점을 지니고 있는데요. 오직 성능향상을 위한 구성방식이라 보면 됩니다.

2) 레이드 1


다음으로, 레이드 1 방식입니다. 데이터 처리 시, 동일한 디스크에 똑같이 저장하는 방식인데요.

데이터를 중복 기록하여 저장하기 때문에, 디스크가 장애 및 오류 발생 시, 다른 디스크를 통해 데이터를 쉽게 복구할 수 있습니다. 때문에 가용성 및 안전성이 높다는 강점을 지니고 있습니다.

하지만 똑같은 데이터를 디스크 2개로 중복 저장하기 때문에 실질적으로 사용할 수 있는 용량이 절반으로 줄어든다는 단점을 지니고 있습니다.
(예를 들어 100GB 디스크를 두 개 사용하더라도 실질적으로 저장할 수 있는 용량은 100GB밖에 되지 않습니다. )

3) 레이드 0 + 1


앞서 언급한 레이드0 은 데이터 처리 성능이 향상 되지만 안전성에 취약하다는 약점,
레이드1은 데이터 복제를 통해 안전성은 높지만 성능이 취약하다는 약점을 지니고 있는데요.
각각의 약점을 보안하기 위해 레이드0방식과 레이드1 방식을 결합한 레이드 0+1 방식이 있습니다.

2개 이상의 디스크를 레이드0방식으로 구성하여 데이터를 분산처리하고, 각 각의 디스크에 레이드1방식으로 디스크를 추가하여 데이터를 복제하는 방식입니다.

4) 레이드 3, 4

레이드 3, 4는 레이드0과 같이 데이터 분산처리방식을 사용하며,
추가로 에러 체크 및 수정을 위한 패리티(parity) 정보를 별도의 디스크에 따로 저장하는 방식입니다.
레이드3 과 레이드4 방식은 데이터 저장 단위에 따라 구분되는데요.
레이드3은 Byte단위로 데이터를 저장하는 반면,
레이드4는 블록(Block)단위로 저장을 합니다.

패리티 정보를 별도의 디스크에 저장을 하기 대문에 디스크가 고장 나더라도
패리티정보를 통해 복구가 가능합니다.
하지만 패리티 정보를 디스크에 별도 보관하기 때문에 해당 디스크 손실 시,
복구가 어렵다는 취약점이 있습니다.

5) 레이드 5


패리티 정보를 별도 디스크에 보관 함으로 써 생기는 약점을 보완하기 위해 나온 방식이 레이드5입니다.
패리티 정보를 보관하는 디스크 구성 없이,
일정한 로직에 의해 데이터분산처리 + 에러체크를 구성하는 방식인데요.
성능, 안정성을 모두 고려한 형태로 서버 구축 시 많이 사용하고 있는 레이드 방식입니다.


RAID 설정

(레이드 옵션, Stripe Size, Read/Write Policy)

1. RAID Level

RAID의 논리적 구성 방식입니다.

2. 디스크의 개수

RAID를 구성 할 디스크의 개수를 정해주시면 됩니다.

3. Stripe Size

Stripe Size는 RAID 컨트롤러와 단일 디스크간의 I/O 단위라고 생각하시면 됩니다.
따라서 Workload의 I/O 크기를 고려하여 결정해야 최적의 성능을 낼 수 있습니다.
보통 64KB, 128KB, 256KB, 512KB, 1024KB 중 선택을 하도록 되어 있습니다.

I/O는 입력(Input)/출력(Output)의 약자로,
컴퓨터 및 주변장치에 대하여 데이터를 전송하는 프로그램, 운영 혹은 장치를 일컫는 말입니다.
대개의 경우 입력에 함께 출력이 발생하게 됩니다.

  • 먼저 CPU에서 RAM에 데이터를 요청하고, RAM에 데이터가 없는 경우 HDD에 데이터를 요청해 가져온다.
  • 데이터를 입력하는 경우 input(=commit), 데이터를 출력하는 경우 output 이라고 한다.
  • 반대로 하드디스크에서 가져오는 경우 output 이라고 한다.
  • CPU는 렘한테만 필요하다.

4. Read Policy

(1) Read Ahead
읽기 요청이 들어온 주소 이후의 내용을 일부 읽어 캐시에 저장해놓습니다.
순차 쓰기의 경우 캐시해 놓은 데이터를 읽으면 되서 읽기 성능이 상승합니다.
단 작은 사이즈의 Random I/O의 경우 효과가 없습니다.

(2) No Read Ahead
호스트에서 요청이 들어온 주소만 읽습니다. (캐시 사용 X)

(3) Adaptive Read Ahead
Seq. Read라 판단 될 때에만 Read Ahead 정책을 사용합니다.

5. Write Policy

(1) Write Through
실제 디스크에 Write 가 완료 된 후 Host로 완료 됐다고 보고 합니다.
Direct I/O 와 유사하다 생각하시면 됩니다.

(2) Write Back
실제 디스크가 아닌, RAID의 캐시에 쓰기가 완료 되면 Host에 완료 됐다고 보고합니다.
Buffered I/O와 유사하다 생각하시면 됩니다.
하지만 Buffer의 내용이 실제 디스크로 써지기 전 전원 장애 등이 발생 할 경우 데이터 복구가 어려울 수도 있습니다.
이럴 때를 대비하여 BBU 가 있는 카드의 경우 Write Back with BBU 란 모드도 있습니다.

6. Disk Cache Policy

각 디스크의 Cache 를 사용 할 지 (Enable), 사용하지 않을 지 (Disable) 선택하는 옵션입니다.
보통 SATA의 경우 Enable로, SAS의 경우 Disable이 Default라 합니다.

7. Access Policy

Read & Write, Read only, Disable 등의 옵션이 있습니다.

8. (Global) Hot spare

Hot spare 란, RAID 5, RAID 6 등 디스크에서 에러가 발생 하더라도 데이터 복구가 가능한 RAID 들이 사용 할 수 있게 잡아놓은 디스크 입니다.
평상시 (정상 상황) 에는 사용하지 않고 있다가,
RAID 5, RAID 6 등의 디스크에서 문제가 발생 할 경우
Hot spare의 디스크를 사용하여 Rebuild 과정을 진행합니다.

[출처] 레이드(RAID)란?|작성자 hostinggodo

0개의 댓글