저장장치 관리 - RAID
RAID(Redundant Array of Independent Disks)는 자동으로 백업을 하고 장애가 발생하면 복구하는 시스템이다.
동일한 규격의 디스크를 여러 개 모아 구성한다.
속도, 안전성, 가용성의 증대를 위해 사용된다.
RAID 0(스트라이핑)
병렬로 연결된 여러 디스크에 데이터를 동시에 입출력할 수 있도록 구성된다. 따라서 4개로 구성된 RAID 0은 1개의 디스크로 구성된 시스템보다 이론적으로 입출력 속도가 4배 빠르다.
- 단점: 장애 발생 시 복구하는 기능이 없다.
RAID 1(미러링)
하나의 데이터를 2개의 디스크에 나누어 저장함으로써 장애 시 백업디스크로 활용한다. 데이터가 똑같이 여러 디스크에 복사되므로 mirroring 이라고 부른다.
- 단점: 저장하는 데이터와 같은 크기의 디스크가 하나 더 필요하므로 비용 증가함. 같은 내용을 두 번 저장하므로 쓰기 속도 느림.
RAID 2
RAID 0과 같은 스트라이핑 방식 사용하고, ECC를 따로 관리하여 오류 발생 시에 이 코드를 이용해 디스크를 복구한다.
- EDC(Error Detection Code, 오류 검출 코드): 오류가 발생했는지 확인할 수 있는 코드로, Parity Bit(패리티 비트)가 대표적임.
- ECC(Error Correction Code, 오류 교정 코드): 오류가 발생했는지 확인하는 동시에 오류를 교정할 수 있는 코드. Hamming Code(해밍 코드)가 대표적임.
하드디스크의 데이터 저장 단위는 블록이지만 RAID 2에서는 데이터가 비트 단위로 저장된다.
디스크가 4개인 위 그림에서는 데이터 A의 1번째 비트는 1번 디스크에, 2번째 디스크는 2번 디스크에, 이런 식으로 저장된다. 이렇게 비트 단위로 저장하면 각 비트의 ECC를 구성하여 나중에 비트 단위로 복구할 수 있다.
- 단점: n개의 디스크에 대해 ECC 저장을 위한 n-1개의 디스크가 추가로 필요하다. ECC를 계산하는 데 많은 시간이 소요된다.
RAID 3, RAID 4
Parity Bit를 사용하여 데이터를 복구한다. 패리티 정보는 별도의 디스크에 따로 저장한다.
RAID 3는 데이터를 비트 단위로 나눠 저장하지만 RAID 4는 블록 단위로 나눠 저장한다.
- 단점: RAID 4에서는 모든 패리티 비트가 하나의 디스크에 저장되기 때문에 입출력이 발생할 때마다 패리티 비트 디스크에 데이터가 저장되어 병목 현상이 발생한다.
패리티 비트 디스크와 다른 디스크에서 동시에 장애가 발생할 경우 복구를 할 수 없다는 치명적인 단점도 존재한다.
RAID 5
RAID 4와 같은 방법을 사용하지만 병목 현상을 해결한 방식이다. 위의 그림처럼 패리티 비트를 여러 디스크에 분산하여 사용한다. 따라서 한 디스크에 장애가 발생하면 다른 디스크에 있는 패리티 비트를 이용해 복구할 수 있다.
RAID 6
RAID 5와 같은 방식이지만 패리티 비트가 2개이다. RAID 5의 경우 디스크 2개가 동시에 장애가 발생하면 복구가 불가능하다. RAID 6은 이러한 문제를 해결하여 안정성을 더욱 고려하는 시스템에서 사용된다.
- 단점: 패리티 비트를 2개씩 운영하기 때문에 계산량이 RAID 5에 비해 많음. 4개의 디스크 당 2개의 추가 디스크가 필요함.
RAID 10 (RAID 1+0)
빠른 입출력이 장점인 RAID 0(스트라이프)과 복구 기능을 가진 RAID 1(미러링)을 결합한 것이다.
그림철머 4개의 디스크를 2개씩 묶어 RAID 1로 구성하고, RAID 1로 묶인 디스크를 RAID 0으로 다시 묶는다.
RAID 0+1은 RAID 0으로 먼저 묶고 다시 1로 묶은 구성이다. RAID 0+1과 RAID 10은 둘 다 병렬로 데이터를 처리하여 입출력 속도를 높일 수 있고, 복구가 가능하다. 차이점은 RAID 0+1은 장애가 발생했을 때 모든 디스크를 중단해야 하지만 RAID 10은 일부 디스크만 중단하여 복구할 수 있다는 것이다.