CS/컴퓨터 구조론

컴퓨터 구조론 6장 [보조저장장치-RAID]

devrabbit22 2025. 4. 7. 00:30

RAID(Redundant Array of Independent Disks)

  • 다수의 작은 디스크들을 배열로 연결하여 용량을 늘리고 신뢰성도 향상시킨 대용량 디스크시스템
  • RAID는 대규모 저장 용량을 필요로 하는 중대형 급 컴퓨터시스템에서 널리 사용되고 있다.

RAID 출현의 배경

  • 디스크의 저장 밀도가 계속 높아짐에 따라 메가바이트 당 가격이 떨어지고 시스템이 보유할 수 있는 디스크 용량이 증가하는데, 이러한 추세는 전력 소모가 낮은 소형 디스크에서 특히 두드러지게 나타나고 있다. 이 같은 추세에 따라, 하나의 대형 디스크를 사용하는 것보다 크기가 작은 여러 개의 디스크들을 서로 연결하여 하나의 큰 용량을 가진 디스크 유니트로 사용하는 것이 보다 저렴한 가격으로 더 큰 용량을 가진 디스크 서브시스템을 구성할 수 있는 방법이 된다.
  • 디스크는 컴퓨터의 프로그램 실행 속도에 직접적으로 영향을 주는 온라인 보조저장장치이기 때문에 액세스 속도와 신뢰도의 향상도 용량의 증가만큼 중요하다.
  • 디스크의 속도를 향상시키기 위해 액세스시간을 줄이고 데이터 전송 속도를 높여야 한다.
  • 용량을 늘리기 위해 배열 구조로 연결한 다수의 작은 디스크들에 데이터를 분산 저장하게 되면 동시에 액세스가 가능해진다.

ex) 어떤 파일을 구성하고 있는 데이터 블록들을 서로 다른 디스크들에 분산 저장한다면, 그 블록들을 여러 디스크들로부터 동시에 읽거나 쓸 수 있는 것이다. 또한 디스크마다 별도의 전송 채널을 가지므로 병렬 전송이 가능해져서 데이터 전송 시간도 크게 단축시킬 수 있게 된다.

디스크 인터리빙(disk interleaving)

  • 데이터 블록들을 여러 개의 디스크들에 분산 저장하는 기술
  • 어떤 파일이 다수의 데이터 블록들로 이루어져 있을 때 디스크 인터리빙 기술을 이용하면, 블록들을 라운드-로빈(round-robin) 방식으로 서로 다른 디스크들에 균등하게 분산 저장할 수 있다.

디스크 인터리빙을 이용한 분산 저장

 ex)네 개의 디스크들로 구성된 디스크 배열에 16개의 블록들로 이루어진 파일을 저장한다고 가정하면, 그 경우에 데이터 블록 B1은 첫 번째 디스크에 저장하고, B2, B3, B4는 순서대로 다음 디스크들에 저장한다.

  • 블록 수가 디스크 수보다 더 많으므로 다섯 번째 블록인 B5는 다시 첫 번째 디스크에 저장하고, 순서를 계속 반복하게 된다.
  • 결과적으로 데이터 블록들이 네 개의 디스크들에 균등하게 분산 저장되었다. 따라서 각 블록들을 동시에 쓰거나 읽는 동작이 독립적으로 수행될 수 있고, 어느 한 디스크에 액세스가 집중되지 않기 때문에 병목 현상도 줄일 수 있다. 
  • 그러나 한 디스크에만 결함이 발생해도 전체 데이터 파일이 손상되는 문제가 있다.

이와 같은 디스크 배열의 이점과 문제점

  • 크기, 전력 소모량, 데이터 전송률, 입출력 처리율 및 가격 등 모든 면에서 디스크 배열이 더 우수하다는 것을 알 수 있다.
  • 디스크 배열의 주요 단점은 MTTF(Mean Time To Filure)가 낮다는 것이다.

MTTF

  • 장치에 결함이 발생하는 평균 시간 간격
  • MTTF = 100일이라면, 평균적으로 100일마다 한 번씩 고장이 발생한다는 의미이다.
  • 디스크 배열에서는 하나의 파일을 구성하는 데이터 블록들을 여러 개의 블록들에 분산 저장하기 때문에, 그 중의 어느 한 디스크만 결함이 발생하여도 파일 전체를 사용할 수 없게 되며, 결과적으로 전체 디스크 배열의 사용이 불간능해진다.
  • 일반적으로 소형 디스크는 더 큰 디스크와 비슷한 수준의 신뢰도를 가지고 있지만, 여러 개가 연결되면 신뢰도가 그 수만큼 낮아진다.

