RAID는 여러 디스크를 결합해서 데이터 안전성과 성능을 높이는 기법입니다. 0단계부터 6단계까지 있으며, 이를 조합해서 새로운 단계를 만들기도 합니다. 이러한 RAID 시스템의 각 단계와 특징에 대해서 알아봅니다.
[ Contents ]
1. RAID(Redundant Array of Independent Disk)
디스크 고장 시 그대로 복구할 수 있도록 2개 이상의 디스크에 데이터를 저장하는 기법
예전에는 USB 메모리가 1GB, 4GB가 주로 나왔습니다. 지금은 256GB도 2만 원대에 살 수 있더군요.
이처럼 데이터 저장을 위한 디스크는 용량도 많고 쌉니다. 반면 캐시 메모리나 메인 메모리(RAM)처럼 빠른 입출력 속도를 가진 메모리는 용량도 적고 비쌉니다. 그래서 대용량의 데이터를 저장할 때에는 (하드) 디스크를 사용하며, 값도 싸고 용량도 많은 디스크를 활용한 저장 기법이 RAID입니다.
RAID는 여러 하드 디스크를 결합하여 데이터의 안정성과 성능을 향상시키는 기술입니다.
2. RAID 단계 (0 ~ 6단계)
RAID도 데이터 정규화처럼 단계가 있습니다. 단계가 높아질수록 데이터 안정성과 성능은 높아지지만, 복잡도가 올라가는 단점이 있습니다. 그래서 정규화와 마찬가지로 낮은 RAID 단계로 주로 운용됩니다.
1) RAID 0 (Stripe, Concatenate)
Concatenate: 직렬 연결로 용량을 증설한 경우
Stripe: 병렬 연결로 용량을 증설한 경우
건전지를 직렬, 병렬로 연결한 것과 비슷합니다. Concatenate 방식은 직렬로 연결했기 때문에 용량만 2배로 늘어났다고 보면 됩니다. 반면 Stripe 방식은 병렬로 연결해서 데이터를 나누어 저장합니다. 여러 디스크에서 동시에 읽고 쓸 수 있기 때문에 I/O 속도가 빠른 편입니다. 그래서 대부분 RAID 0은 Stripe 방식을 사용합니다.
하지만 중복 저장 및 오류 검출은 하지 않기 때문에, 디스크 장애 발생 시 복구할 수가 없습니다.
2) RAID 1단계 (Mirroring)
여러 디스크에 데이터를 완전 이중화하여 저장하는 방식
서버나 DB의 이중화(Duplex)와 비슷합니다. 다만 Active - Standby 보단 Active - Active에 가깝긴 합니다.
동일한 데이터를 여러 디스크에 중복 저장하며, 여러 디스크에서 병렬적으로 I/O작업을 하니 빠릅니다. (쓰기 작업은 느려질 수 있음) 또한 어느 디스크에서 장애가 나더라도, 다른 디스크로 대체가 가능하며 복구도 쉽게 가능합니다.
따라서 RAID1방식을 많이 애용하며, RAID에서 가장 좋은 방식으로 평가받기도 합니다. 다만 비용은 많이 발생합니다.
3) RAID 2단계 (Hamming Code ECC)
Hamming Code를 이용해서 오류를 복구하는 방식
ECC는 Error Correction Code 라는 뜻으로, 별도의 디스크에 복구를 위한 ECC를 저장합니다.
Hamming Code를 이용해서 오류를 복구합니다. 예를 들어 A1이 오류가 나서 복구할 때에는 ECC/Ax, ECC/Ay, ECC/Az를 통해 A1의 값을 재생성합니다.
다만 ECC를 위해 따로 드라이브를 구성해야 하며, ECC 드라이브가 고장났으면 복원하지 못합니다. 따라서 RAID 2는 거의 쓰이지 않으며 그대신 RAID 4, 5가 쓰입니다.
4) RAID 3, 4단계 (Parity ECC)
RAID 3: Byte 단위로 디스크에 분산 저장하며, Parity 정보를 별도 디스크에 관리
RAID 4: Block 단위로 디스크에 분산 저장하며, Parity 정보를 별도 디스크에 관리
RAID 2가 Hamming code를 이용했다면, RAID 3, 4는 패리티 비트를 이용합니다. 패리티 비트를 별도 Disk에 저장하며, 1개 디스크 장애 시 Parity를 통해 복구 가능합니다. 컨트롤러 layer에서 오류 디스크 격리 및 Hot Spare Disk를 통해 데이터를 복구합니다.
Stripping 방식으로 병렬로 데이터 입출력하므로 읽기 속도가 빠릅니다. 다만 쓰기 속도는 Parity 계산 및 별도 디스크 저장으로 느릴 수 있습니다.
RAID 3, 4의 차이는 Parity를 Byte / Block 단위로 관리하느냐에 따른 차이로, RAID 3은 드라이브 동기화가 필요해서 주로 RAID 4를 씁니다.
2023.05.11 - [CS/데이터통신 & 네트워크] - [데이터통신] 패리티 비트를 이용한 오류 검출 방식: 수직 중복 검사(VRC), 수평 중복 검사(LRC)
(패리티 비트에 관한 글)
5) RAID 5단계 (Parity ECC, 분산 저장)
Parity를 여러 디스크 내에 분산해서 저장하는 방식
별도의 디스크에 패리티 비트를 저장하지 않고, 여러 디스크에 분산해서 저장합니다.
RAID 3, 4는 별도의 디스크에 패리티를 저장하므로 고장나면 복구할 수 없는 문제점이 있었습니다. RAID 5는 패리티를 분산해서 저장하므로 안정성을 높일 수 있습니다.
6) RAID 6단계 (Parity ECC, 분산 복수 저장)
Parity를 다중화해서 여러 디스크 내에 분산 저장하는 방식
RAID 5는 디스크 1개까지만 복구가 가능합니다. RAID 6은 여러 대의 디스크가 동시에 고장나더라도 복구할 수 있도록 패리티를 다중화해서 분산저장합니다.
위 예시에서는 2차 패리티 정보까지 포함했으므로, 2개의 디스크에 문제가 생겨도 복원이 가능합니다. 주로 금융이나 군사 등 데이터 손실이 있어선 안 되는 분야에서만 사용합니다.
3. RAID 레벨 조합
RAID 레벨은 0~6단계까지 있으며, 필요에 따라 조합해서 사용하기도 합니다.
예를 들어 RAID10이라고 불리는 방식은 RAID1(Mirroring)과 RAID0(Stripe)을 조합한 방식입니다.
RAID10은 데이터 미러링으로 쉽고 빠른 복구도 지원되며, 스트라이핑으로 원활한 데이터 입출력 성능도 보장합니다. 다만 비용은 높은 편입니다.
이외에도 RAID01, RAID50 등이 있으며 다양한 조합을 통해 유연하게 디스크를 조성할 수 있습니다.
'CS > DB' 카테고리의 다른 글
[DB] 데이터베이스와 스토리지의 차이: 목적, 기능, 보관 유형, 보관 방식 (0) | 2023.09.22 |
---|---|
[DB] B-Tree 탐색, 삽입, 삭제 과정 알아보기 (0) | 2023.08.08 |
[DB] B-Tree (Balanced Tree): 데이터베이스 인덱스 저장 방식 (0) | 2023.08.07 |
[DB] 데이터 웨어하우스와 데이터 마트, 그리고 ETL이란? (0) | 2023.04.25 |
[DB] 데이터베이스 병행(동시성) 제어 기법: 로킹, 기본적 2PL (0) | 2023.04.25 |
댓글