운영체제(OS)

[OS] RAID

서노리 2022. 12. 8. 17:29
반응형

RAID (Redundant Array of Independent Disks)

디스크의 성능 지표로는 성능(performance), 용량(capacity), 신뢰성(reliability)이 있는데 RAID는 다중 디스크를 사용하는 디스크 가상화 기술로 단일 디스크에 비해 성능, 용량, 신뢰성을 모두 향상시킨다.

 

RAID 방식은 0 ~ 6까지 7개의 레벨로 구성되며 서로 계층적 관계는 없지만 다음 3가지 특성을 공유한다.

  1. 운영체제에 의해서 단일 논리적인 드라이브로 판단되는 물리적 디스크 드라이브의 집합
  2. 데이터는 배열의 물리적 드라이브에 스트라이핑(striping) 기법을 사용하여 분산
  3. 중복된 디스크 용량은 패리티 정보를 저장하는데 이는 데이터 복구를 보장하기 위함

두 번째와 세 번째 특성의 세부 사항들은 RAID 레벨 별로 차이가 있으며 RAID 0과 1은 세 번째 특성을 지원하지 않음


RAID 0 - 스트라이핑

서로 다른 디스크의 같은 행에 있는 블록들을 스트라이프(stripe)라고 부른다. RAID 0은 라운드-로빈 방식으로 스트라이핑하는 방식으로 n개의 스트립들이 동시에 처리될 수 있어 I/O 시간을 감소시킬 수 있다. 

 

하지만, RAID 0은 중복 저장을 하지 않기 때문에 진정한 RAID 레벨은 아니다.

RAID 1 - 미러링(Mirroring)

RAID 1은 미러링이라는 방식을 사용하여 중복 데이터를 획득한다. 미러링이란 같은 디스크를 그대로 또다른 디스크에 복사하여 저장하는 것이다. 따라서 둘 중 하나의 디스크가 crash 된다 하더라도 복구할 수 있다.

 

RAID 1의 읽기 요청은 두 개의 디스크 중 I/O 시간이 더 적은 디스크에서 서비스되며 쓰기 요청은 두 개의 디스크에 모두 갱신해야 하므로 성능은 I/O 시간이 더 큰 것에 영향을 받는다.

 

RAID 1의 단점은 논리적 디스크 크기의 두 배의 공간이 필요하다는 것이다.

 

RAID 2

RAID 2/3/4는 패리티 디스크 (parity disk)를 사용하는 방식이다. 패리티 디스크란 데이터 복구를 위해 존재하는 디스크로 다른 디스크들의 데이터를 검사할 수 있는 값들을 저장하게 된다.

 

RAID 2는 다수의 패리티 디스크를 사용하며 각 데이터 디스크 상의 상응하는 비트들에 대해 에러-교정 코드(해밍 코드)를 계산하여 저장한다. 많은 디스크 에러가 발생하는 환경에서 효과적이다.

 

RAID 3

RAID 3는 단 하나의 패리티 디스크를 사용하며 에러-교정 코드 대신에, 하나의 패리티 비트가 모든 데이터 디스크의 동일한 위치에 있는 각 비트들의 집합에 대해 계산하여 저장한다. 각 비트 집합의 XOR 계산 결과를 패리티 디스크에 저장하고 한 개의 데이터 디스크에서 crash가 발생할 경우 이를 통해 복구할 수 있다. 이 원리는 RAID 3 ~ 6까지 모두 적용된다.

 

RAID 4

RAID 4는 RAID 3와 매우 유사한데 RAID 3가 비트 단위의 스트립을 사용했다면 RAID 4는 블록 단위의 스트립을 사용한다. 쓰기 연산이 일어날 때마다 항상 패리티 디스크를 접근해야 하며 패리티 디스크의 병목 현상이 발생할 수 있다.

 

RAID 5

RAID 5는 RAID 4에서 패리티 디스크를 별도로 운용하지 않고 패리티 스트립을 모든 디스크에 분산하여 저장하는 방식이다. RAID 4의 단일 패리티 디스크 병목 현상을 해결할 수 있다.

 

RAID 6

RAID 6은 서로 다른 두 개의 패리티 연산이 수행되어 서로 다른 디스크 블록에 저장되는 방식이다. 사용자 데이터로 N개의 디스크를 요구하는 RAID 6배열은 N+2개의 디스크가 필요하다. RAID 6는 최대 2개의 디스크 crash를 복구할 수 있다.

 


비교

  • 각각의 RAID는 종속적이지 않음
  • 단계가 더 높다고 더 좋은 것이 아님


반응형

'운영체제(OS)' 카테고리의 다른 글

[OS] FSCK and Journaling  (0) 2022.12.08
[OS] Hard Disk, Disk Scheduling  (0) 2022.12.08
[OS] File System  (0) 2022.12.07
[OS] pthread  (0) 2022.12.06
[OS] Deadlock  (0) 2022.12.05