각 디스크의 MTTF가 일정하다고 가정할 때, 디스크 배열의 MTTF는 다음과 같아진다.

ex) MTTF = 3000시간인 디스크 100개를 배열로 구성하였담녀 MTTF는 30000/100 = 300시간이 된다.

즉, 3년정도에 한 번씩 결함이 발새하는 디스크들 100개를 배열로 연결하여 하나의 유니트로서 동작시키는 경우에는 2주일마다 결함이 발생하게 된다는 것이다. 만약 1000개의 디스크들로 배열을 구성한다면 30시간, 즉 하루 정도에 한 번씩 결함이 발생한다는 계산이 나온다.

  • 이러한 문제를 보완하기 위해 디스크 배열의 결함 허용(fault-tolerance)능력을 높이기 위한 많은 노력들이 이루어져 왔다.
  • 그 결과, 디스크 배열에 오류 겸출 및 복구를 위한 여분의 디스크들(redundant disks)을 추가함으로써 ,오류가 발생하는 경우에도 원래의 데이터를 복구할 수 있는 RAID가 출현하기에 이르렀다.
  • RAID는 오류 검출 및 정정 방법에 따라 여러 종류의 조직들이 제안되어 왔으며, 그들 중에서 용도와 신뢰도 요구 정도에 따라 적절히 선택하여 사용하면 된다.

검사 디스크(check disk)

  • RAID에서 오류 검출 및 복구에 사용될 비트들을 저장히기 위해 추가되는 디스크
  • 동작 원리 : 배열 내의 한 디스크에 결함이 발생하면, 그 디스크의 사용은 중단되고 검사 디스크에 저장된 정보를 이용하여 원래의 정보를 신속히 재구성하여 여분의 디스크에 저장한다. 

MTTR

  • 데이터 오류 혹은 디스크 결함 발생 시에 원래 내용을 복구하는 데 걸리는 평균 시간
  • 프로그램이 실행되고 있는 동안에 결함 디스크가 여분의 다른 디스크로 대체되는 것은 내부 회로에 의하여 자동적으로 일어난다. 따라서 RAID를 사용하는 시스템에서는 프로그램 실행 중에 어떤 디스크에 결함이 발생하더라도 중단될 필요가 없다. 그리고 결함이 발생한 디스크는 시스템 운용자가 새로운 디스크로 교체해 주면 된다.

RAID의 종류

RAID-1

RAID-1의 조직

이 구조에서는 데이터를 두 개의 디스크들에 중복 저장한다. 이 방식은 디스크 미러링 방식이라고 한다.

디스크 미러링(disk mirroring)

  • 디스크에 데이터를 저장할 때 다른 디스크에도 같은 내용을 동시에 저장하는 기법
  • 즉, 여기서는 한 패키지 내에 데이터 디스크와 미러 디스크(반사 디스크)가 같이 존재하며 데이터 디스크에 저장된 모든 데이터들을 짝을 이루고 있는 미러디스크의 같은 위치에 복사된다.
  • RAID-1의 조직에서는 네 개의 디스크들 중에서 두 개가 데이터 디스크로 사용되고, 다른 두 개는 미러 디스크로 사용된다.
  • 데이터 디스크들에는 데이터 블록들이 순서대로 분산 저장되며, 같은 방법으로 미러 디스크들에도 저장된다.
  • 만약 첫 번째 데이터 디스크에 결함이 발생하더라도, 그 디스크에 저장되어 있는 모든 데이터들이 세 번째 디스크에도 저장되어 있으므로 데이터를 잃어버릴 염려가 없게 되는 것이다. 결과적으로, 이 조직은 결함 복구에 시간을 전혀 소모하지 않고도 높은 신뢰도를 얻을 수 있다.

이 조직에서 쓰기 동작은 항상 두 디스크들에서 동시에 수행되어야 한다.

  • 만약 쓰기 동작이 시작되는 순간에 두 디스크에서 헤드의 위치가 서로 다르다면, 탐색 시간에 차이가 발생하므로 쓰기 동작에 걸리는 시간이 서로 달라질 것이다. 그런 경우에 동작이 시작되는 순간에 두 디스크에서 헤드의 위치가 서로 다르다면, 탐색 시간에 차이가 발생하므로 쓰기 동작에 걸리는 시간이 서로 달라질 것이다. 그런 경우에 쓰기 동작은 더 오래 걸리는 디스크에서의 쓰기가 완료 되어야 끝난다.
  • 반면에 읽기 동작은 원하는 데이터가 저장되어 있는 두 디스크들 중에서 더 짧은 탐색 시간과 회전 지연시간이 요구되는 디스크를 선택하여 수행하면 된다.

