책/운영체제

운영체제 29. Redundant Array of Inexpensive Disk(RAID)

에린_1 2024. 3. 28. 00:31
728x90

운영체제

29. Redundant Array of Inexpensive Disk(RAID)

  • 여러개의 디스크를 조화롭게 사용하여 고속이면서 대용량의 신뢰할 수 있는 디스크 시스템을 만든다.
  • 외면적으로 RAID는 하나의 디스크 처럼 보인다. 읽거나 쓸 수 있는 블럭의 그룹으로 보인다. 안을 들여다보면 RAID는 여러개의 디스크와 메모리, 시스템을 관리하기 위한 하나 또는 그 이상의 프로세스로 이루어진 복잡한 기계이다. RAID 하드웨어는 컴퓨터 시스템과 매우 유사하며 디스크의 그룹을 관리하기 위한 전용 시스템이다.
  • RAID는 단일 디스크에 비해 여러 장점들을 제공한다. 하나의 장점은 성능이다. 디스크를 여러개 병렬적으로 사용하면 I/O 시간이 크게 개선된다. 또 다른 장점은 용량이다. 데이터의 양이 많아지면 더 많은 디스크 공간이 필요하다. 마지막으로 RAID는 신뢰성을 높일 수 있다. 데이터를 여러 디스크에 분산하여 저장하면 디스크 중에 하나만 고장나도 데이터를 잃어버릴 수 있다. 데이터 중복 기술(redundancy)를 사용함으로써 RAID는 디스크 한 개의 고장은 감내할 수 있으며, 고장이 전혀 없던 것처럼 동작할 수 있다.
  • RAID는 자신을 활용하는 시스템에게 이러한 장점들을 투명하게 제공한다. 호스트 시스템은 RAID를 그저 거대한 디스크로 인식한다. 운영체제와 클라이언트 응용 프로그램은 변경없이 계속 동작할 수 있다. 이와 같이 투명성은 RAID의 확산력(deployability)을 크게 개선시켰다. 사용자와 관리자가 소프트웨어 호환성을 전혀 걱정하지 않고 RAID를 사용할 수 있게 하기 때문이다.

29.1 인터페이스와 RAID 내부

  • 단일 디스크가 그러한 것처럼 RAID도 선형적인 블럭들의 배열로 보이며 파일 시스템이 각 블록을 읽거나 쓸 수 있다.
  • 파일 시스템이 RAID에 논리적 I/O를 요청하면 RAID는 내부에서 어떤 디스크를 접근해야 요청을 완료할 수 있는지 계산한 후에 하나 또는 그 이상의 물리적 I/O를 발생시킨다. 물리적 I/O에 대한 정확한 특성은 RAID 레벨에 따라 다르다. 각 블록에 대해서 서로 다른 디스크에 2개의 복사본을 유지하는 RAID는 미러링 기반의 RAID이다. 시스템에서 블록에 쓰는 경우 하나의 논리적 I/O에 대해서 두 개의 물리적 I/O를 실행해야 한다.
  • RAID 시스템은 보통 별도의 하드웨어 박스 형태로 되어 있으며 호스트와 SCSI나 SATA같은 표준 인터페이스로 연결된다. 내부적으로 RAID의 작업을 지시하는 펌웨어를 실험하는 마이크로 컨트롤러 그리고 블록을 읽고 쓸 때 버퍼로 사용할 DRAM과 같은 휘발성 메모리가 있으며, 어떤 경우에는 쓰기를 안전하게 버퍼링하기 위한 비휘발성 메모리뿐 아니라 패리티 계산을 위한 전용 논리 회로를 갖고 있기도 하다. 상위 레벨의 관점에서 RAID는 특수한 컴퓨터 시스템이다. 프로세서와 메모리 그리고 디스크를 가지고 있다. 단, 차이가 있다면 응용 프로그램을 실행하는 대신 RAID를 동작 시키기 위해 설계된 전용 소프트웨어를 실행한다는 것이다.

29.2 결함 모델

  • RAID는 특정 종류의 결함을 파악하고 이를 복구하도록 설계되어 있다. 그렇기 때문에 설계시 어떤 종류의 결함에 대비를 해야하는지 파악하는 것이 매우 중요하다.
  • 첫 번째 모델은 고장시 멈춤(fail-stop) 결함 모델이라고 불린다. 이 모델에서 디스크는 정상작동이거나 멈춤 둘 중 하나의 상태로 있다고 가정한다. 동작 중인 디스크에는 모든 블럭을 읽거나 쓸 수가 있다. 반대로 멈춤 상태의 디스크는 완전히 사용 불가능하다고 간주한다.
  • 고장시 멈춤 모델의 치명적인 단점은 결함이 발견되는 경우에 대한 가정이다. 이 모델에서는 디스크가 고장나면 쉽게 파악할 수 있다고 가정한다.

