RAID 기술을 이용한 병렬 디스크 접근
•
보조 기억 장치 기술의 성능과 신뢰도를 프로세서 기술의 수준으로 올려야 한다.
•
보조 기억 장치 기술의 주요한 발전은 RAID(Redundant Arrays of Inexpensive Disks)의 개발로 대표된다.
•
RAID의 주요 목표는 메모리와 마이크로프로세서의 성능 향상과 균형을 맞출 수 있도록 디스크의 성능을 획기적인 비율로 향상시키는 데 있다.
•
자연스러운 해결책은 여러 개의 작고 독립적인 디스크를 배열로 구성하여 하나의 고성능 디스크처럼 동작하도록 하는 것이다.
•
여기에는 디스크의 성능 향상을 위해 병렬성을 사용하는데, 이 개념을 데이터 스트라이핑(data striping)이라 한다.
•
데이터 스트라이핑은 여러 개의 디스크가 하나의 크고 빠른 디스크처럼 보이도록 데이터를 다중 디스크로 투명하게 분산시킨다.
•
Data striping: 화일 A가 네 개의 디스크에 스트라이핑
•
파일 A를 읽을 때 스트라이핑시킨 4개의 디스크로 병렬적으로 읽으면 4배 정도 빨라진다 (부르트포스 적인 생각)
Reliability
•
신뢰성을 향상시키는 첫 번째 방법은 데이터를 두 개의 동일한 물리적 디스크에 중복해서 기록하는 반사(mirroring) 또는 그림자(shadowing)기법을 사용하는 것이다.
◦
미러링의 경우, 읽는 속도는 빨라진다 ⇒ 둘 중에 먼저 읽는 것으로 디스크 I/O를 실행
◦
쓰기 속도는 둘 다 써야하기 때문에 약간 느려질 수 있다.
Exclusive OR (XOR)
•
두 번째 방법은 디스크 오류 발생시 손실된 정보를 재구축하는 데 사용할 부가 정보를 저장하는 것이다.
◦
여분의 정보를 계산하기 위해 패리티(parity)비트나 해밍 코드 같은 특별한 코드를 포함한 에러 검출 코드를 사용한다. ⇒ XOR 같은 연산방식을 이용해 손실된 디스크의 정보를 재구축
◦
중복된 정보를 디스크 배열상에 분산시키기 위해 몇 개의 디스크에 여분의 정보를 저장하는 방식과, 모든 디스크에 균등하게 여분의 정보를 저장하는 방식이 있다. 두 번째 방식이 더 좋은 부하 균등을 제공한다.
Data striping granularity
•
Bit-level data striping : 데이터의 각 바이트를 비트들로 분할하여 비트들이 서로 다른 디스크에 분산함으로 더 작은 단위를 데이터 전송에 사용하는 방식이다.
•
Block-level data striping : 데이터를 분산하는 단위로 화일의 블록을 사용하는 방식이다. 하나의 블록에 다수의 요청을 각 디스크에 의해 병렬로 처리할 수 있어서, I/O 요청 대기 시간이 줄어든다.
RAID Level
•
RAID의 구조는 데이터 분산(스트라이핑)의 단위와 여분의 정보를 계산하는 데 사용되는 패턴의 두 가지 요인의 조합 방법에 따라 서로 구별된다.
◦
RAID 레벨 0은 여분의 데이터를 갖지 않아서 데이터의 갱신이 중복되지 않으므로 가장 좋은 쓰기 성능을 가진다. ⇒ 일반 스트라이핑 ⇒ 쓰기, 읽기 속도가 제일 빠름, 하지만 제일 신뢰도가 낮음
◦
RAID 레벨 1은 디스크들을 복사한다. ⇒ Mirroring , No striping ⇒ 제일 신뢰도가 높음
◦
RAID 레벨 5는 블록 레벨 데이터 스트라이핑을 이용하며, 데이터와 패리티 정보를 모든 디스크에 분산시킨다. ⇒ 페리티를 디스크마다 분산 배치
•
(a) RAID Level 1 (b) RAID Level 5
a : 미러링(쉐도잉)
b : Parity를 이용함 (Parity를 마지막에만 놓는 것이 아닌 디스크 마다 분산시켜 배치 )
•
RAID 레벨 1에서 디스크 오류를 복구하는 것이 가장 쉽다. ⇒ Hot Stand-By
◦
레벨 1은 로그 저장 같은 중요한 응용을 위해 사용한다. ⇒ 로그는 지워지면 안되는 소중한 정보 (REDO LOG) ⇒ 제일 신뢰도가 높음
•
RAID 레벨 5는 대용량의 데이터 저장 (테이블) 을 위해 주로 사용되며, 높은 전송률을 제공한다.
•
현재 가장 널리 사용되고 있는 RAID 기술은 스트라이핑을 지원하는 레벨 0, 반사 기능을 가진 레벨 1, 패리티를 위한 추가적인 디스크를 가진 레벨 5이다.
•
주어진 여러 응용을 위한 RAID 설정을 설계하기 위해서는 RAID의 레벨, 디스크의 수, 패리티 기법의 선택, 블록 레벨 스트라이핑을 위한 디스크 그룹핑 방법 등 여러 가지 사항을 고려해야 한다.
중첩 RAID
RAID 10 : 만약 디스크 (0, 1) (2,3) 이 고장나면 동작을 안함 ⇒ 작동 안할 확률 = 2/6 ← 더 나은 선택
•
여러 디스크에 복제하여 저장하는 RAID 1 방식의 RAID 들을 상위에서 여러 디스크에 번갈아 가며 저장하는 방식의 RAID 0 방식으로 다시 그룹핑 하는 방법입니다.
RAID 0+1 : 디스크 1, 2 이 고장나면 작동을 안함 ⇒ 하나라도 고장나면 RAID 0 시스템이 성립되지 않음 ⇒ 고장날 확률 = 4/6
•
여러 디스크에 번갈아 가며 저장하는 RAID 0 방식의 RAID 들을 상위에서 여러 디스크에 복제하여 저장하는 방식의 RAID 1 방식으로 다시 그룹핑 하는 방법입니다.
RAID5으로 구성한 것을 RAID0 방식으로 그룹핑하여 다시 구성한 것
블록 (Block) 단위로 스트라이핑 (Striping) 을 하며 에러 체크 및 수정을 위한 패리티 정보를 매번 다른 디스크에 저장하는 RAID 5 방식을 바탕으로, 여러 디스크에 번갈아 가며 저장하는 방식의 RAID 0 방식으로 RAID 5 디스크 들을 다시 그룹핑 하는 방법입니다.