RAID-1의 단점

  • 가격이 높다. 그 이유는 전체 디스크에서 사용 가능한 용량이 절반으로 줄어들기 때문이다. 그렇기 때문에 RAID-1은 높은 신뢰도를 요구하는 결함허용시스템에 주로 사용된다. 일반적인 컴퓨터시스템에서 사용하는 경우에는 주로 시스템 소프트 웨어 혹은 중요한 데이터 파일들을 저장하는 목적으로만 사용된다.

RAID-2

  • 디스크 배열에서 각 디스크에 데이터를 비트-단위로 인터리빙 시킬 수도 있다.
  • 데이터 단어를 이루고 있는 비트들을 여러 갱틔 데이터 디스크들에 각각 한 비트씩 분산 저장하는 것이다. 이 경우에 검사 디스크들을 추가하고 해밍 코드(Hamming code)를 사용하면 비트 오류를 검출하고 정정도 할 수 있다.
  • 이 개념이 사용된 구조가 RAID-2이다. 
  • 이러한 구조에서 데이터 디스크의 수를 G라고 할 때, 필요한 검사 디스크들의 수(C)는 해밍 코드의 원리에 따라 결정된다.

  • 이 식을 적용하면 데이터 디스크가 8개(G=8)인 경우에 검사 디스크 C = 4개가 필요하므로, 오버헤드가 50%이다. 그러나 G = 16인 경우에는 C = 5가 되어 오버헤드가 31%가 된다. 즉, 검사 디스크에 의한 오버헤드는 전체 디스크들의 수가 증가할 수록 감소한다.
  • RAID-2에서는 RAID-1 보다 적은 수의 디스크들이 필요하지만, 검사 디스크의 수가 데이터 디스크 숭틔 log2값에 비례하므로 여전히 가격이 높다. 따라서 RAID-2도 많은 오류가 발생하는 환경에서만 사용되는 편이다.

RAID-3

  • RAID-2에서 사용된 검사 디스크들은 오류가 발생한 비트의 위치를 검출하기 위한 것인데, 많은 수의 검사 디스크들을 사용해야 하기 때문에, 낭비가 매우 크다.
  • 이러한 문제를 보완하기 위하여 RAID-3에서는 한 개의 패리티 디스크만 추가한다.
  • 즉, 데이터 디스크들의 동일한 위치에 있는 비트들에 대한 패리티 비트가 패리티 디스크의 동일한 위치에 저장된다.

RAID-3의 조직

  • 네 개의 디스크들과 한 개의 패리티 디스크로 구성된 조직에서 오류가 정정되는 과정을 보면 데이터 디스크에 저장된 비트들을 각각 b1, b2, b3, b4라 하면, 패리티 비트 p는 다음과 같이 계산할 수 있다.

  • 만약 어느 한 디스크에 결함이 발생하면, RAID 제어기가 내부 회로를 이용하여 그 디스크의 번호를 검출한다. 그러면 다른 데이터 디스크들에 저장된 비트들과 패리티 디스크의 비트를 이용하여 결함이 발생한 디스크에 저장되어 있던 비트를 복구할 수 있다.

ex) 두 번째 디스크에 결함이 발생했다고 가정하면, 제어기에 의하여 그 디스크의 번호가 확인되면, 그 디스크에 저장된 비트인 b2는 패리티 비트와 다른 비트들 간에 exclusive-OR 연산을 수행함으로써 원래 값을 찾아낼 수 있다.

  • 이 방법을 이용하면 어떤 데이터 디스크에 결함이 발생하더라도 다른 디스크들의 데이터를 이용하여 결함 디스크의 데이터들을 복구할 수 있다. 따라서 결함이 발생한 상태에서도 읽기 동작은 일단 정상적으로 계속될 수 있는 것이다.
  • 그 상태에서 결함 디스크를 새로운 디스크로 대체하고, 위의 방법으로 데이터 비트들을 모두 복구하여 새로운 디스크에 저장하면 다시 정상적인 상태로 되돌아갈 수 있다.
  • RAID-3에서는 데이터가 비트 단위로 분산 저장되기 때문에 읽기 및 쓰기 동작이 수행될 때 배열 내의 모든 데이터 디스크들이 참여하게 된다. 또한 데이터 디스크들로부터 병렬 데이터 전송도 가능하다. 따라서 전체적으로 디스크 액세스 속도가 높아진다. 