29.3 RAID의 평가 방법

  • 세 개의 축을 중심으로 각 RAID 설계를 평가한다. 첫 번째 축은 용량이다. 각각이 B개의 블록을 가지는 N개의 디스크가 주어졌을때 유효용량은 NB이다. 미러링의 경우 (NB)/2 이고 다른 기법은 그 사이의 값을 가지게 된다.
  • 두 번째 평가의 축은 신뢰성이다. 우리의 결함 모델에 따라 하나의 디스크만 고장날 수 있다고 가정한다.
  • 마지막 세 번째 축은 성능이다. 성능은 디스크 배열이 처리해야 할 워크로드에 따라 크게 달라진다.

29.4 RAID 레벨 0 : 스트라이핑

  • 스트라이핑은 다음의 그림과 같이 블록들을 여러 디스크에 걸쳐서 줄을 긋는것 처럼 저장한다.
  • 디스크 배열의 블록들을 라운드 로빈 방식으로 디스크를 가로질러 펼친다. 이 접근법은 연속적인 청크에 대해 요청을 받았을 때 병령성을 가장 잘 활용할 수 있게 설계되었다. 같은 행에 있는 블록들을 스트라이프라고 부른다.

청크 크기

  • 청크 크기는 RAID의 성능에 큰 영향을 준다. 작은 청크 크기가 의미하는 것은 많은 파일들이 여러 디스크에 걸쳐서 스트라이프 된다는 말이며 그 결과로 하나의 파일을 읽고 쓰는데 병렬성이 증가하게 된다. 하지만 블록의 위치를 여러 디스크에서 찾아야 하므로 위치 찾기 시간이 늘어난다. 왜냐하면 요청 처리 시간은 여러 디스크에 걸친 요청들 중에 가장 오래걸린 위치 찾기 시간에 의해 결정되기 때문이다.
  • 반면 큰 청크 크기의 경우 파일 내의 병렬성은 줄어들고 따라서 높은 처리 성능을 얻으려면 여러 요청을 병행하게 실행해야 한다. 하지만 큰 청크 크기의 경우 위치 찾기 시간은 줄어든다.

RAID의 성능 평가하기

  • RAID의 성능을 분석하기 위해 두 가지 다른 성능 척도를 고려해야 한다. 하나는 단일 요청의 지연 시간이다. 하나의 I/O를 처리하는데 걸리는 RAID의 지연 시간에 대한 이해는 한번의 논리적 I/O 동작을 처리할 때의 병렬성 정도를 파악하는데 도움이 된다. 두 번째 척도는 RAID의 정상상태(stable state)에서의 처리성능(throughput)이다. 병행 요청의 전체적인 대역폭을 말한다. 고성능을 요하는 환경에서 RAID가 주로 사용되기 때문에 안정(stable) 상태에서의 대역폭은 매우 중요하며 우리 분석의 주 안점이기도 하다.
  • 순차 워크로드는 연속된 큰 청크의 형태로 RAID에 요청된다.
  • 랜덤 워크로드는 크기가 작은 요청이며 또한 디스크의 여러 불특정 위치를 접근한다. 데이터베이스 관리 시스템의 트랜잭션과 같은 일부 중요한 워크로드는 이와 같은 접근 패턴을 보이기 때문에 역시 중요한 워크로드로 여겨진다.
  • 순차와 랜덤 워크로드는 디스크로부터 큰 성능 차이를 만들어낸다. 순차접근의 경우 디스크가 가장 효율적으로 동작한다. 탐색과 회전 지연이 짧아 대부분의 시간을 데이터 전송에 사용한다. 랜덤 접근의 경우 그 반대이다. 대부분의 시간은 탐색과 회전을 기다리는데 사용되고, 상대적으로 적은 시간이 데이터 전송에 사용된다.
  • 스트라이핑의 성능은 전반적으로 괜찮다. 지연 시간 측면에서 한 블록에 대한 요청의 지연 시간은 하나의 디스크에 대한 요청의 지연시간과 거의 동일하다.
  • 정상상태에서의 대역폭 측면에서 시스템의 최대 대역폭을 기대할 수 있다. 그러므로 처리성능은 N(디스크의 수) * S(디스크 하나의 순차접근 대역폭)와 같다.

29.5 RAID 레벨 1 : 미러링

  • 미러링을 사용하는 시스템에서는 각 블록에 대해서 하나 이상의 사본을 둔다. 각 사본은 서로 다른 디스크에 저장되어야 한다. 그렇게 함으로써 디스크 고장에 대처할 수 있게 된다.
  • 미러링된 배열에서 블록을 읽을 때 RAID는 원본을 읽을건지 사본을 읽을건지 선택할 수 있다. 반면 블록을 쓰는 경우에는 그렇게 선택할 수 없다. RAID는 신뢰성을 유지하기 위해 두 벌의 데이터를 모두 갱신해야 한다.

