RAID (Redundant Array of Inexpensive Disk)
- 값싼 디스크의 중복 배열법
- 저렴한 디스크 여러 개를 붙여서 마치 하나의 디스크처럼 보이면서도 신뢰도와 성능을 모두 잡는 기술
- 신뢰도 : 데이터가 사라질까봐 걱정하지 않아도 됨
- 성능 : 한 개의 디스크에서 데이터를 읽는 것보다 훨씬 빠르게 처리가능
- 신뢰도를 높이는 3가지 방법
- Mirroring : 중복해서 저장을 한다. 용량이 두 배로 들게 됨
-
Parity Disk : parity disk 하나만 추가로 두어 복구, 한 디스크가 고장이 나면 나머지 디스크들과 parity disk를 XOR 연산을 통해 복구, 추가적인 메모리가 필요하지만 미러링기법에 비해 작은 용량 사용, 디스크 두 개가 나가면 복구 불가능
-
에러 코렉팅 코드 ECC : 미러링과 parity disk의 중간 방법, parity disk 보다 디스크를 추가로 더 둬서 해밍코드 방식으로 동작하게 함으로써 디스크 여러 개가 나가도 복구 가능
비싸고 구현이 복잡하기 때문에 잘 사용하지 않음
- 성능을 높이는 2가지 방법
- Striping 스트라이핑 : 연속된 데이터를 여러 개의 디스크에 라운드로빈 방식으로 기록하는 기술
- 비트 스트라이핑 : 하나의 디스크에 저장되어야 할 블록 하나를 여러 개의 디스크에 비트로 쪼개어 나누어 저장하는 방법, 데이터를 동시에 읽기 때문에 속도가 더 빠름
-
블럭 스트라이핑 : 블럭 단위로 striping하는 방법
⇒ 디스크는 한 번에 많이 읽는 것이 필요하기 때문에 비트보다는 블럭이 성능향상의 폭이 더 큼
- Striping 스트라이핑 : 연속된 데이터를 여러 개의 디스크에 라운드로빈 방식으로 기록하는 기술
Small Write Problem
- 작은 양의 write가 계속될 때 parity를 매번 다시 계산해줘야 하므로 오버헤드가 커지는 문제
- 블럭 스트라이핑 같은 기술에서 한 블럭만 갱신하는 경우 n번의 디스크 접근이 필요하기 때문에 성능 저하 발생