RAID-03 문제점

  • 쓰기 동작 때마다 패리티 비트들을 갱신해야 하므로 쓰기 시간이 많이 걸린다. 또한 전체 디스크 배열이 액세스 요구를 한 번에 한 개씩만 처리할 수 있다.

 RAID-4

  • 블록-단위 인터리빙을 이용하여 데이터를 분산 저장한다.
  • 패리티 디스크를 한 개 추가하여 다른 디스크들에 저장된 데이터 블록에 대한 패리티 블록을 저장한다.

ex) 블록 B1, B2, B3, B4에 대한 패리티 블록인 P(1-4)는 다섯 번째 디스크에 저장하고 다른 블록들에 대해서도 같은 방식을 적용한다.

  • RAID-2와 RAID-3에서는 데이터가 비트 단위로 분산 저장되었기 때문에 어떤 데이터를 읽거나 쓰기 위해서는 모든 데이터 디스크들을 동싱에 액세스 해야 한다.
  • 그러나 RAID-4에서는 필요한 데이터 블록이 어느 한 디스크에 모두 저장되어 있기 때문에, 각 액세스 요구가 서로 다른 디스크들에서 독립적으로 처리될 수 있다. 따라서 여러 개의 요구들을 동시에 처리할 수 있게 된다.
  • 그러나 이와 같은 패리티를 사용하는 조직에서는 어떤 블록의 내용을 변경하게 되면 해당 패리티 블록도 그에 따라 갱신되어야 한다.
  • 새로운 패리티 값을 구하기 위해서는 변경되는 블록뿐 아니라 다른 디스크들의 같은 위치에 저장되어 있는 데이터 블록들도 사용해야 한다.

ex) 두 번째 디스크에 저장된 블록 B2가 새로이 쓰여저 B2'로 변경된다고 가정하면 새로운 패리티 블록 P'는 모든 블록들의, 내용에 대하여 exclusive-OR 연산을 수행함으로써 구할 수 있다.

  • 이 계산을 위해서는 B1, B3, B4가 저장된 블록들을 해당 디스크들로부터 읽어와야 하며, 계산된 패리티는 다시 패리티 디스크에 저장해야 한다.
  • 따라서 어느 한 데이터를 스기 위해서는 세 번의 디스크 읽기(B1, B3 및 B4 읽기)와 두 번의 디스크 쓰기(새로운 데이터 및 패리티 쓰기) 동작들이 필요하다. 만약 데이터 디스크들이 8개라면, 7번의 읽기와 두 번의 쓰기가 필요할 것이다.
  • 그렇게 되면 디스크 쓰기 동작에 걸리는 시간이 매우 길어지기 때문에 성능이 현저히 저하된다.
  • 그러한 문제를 해렬하기 위해서는 쓰기 동작에 필요한 디스크 액세스의 횟수를 최소화해야한다.

  • 즉 새로운 패리티는 원래의 패리티와 원래 데이터 및 새로운 데이터 사이에 exclusive-OR 연산을 수행하면 구할 수 있다. 이를 위해서는 원래의 패리티와 원래의 데이터를 읽어오고, 새로운 데이터와 새로운 패리티를 각각 쓰면 된다.
  • 결과적으로, 디스크 쓰기 동작을 위해서는 네 번의 디스크 액세스(두 번의 읽기와 두 번의 쓰기)만 필요하게 되며, 이것은 데이터 디스크들의 수가 몇 개이든 항상 동일하다.
  • 그러나 이 조직에서는 어떤 디스크에든 데이터 블록을 쓸 때마다 패리티 디스크가 반드시 두 번씩 액세스되어야 한다. 따라서 패리티 디스크에 액세스들이 집중되기 때문에 병목 현상이 발생하여 성능이 저하되는 문제가 있다. 이러한 문제를 해결하기 위해 RAID-5가 제안되었다.

RAID-5

  • RAID-5의 기본 설계 개념은 RAID-4와 동일하며, 패리티 블록들을 모든 디스크들에 분산 저장한다는 점만 다르다.
  • 다섯 개의 디스크들이 하나의 그룹을 형성하고 있고, 각 디스크는 블록들을 다섯 개씩 저장하고 있는 예를 보여주고 있다.

