디스크를 만드는 기술이 발전함에 따라 디스크의 가격이 저렴해지면서 여러 개의 디스크를 이용해 병렬로 운영되는데,, 더 신뢰성 높고 더 빠른 데이터 전송률을 확보하기 위해 RAID (redundant array of inexpensive disk)를 사용한다.
11.8.1 Improvement of Reliability via Redundancy
디스크를 한 개만 사용하여 데이터를 저장하는 경우, 한 번 디스크 오류가 발생하면 엄청난 양의 데이터 손실이 발생할 수 있다. 따라서 중복을 허용하여 데이터를 저장함으로써 데이터의 분실을 막는다.
✅ 미러링 (mirroring)
✔ 중복을 도입하는 가장 간단한 (그러나 가장 비용이 많이 드는) 접근 방법으로, 모든 드라이브의 복사본을 만드는 것이다.
✔ 미러링을 사용하는 경우, 하나의 논리 디스크는 두 개의 물리 드라이브로 구성되고 모든 쓰기 작업은 두 드라이브에서 실행된다. 이러한 결과를 미러드 볼륨이라고 부른다.
이 볼륨 중 하나의 드라이브에 오류가 발생하면, 다른 드라이브로부터 데이터를 읽어 들인다.
✔ 두 디스크를 사용하여 동시에 쓰기를 진행하는 경우 갑자기 전원 고장이 발생한다면, 두 블록은 불완전한 상태가 되는데 이를 방지하기 위해 NVRAM 캐시(비휘발성 캐시)를 RAID 영역에 두고 첫 번째 디스크에 쓰기 작업을 마친 후, 두 번째 디스크에 쓰기 작업을 마친다. 이는 전원 결함 시 데이터 손실을 막아 쓰기 작업이 완전하게 끝날 수 있다.
11.8.2 Improvement in Performance via Parallelism
디스크를 병렬로 접근하게 된다면 한 개의 요청으로 두 개의 디스크에 동시에 쓰기 작업 혹은 읽기 작업이 가능하다.
✅ 데이터 스트라이핑 (data striping)
✔ 여러 드라이브에 각 바이트의 비트를 나누어 저장한다.
➡ 예를 들어 8개의 드라이브를 가지고 있는 경우, 각 드라이브 i에 각 바이트의 비트 i를 쓰는 것이다. 8개의 드라이브의 배열은 보통 사이즈의 8배, 8배의 접근율을 가지는 하나의 드라이브로 취급된다.
✔ n개의 디스크에서 파일의 i번째 블록은 (i mod n) + 1의 드라이브로 간다.
✔ 스트라이핑도 비트 레벨이 아닌 바이트 레벨, 섹터 레벨로 가능하며, 블록 레벨의 스트라이핑이 가장 일반적이다.
11.8.3 RAID Levels
미러링은 높은 신뢰성을 제공하지만 비용이 많이 소요된다.
스트라이핑은 높은 전송률을 제공하지만 신뢰성을 향상할 수 없다.
적은 비용으로 중복을 허용하는 많은 기법이 있으며, RAID 레벨로 분류될 수 있다.
- RAID 0 : 블록 레벨 스트라이핑 디스크 구성으로 여러 개의 디스크를 사용하여 입출력 속도를 향상시키는 구성
- RAID 1 : 드라이브 미러링을 사용
- RAID 4 : 메모리-스타일 오류 수정 코드(ECC) 구성으로 패리티 비트를 이용하여 단일 비트 손상의 경우 데이터를 복구하는 방법이다. 예를 들어, 일련의 쓰기 요청의 첫 번째 데이터 블록은 드라이브 1에, 두 번째 블록은 드라이브 2에, N번째 블록은 드라이브 N에 이런 식으로 저장될 수 있고, 이러한 블록의 오류 수정 계산 결과는 드라이브 N+1(P)에 저장된다.
- RAID 5 : RAID 3,4의 경우 다른 디스크에 패리티비트 정보를 저장하는데 이럴 경우 패리티 비트가 저장된 하드가 손실된 경우가 있다. 이를 막기 위해 비트 정보와 함께 패리티 정보도 N+1개로 나누어 분산시켜 저장한다.
- RAID 6 : P + Q 중복 기법이라고 불리기도 한다. RAID 5와 유사하지만 여러 디스크 오류에 대비하기 위해 추가 중복 정보를 저장한다. 패리티 비트 대신에 에러 교정 코드를 사용한다. 4비트마다 2비트의 중복 데이터를 허용하므로 시스템 내의 2개의 디스크 오류가 생길 수 있다.
- RAID 0+1 : RAID 0과 RAID 1을 조합한 것이다. 높은 성능과 높은 신뢰성 두 가지를 모두 사용할 수 있는 대신에 하드디스크 사용량이 두 배로 늘어난다. 드라이브의 세트가 스트라이프되고, 그 스트라이프가 다른 동등한 스트라이프로 미러링된다.
- RAID 1+0 : 드라이브는 쌍으로 미러링된 후 결과 미러링 된 쌍이 스트라이프 된다.
11.8.4 Selecting a RAID Level
이러한 다양한 선택이 가능하다면,, 시스템 설계자는 어떤 RAID 레벨을 선택해야 할까?
고려사항 중 하나는 복구 능력이다.
11.8.5 Extensions
RAID의 개념은 테이프나 무선 시스템의 데이터를 브로드캐스트 하는 일을 포함하여 여러 저장장치에 적용된다. 테이프의 경우에는 데이터 복구율을 향상시킬 수 있고, 무선 시스템의 데이터 브로드캐스팅의 경우에는 데이터의 블록은 작은 유닛으로 나누어지고 패리티를 함께 브로드캐스팅 하여 전송 손실이 생기더라도 복구가 가능하다.
11.8.6 Problems with RAID
RAID는 물리적 매체의 오류는 보호하지만 다른 하드웨어나 소프트웨어 오류는 보호하지 못한다.