Search

RAID 기술을 이용한 병렬 디스크 접근

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 디스크 들을 다시 그룹핑 하는 방법입니다.