RAID는 여러개의 Disk를 묶어 하나의 Disk처럼 사용하는 기술을 의미한다.
(여기서 말하는 디스크는 Hard Disk를 의미한다. 우리가 이제 보편적으로 사용하는 SSD도 RAID가 가능하다.)
약간 찰흙을 생각하면 되지 않을까?
찰흙을 100g씩 가지고 5개를 갖고있다고 보자. 그러면 500g이되는거다. 근데 찰흙의 갯수는 1개이다.
이걸 디스크 메모리 용량으로 옮겨가면 똑같다.
10GB짜리 하드디스크를 5개가 있다면 RAID를 통해 50GB짜리 하드디스크를 1개로 사용할 수 있다는 것이다.
# 장점
위에서 말한 장점인 대용량의 단일 볼륨을 사용하는 효과가 있는 것처럼 다른 장점들도 있다.
- 디스크 I/O 병렬화로 인한 I/O성능 향상
- Data 복제로 인한 안정성 향상
# 구성방식
RAID를 구성하는 디스크의 개수가 같아도, 방식에 따라 성능, 용량이 바뀌게 된다.
구성방식에 대해서는 RAID Level 이라고 부른다.
# 패리티(Parity)란?
전자공 출신이라 학부시간에 많이 등장했던 용어이다. 통신에서 가장 많이 에러검출용코드로 많이 사용된다. RAID에서는 디스크 장애시 데이터를 재구축하는데 사용할 수 있는 사전에 계산된 값들을 의미하게된다.
즉, 패리티 영역이 있다면 디스크를 복구할 수 있다.
# RAID 0 (Level 0) ➡️ No Use
이름 | Striping(스트라이핑) |
조건 | 최소 N개이상의 Disk ( 1 < N ) |
저장방식 | 모든 디스크의 데이터 분할 저장 |
용량 | N배 |
성능(R/W) | N배 |
안정성 | 1/N배 (하나의 디스크라도 문제가 발생 할 경우 RAID 전체가 깨짐) |
# RAID 1 (Level 1)➡️ No Use
이름 | Mirroring(미러링) |
조건 | 최소 N개이상의 Disk ( 1 < N ) |
저장방식 | 모든 디스크의 데이터 복제 저장 |
용량 | 동일 (복제하여 저장) |
성능 (R/W) | READ ➡️ N배 WRITE ➡️복제, 연산을하기 때문에 단일보다 상대적으로 느리다. |
안정성 | 복제이기 때문에 하나가 망가져도 괜찮다. |
# RAID 2 (Level 2) ➡️ No Use
이름 | RAID 2 |
조건 | m+1 개의 데이터 디스크 & m개의 패리티 디스크 (최소 3개) |
저장방식 | bit 단위로 striping, 해밍코드 저장(Error Correction) |
용량 | - |
성능 (R/W) | 매우 빠르다. |
안정성 | 1개 고장나면 복구가능하지만, 2개면 복구가 불가능하다. |
# RAID 3 (Level 3) ➡️ No Use
이름 | RAID 3 |
조건 | m+1 개의 데이터 디스크 & m개의 패리티 디스크 (최소 3개) |
저장방식 | byte 단위로 striping, 패리티 디스크 1개 사용 |
용량 | N-1 배 |
성능(R/W) | N-1 배 |
안정성 | 1개 고장나면 복구가능하지만, 2개면 복구가 불가능하다. |
# RAID 4 (Level 4) ➡️ No Use
이름 | RAID 4 |
조건 | m+1 개의 데이터 디스크 & m개의 패리티 디스크 (최소 3개) |
저장방식 | block 단위로 striping, 패리티 디스크 1개 사용 |
용량 | N-1 배 |
성능(R/W) | N-1 배 |
안정성 | 1개 고장나면 복구가능하지만, 2개면 복구가 불가능하다. |
RAID Level 4는 패리티 디스크에 저장하기 때문에, 패리티 디스크의 사용량이 높아 해당 디스크의 수명이 빨리 줄어든다.
RAID Level 2 ~ 4까지는 1개가 고장나면 2개가 복구가 가능하지만, 데이터입장에서 보았을때 2개가 고장나면 복구가 안되는것은 가장 큰 문제다. 또한 패리티 디스크자체가 고장나면 에러 처리 자체가 안된다.
# RAID 5 (Level 5)
이름 | RAID 5 |
조건 | 최소 3개 이상 디스크로 구성 |
저장방식 | block 단위로 striping, 패리티 디스크 1개 사용 ➡️ 패리티 디스크를 지정하지 않고 매번 다른 디스크에 저장한다. |
용량 | N-1 배 |
성능(R/W) | N-1 배 |
안정성 | 1개 고장나면 복구가능하지만, 2개면 복구가 불가능하다. |
# RAID 6 (Level 6)
이름 | RAID 6 |
조건 | 최소 4개 이상 디스크로 구성 |
저장방식 | block 단위로 striping, 패리티 디스크 2개 사용 ➡️ 패리티 디스크를 지정하지 않고 매번 다른 디스크에 저장한다. |
용량 | N-2 배 |
성능(R/W) | N-2 배 |
안정성 | 2개 고장나면 복구가능하지만, 3개면 복구가 불가능하다. |
# Nested RAID(중첩 RAID)
NestedRAID는 Standard RAID를 묶어서 사용한다. 예를 들어 RAID 0를 2개를 묶어 RAID 1로 만들어서 사용한다거나 반대로 RAID 1을 2개를 묶어 RAID 0로 사용한다거나 그런식으로 사용할 수 있다.
# RAID 0 + 1 (RAID 01)
요약 | RAID 0로 구성되어있는 디스크를 RAID2 방식으로 미러링 |
최소 디스크 | 4개 이상 |
공간 효율 | N / 2 x RAID0 의 갯수 |
# RAID 0 + 3 (RAID 03)
요약 | byte 수준 RAID 0로 구성되어있는 디스크를 RAID3 복구 가능 디스크 추가 |
최소 디스크 | 6개 이상 |
공간 효율 | N - 1 x RAID0 의 갯수 |
# RAID 1 + 0 (RAID 10)
요약 | RAID 1로 구성되어있는 디스크를 RAID0 방식으로 구성 |
최소 디스크 | 4개 이상 |
공간 효율 | N / 2 |
# RAID 5 + 0 (RAID 50)
요약 | RAID 5로 구성되어있는 디스크를 RAID0 방식으로 구성 |
최소 디스크 | 6개 |
공간 효율 | N - 1 x RAID0 의 갯수 |
# RAID 6 + 0 (RAID 60)
요약 | RAID 6로 구성되어있는 디스크를 RAID0 방식으로 구성 |
최소 디스크 | 8개 이상 |
공간효율 | N - 2 x RAID0 의 갯수 |
# RAID 10 + 0 (RAID 100)
요약 | RAID0를 다시 RAID0로 구성하고 RAID1로 구성 |
최소 디스크 | 8개이상 |
공간효율 | N / RAID0 |
나중에 실무에서 만져야할일이 있을지는 모르겠으나 RAID는 기본적인 것이다. 정처기에도 많이 나오는 문제이기때문에 알아보면 좋다.