RAID-1 분석

  • 용량 측면에서는 비용이 많이 든다. 미러링 레벨이 2라면 최대 사용 가능한 용량의 반만 사용할 수있다.
  • 신뢰성 측면에서는 괜찮은 편이다. 디스크 중 어느것에서 고장이 발생하더라도 감내할 수 있다. 일반적으로 미러링 시스템의 경우 한 개의 디스크 고장은 확실히 감내할 수 있고 어떤 디스크가 고장나느냐에 따라 N/2개의 결함까지 감내할 수 있다.
  • 성능을 분석해보자 단일 읽기 요청의 지연 시간은 단일 디스크에서 읽는 경우의 지연 시간과 동일하다. 쓰기의 경우는 다르다. 쓰기 요청이 완료되기 위해서는 두 개의 디스크로 전달된 쓰기가 모두 종료되어야 한다. 이 두개의 쓰기는 병렬적으로 이루어지기 때문에 하나의 쓰기에 소요되는 시간과 거의 동일할 것이다. 하지만 RAID-1에 요청된 쓰기는 물리적으로 두 개의 쓰기연산이 종료될 때까지 대기해야 하므로, 그 지연시간은 두 개의 요청 중 최악의 탐색과 회전 지연 시간에 의해 결정된다. 평균적으로 하나의 디스크에 쓰는 시간보다는 조금 더 길다.
  • 순차 워크로드에서 쓰기를 할 때 각 논리 쓰기는 항상 두 번의 물리 쓰기가 필요하다. 그러므로 미러링된 배열에 순차쓰기의 경우 최대 대역폭의 절반의 대역폭을 얻을 수 있다.
  • 불행하게도 순차읽기 상황에서도 동일한 성능을 얻는다.
  • 랜덤 읽기가 미러링된 RAID에서는 최고의 워크로드이다. 이 경우 모든 디스크에 읽기를 다 요청할 수 있기 때문에 최대의 대역폭을 얻을 수 있다.

29.6 RAID 레벨 4 : 패리티를 이용한 공간절약

  • 패리티 기반의 접근법은 저장 공간을 더 적게 사용하려고 하여 미러링 기반 시스템이 지불하는 엄청난 공간 낭비를 극복하려고 시도한다. 그 대신 성능이라는 비용을 지불한다.
  • 각 데이터 스트라이프마다 해당 스트라이프에 대한 중복 정보를 담고 있는 패리티 블록 하나를 추가한다.
  • 패리티를 계산하기 위해서 스트라이프에 속해 있는 블록중 하나의 블록이 고장나더라도 견딜 수 있게 하는 수학 함수가 필요하다. 간단한 함수인 XOR이 우리가 원하는 목적에 부합한다.
  • 어떤 줄이던 그 줄의 1의 수는 패리티를 포함해서 짝수가 되어야 한다. 이것은 RAID의 패리티가 정확하게 동작하기 위해 유지해야 하는 불변량이다.
  • 고장난 디스크로 부터 데이터를 복구해야 할 경우 단순히 그 행의 모든 값을 읽은 후 다시 XOR 계산을 하면 된다.

RAID-4 분석

  • 용량측면에서 패리티 정보를 저장을 위해 디스크 하나를 사용하기 때문에 (N-1)*B 저장공간을 제공한다.
  • 신뢰성은 RAID-4는 오직 하나만의 디스크 고장을 감내할 수 있다.
  • 성능의 경우 순차읽기 성능은 패리티 디스크를 제외한 모든 디스크를 활용할 수 있기 때문에 최대 유효한 대역폭은 (N-1)*S가 된다.
  • 순차 쓰기의 경우 RAID-4는 스트라이프 전부 쓰기(full-stripe write)라는 간단한 최적화 방법을 수행한다. 순차 쓰기 성능 또한 (N-1)*S가 된다.
  • 랜덤 읽기의 경우도 모든 데이터 디스크에서 읽을 수 있지만 패리티 디스크에서는 읽지 못한다. 그러므로 유효성능은 (N-1)*R이다.
  • 랜덤 쓰기의 경우 가산적 패리티(additive parity)방법, 감산적 패리티(subtractive parity) 방법이 있다. 가산적 패리티의 경우 디스크 개수에 따라 계산의 양이 달라지기 때문에 더 큰 RAID의 경우에는 패리티 계산을 위해 많은 수의 읽기 연산이 필요하다. 그래서 감산적 패리티 방법이 나왔다.
  • 데이터 디스크에 대한 입출력은 서로 병렬적으로 실행하는 것이 가능하다. 그러나 패리티 디스크에 대한 쓰기는 모두 순차적으로 실행되어야 한다. 시스템에 도착하는 쓰기 요청은 패리티 디스크로 인해 순차적으로 처리된다.
  • 이러한 문제를 small-write 문제라고 하고 RAID-4의 처리 성능은 매우 안좋다 패리티 디스크의 병목으로 발생하는 성능저하 현상이다. 때문에 디스크를 추가해도 성능 개선은 일어나지 않는다.

29.7 RAID 레벨 5: 순환 패리티

  • 각 스트라이프를 위한 패리티 블록은 RAID-4의 패리티 디스크의 병목현상을 없애기 위해 전체디스크에 걸쳐 순환 배치된다.

RAID-5 분석

  • 많은 부분 RAID-4와 동일하다. 유효 용량, 결함 허용, 순차읽가와 쓰기 성능도 동일하다.
  • 모든 디스크를 다 활용할 수 있기 때문에 랜덤 읽기 성능은 약간 더 좋다. 랜덤 쓰기 성능은 요청들을 병렬적으로 처리할 수 있기 때문에 RAID-4 대비 눈에 띄게 개선된다.
728x90