프로세서나 메모리는 고장나면 정상 제품으로 변경하면 되지만,
스토리지는 고장나면 데이터 소실로 일어날 수 있다. 특히 HDD는 물리적 충격 등에 취약하므로 서버용 스토리지는 일반적으로 RAID 구성을 통해 장애 대응을 위한 대비를 구성하는 편이다.
RAID 0
두 개, 혹은 그 이상의 하드디스크에 데이터를 분산하고 한꺼번에 출력, 즉, 스트라이핑.
이론적으로 하드디스크에서 읽을 수 있는 속도의 한계를 병렬 읽기를 통해 읽으므로 이론상 n배의 액세스 속도로 읽을 수 있다.
이는 내결함성을 위한 구성이 아니며 디스크 I/O 성능 개선이 목표이다.
특정 하드디스크에 문제가 발생할 경우 데이터가 분산되어 있으므로 다른 하드디스크의 데이터도 사용할 수 없게 된다.
JBOD
Just a Bunch of Disks. 복수의 디스크를 연결해 하나의 논리 볼륨을 만들어내는 구성, 즉 스패닝.
용량이나 액세스 속도 등이 서로 같지 않아도 되며, 병렬 읽기 등이 제공되지 않는다.
이는 내결함성을 위한 구성이 아니며 단순히 디스크의 용량을 늘리는 것이 목표이다.
일반적으로 순차적으로 데이터를 저장하고 하나의 하드디스크에 가용 용량이 없을 경우 다른 하드디스크를 사용하는 방식이다.
구성 하드디스크에 문제가 생길 경우 전체 볼륨의 문제로 이어진다.
RAID 1
드라이브 두 개에 동일한 데이터를 보관, 즉 이중화(혹은 미러링).
안정성이 높은 구성이나 비용적인 문제가 있다.
이 경우 각 하드디스크의 이용 효율이 50%로 떨어지므로 대용량이 필요할 때는 그만큼 효율성이 떨어진다.
일반적으로 운영체제가 설치된 파티션 등에 사용한다.
RAID 2
스트라이핑 방식에 에러 검출 방법인 ECC를 활용하는 방식.
최근의 드라이브는 대부분 오류 검출 기능이 있으므로 근래에는 거의 사용되지 않는다.
RAID 3
스트라이핑 방식에 각각의 디스크에 별도의 패리티 정보를 저장해 오류를 검출하는 방식.
근래에는 거의 사용되지 않는다.
RAID 4
RAID 3 방식을 차용하되 저장 단위를 블록 단위로 두는 방식(RAID 3는 바이트, RAID 2는 비트 단위).
RAID 2~4 방식에서 패리티를 사용하는 것은 읽기 과정에서 병목을 만드므로 근래에는 거의 쓰이지 않는다.
RAID 5
최소 3개 이상의 하드디스크를 사용하되 각 하드디스크 중 하나를 패리티 디스크로 사용하는 방식.
각 데이터를 분산 기록 한 후 그 패리티 값이 별도 저장된다.
하나의 디스크에 장애가 발생하더라도 패리티 값을 통해 배타적 논리합을 구하여 복원이 가능하다.
이때, 실효 용량은 n-1/n.
RAID 6
구조는 RAID 5 방식을 차용. 최소 4개 이상의 하드디스크를 사용하되
각 하드디스크 중 하나를 패리티 디스크로 사용하는 방식.
각 데이터를 분산 기록 한 후 그 패리티 값이 별도 저장된다.
하나 혹은 두 개의 디스크에 장애가 발생하더라도 패리티 값을 통해 배타적 논리합을 구하여 복원이 가능하다.
이때, 실효 용량은 n-2/n.
일반적으로 배타적 논리합을 통해 복원을 하는 과정은 드라이브 부하가 높아져 다른 디스크의 장애를 대응할 수 없을 수 있으므로
가급적 RAID 6를 채택하는 것이 바람직하다.
RAID 7
각 하드웨어에서 지원하는 운영체제를 활용한 구성. 비공식적.
RAID 10 (RAID 1 + 0)
스트라이핑을 통해 구성한 하드디스크를 미러링한 형태.
RAID 01 (RAID 0 + 1)
미러링으로 구성한 하드디스크를 스트라이핑을 통해 읽기 성능을 개선한 형태.
RAID 50 (RAID 5 + 0)
RAID 5로 구성한 하드디스크를 스트라이핑을 통해 읽기 성능을 개선한 형태.
'SERVER' 카테고리의 다른 글
nginx 프록시 설정 (0) | 2024.09.27 |
---|---|
Set-Cookie 설정 (1) | 2024.02.07 |
AWS S3 버킷 권한 목록 (0) | 2023.04.02 |