RAID-5의 조직

  • RAID-4와는 달리 B1, B2, B3, B4에 대한 패리티 블록인 P(1-4)는 다섯 번째 디스크에 저장하고, B5, B6, B7, B8에 대한 패리티 블록인 P(5-8)은 네 번째 디스크, 그리고 나머지 패리티 블록들도 같은 방법으로 서로 다른 디스크에 저장하고 있다. 만약 디스크들에 더 많은 블록들이 저장된다면 그 다음의 패리티 블록인 P(21-24)는 다시 다섯 번째 디스크에 저장하는 라운드-로빈 방식을 적용한다.
  • 이와 같은 분산 저장 방식을 상요하면, 패리티 갱신을 위한 디스크 액세스들이 분산되어 패리티 디스크에 대한 병목 현상이 완화될 뿐 아니라, 쓰기 동작들을 병렬로 수행할 수도 있게 된다.

ex)블록 B1에 대한 쓰기 동작이 수행될 때는 첫 번째 디스크와 (패리티 갱신을 위하여) 다섯 번째 디스크가 액세스 된다.

그 쓰기 동작과 동시에 B7에 대한 쓰기 동작도 요구되엇다면, 그 블록에 대한 패리티 블록은 네 번째 디스크에 저장되어 있으므로 세 번째 디스크와 네 번째 디스크를 액세스하여 쓰기 동작을 수행할 수 있다. 따라서 데이터 블록 B1과 B7에 대한 쓰기 동작들이 동시에 이루어질 수 있게 되는 것이다. 

  • 결과적으로 데이터 디스크들의 수가 G개라면, 최대(G+1)/2번의 쓰기 동작들이 동시에 수행될 수 있다. 그리고 패리티 정보가 분산 저장되어 있으므로, 액세스 요구들이 모든 디스크들에 적절히 분배된다.
  • 따라서 이 구조는 액세스할 데이터 클록의 크기 및 입출력 요구의 패턴에 관계없이 좋은 성능을 보여준다.

입출력 요구의 블록 크기에 관계 없이 좋은 성능을 가지는 조직은 RAID-1과 RAID-5이다.

  • 이 두 조직의 성능 특성을 동일한 수의 디스크들에 대하여 비교한 결과
  • 디스크 미러링을 이용한 RAID-1의 조직에서도 읽기 동작의 속도는 두 배가 되므로 RAID-5와 유사한 성능을 보여준다. 그러나 RAID-1에서는 쓰기 동작이 두 개의 디스크에 동시에 이루어지기 때문에 다른 데이터를 동시에 쓰는 것은 불가능해져, 쓰기 성능은 절반으로 줄어든다.
  • RAID-5에서 순차적인 여러 블록들을 동시에 쓰는 큰 쓰기(large write)의 경우에는 별 문제가 없지만, 어느 한 블록만 쓰는 작은 쓰기(small write)의 경우에는 매 쓰기 동작 때마다 네 번의 액세스가 요구되기 때문에 성능이 현저히 떨어진다.  ->이것을 작은 쓰기 문제라 부른다.

작은 쓰기 문제(small write problem)

  • RAID-5에서 한 블록을 디스크에 쓰는(갱신하는) 경우에 네 번의 디스크 액세스가 필요하게 되는 문제점
  • 이에 대한 보완 방법이 연구되고 있다.

비교 결과 정리

  • 읽기 및 작은 쓰기가 많은 환경에서는 RAID-1이 더 높은 성능을 보여준다.
  • 용량과 비용을 중요시 하는 응용이나 큰 쓰기 요구가 많을 경우 RAID-5가 더 높은 성능을 보이며, 특히 가격 대 성능비 측면에서 RAID-5가 더 우수하다.

Reference

컴퓨터 구조론 개정 5판

https://velog.io/@chocaprio/06%EC%9E%A5-%EB%B3%B4%EC%A1%B0%EC%A0%80%EC%9E%A5%EC%9E%A5%EC%B9%98

 

06장 보조저장장치

6.1 하드 디스크 하드디스크 : 자화될 수 있는 물질로 코팅된 플라스틱이나 금속을 이용한 원형 평판으로 만들어지는데, 그 평판 위에 헤드라고 불리는 전도성 코일을 통하여 표면을 자화시킴으

velog.io