
현재까지도 많이 이용되고 있는 RAID 기술에 대해서 설명한다.
여러 개의 디스크(저장 장치)를 묶어 마치 하나의 시스템으로 구성 및 활용하는 기술을 말한다.
하나의 시스템이라는 것의 의미는, 고용량, 고성능 저장 장치 한 개를 사용하는 것과 같이 동작하는 의미이다.
사용가능기간이 상당해서 착각하는 경우가 많지만, 저장장치는 소모품이다.
특히 HDD는 SSD보다 물리적으로 움직이고 동작하는 부분이 많기 때문에, 시간이 지남에 따라 성능 저하 및 불량 섹터 발생, 데이터 무결성을 보장할 수 없는 등의 문제가 발생할 수 있다.

1년 365일 가용성이 보장되어야 하는 서비스를 위한 서버의 저장장치에 문제가 발생하는 경우를 대비하는데 RAID 기술이 사용된다.
즉, RAID는 저장장치의 가용성을 보장하는데 유용한 기술이다.
또한, 저장장치 성능을 올리기 위한 기술로 사용되기도 한다.
이에 대한 설명은 이어지는 RAID 레벨에서 확인할 수 있다.
RAID는 구성 종류에 따라 다양한 레벨로 구분지을 수 있다.
RAID 0은 여러 개의 하드디스크를 병렬로 배치하여 하나의 거대한 디스크처럼 사용하는 방식이다.
데이터 입출력이 각 멤버 디스크에 공평하게 분배되며, 디스크의 수가 N개라면 입출력 속도 및 저장 공간은 이론상 N배가 된다.
하지만 데이터를 중복하여 저장하지 않기 때문에 멤버 중 하나의 디스크만 파손되어도 전체의 데이터 일관성이 보장되지 않는다.
때문에 멤버 디스크가 늘어날수록 안정성이 떨어지므로, 상용 환경에서 사용하기에는 매우 위험하다.
데이터 손실이 문제가 되지 않고, 빠른 입출력 성능 + 많은 용량이 필요한 경우 사용할 수 있다.
멤버 구성원 중 가장 낮은 속도를 가진 디스크의 속도로 하향 평준화 되므로, 성능을 위해 구성할 때 이 점을 유의해야 한다.
RAID 1은 각 멤버 디스크에 같은 데이터를 중복해서 기록하는 방식이다.
멤버 디스크 중 하나만 살아남으면 데이터를 보존할 수 있기 때문에 안정성, 가용성 측면에서 매우 뛰어나다.
멤버 디스크를 늘리더라도 저장 공간이 증가하지 않으며, 대신 가용성이 크게 증가한다.
쓰기 성능과 읽기 성능에서의 이점은 없다.
다만, 단일 읽기 작업이 아닌 병렬 읽기 작업이라면 멤버 구성원 수만큼 증가할 수 있다.
유의할 점은 RAID 1이 백업과 다르다는 점이다.
잘못된 소프트웨어나 해킹 등, 논리적으로 데이터 안정성에 문제가 생기는 경우 모든 멤버가 이를 복제하기 때문에, 이런 상황에서 RAID 1로 데이터 안정성을 보장할 수 없다.
ECC(Error Correction Code, 오류정정부호)를 기록하는 전용 하드디스크를 도입한 방식이다.
ECC의 도입으로 인해, 하나의 멤버 디스크가 고장나게 되면 ECC를 이용해 처리할 수 있다. (즉 정상 동작할 수 있다)
다만, 모든 I/O에서 ECC 계산을 위한 추가적인 연산이 필요하기 때문에 입출력 속도가 떨어지며, ECC 저장을 위한 디스크가 손상될 경우 안정성 문제가 발생할 수 있다.
RAID 2는 RAID 0처럼 striping 방식이고, 에러 체크 및 수정을 위해 비트 단위에 Hamming Code를 사용한다.
striping에 참여하는 멤버 디스크가 4개라면, 최소 3개의 추가 디스크를 ECC 용으로 사용하기 때문에 디스크가 많이 필요하다.
RAID 2는, ECC 기록용 디스크가 많이 필요하다는 단점이 있었다.
RAID 3, 4는 ECC 용으로 사용하는 디스크 수량이 RAID 2에 비해 훨씬 적다. 이러한 이유로 인해 RAID 2는 거의 사용되지 않는다.
RAID 3, 4는 구성 방식이 비슷한데, RAID 0과 같은 Striping 구성을 기본으로 한다.
RAID 3는 바이트 단위로 striping 하고, RAID 4는 블록 단위로 striping 한다. 즉, RAID 4의 striping 단위가 더 크다.
예를 들어 4k block을 저장 할 때, 4개의 멤버 디스크가 있고 바이트 단위로 striping 한다면 각 디스크가 1k 씩 나누어 저장할 것이다. (RAID 3의 바이트 단위 striping 방식)
block 단위로 striping 한다면, 4k 크기의 하나의 block은 disk 1에, 그 다음 block은 disk 2에 .. 순차적으로 저장될 것이다. (RAID 4의 블록 단위 striping 방식)
데이터를 읽을 때, block 단위 striping이 byte 단위 striping보다 접근하는 멤버 디스크의 수가 적기 때문에 (데이터가 적게 분산되어 있으므로) 성능 상 유리하다.
바이트와 블록이라는 단어의 의미는 다음 글에서 확인할 수 있다.
(https://superuser.com/questions/570818/what-is-the-difference-between-striping-bytes-and-blocks-using-raid)
기본 원리는 RAID 4와 비슷하다.
패리티를 한 디스크에 저장하는 기존 RAID 4에서는 패리티 저장 디스크에 병목 현상으로 인한 성능 저하가 있었다.
RAID 5는 이 점을 개선한 방식으로, 패리티를 한 디스크에 저장하는 것이 아니라 각 멤버 디스크에 돌아가면서 저장한다.
구성에 있어 최소 3개의 디스크가 필요하다.
디스크 1개에 문제가 발생한 경우 작동이 가능하지만, 디스크가 2개 이상 고장나는 경우 데이터가 손실된다.
많은 디스크(8개 이상)를 묶으면, 패리티 연산 과정에서 오류 발생 확률이 높아져 안정성이 떨어진다. (이 경우 RAID 6, RAID 10이 권장된다)
RAID 5는 1개의 디스크 장애에 대해서만 가용성이 보장되었다.
RAID 6은 디스크 2개 장애 발생 상황에서도 데이터 안정성을 보장한다.