본문 바로가기

23년 1학기 학교공부/운영체제및실습

[OS] RAID

목차

    728x90
    반응형
    SMALL

    RAID

    RAID는 Redundant Array of Inexpensive(Independent) Disks의 앞글자를 딴 것으로, 저렴한 가격에 디스크를 여러개 사용하여 용량이 크고 품질이 우수한 디스크 하나를 갖고 있는 것과 같은 효과를 내는 디스크의 구성방법이다.

    디스크가 각각 독립적으로 동작을 한다는 의미에서 Independent 단어를 쓰기도 한다.


    개인용 컴퓨터에는 비교적 싼 디스크를 사용하는 것이 일반적이다.
    그러다보니 용량도 적고, 하드웨어의 신뢰성도 떨어진다.
    일반적으로 높은 품질을 요구하는 용량이 큰 디스크는 개인보다는 기업이나 공공기관에서 공공 데이터를 저장하는데 이용된다.
    그래서 저장장치가 고장이 나는 등의 문제가 발생하면 큰 문제가 되기 때문에, 수명도 오래 가고 고장도 잘 나지 않는 신뢰성이 높은 디스크가 필요하다.

    하지만 이런 성능 좋은 디스크를 만들기 위해서는 모터나 헤드와 같은 부품을 아주 좋은 부품으로 사용해야하기 때문에 가격이 비싸지는 것이 일반적이다.

    RAID가 처음 나온 시기에는 디스크의 가격이 용량에 비례하지 않고 보다 더 기하급수적으로 증가했다.
    예를 들어 디스크 a보다 디스크 b의 용량이 10배 크면 가격은 20, 30배 더 비싸졌다.

    그래서 컴퓨터 시스템 가격에 디스크 저장 공간의 가격이 큰 부분을 차지했다.

    하지만 현대에 개인용 pc가 상용화되고 pc에 장착할 저렴한 디스크들이 많이 만들어지고 판매되기 시작했다.
    상대적으로 싼 디스크를 여러개 사용해서 용량이 크면서 품질이 좋은, 안전성, 신뢰성이 높은 디스크를 만들고자 하는 필요성에서 여러 종류의 RAID 구성이 나온 것이다.


    이 과정에서 저용량 디스크를 조합하는 방식을 기준으로 나뉘는 여러가지 종류의 RAID에 고유 번호를 붙였다.

     

     

    RAID 0

    위 그림은 RAID 0 구조를 가진 사례로서, 디스크 4개를 사용하였다고 가정하자.

    디스크는 strip이라고 불리는 정보 단위로 저장을 하고 있다.
    이렇게 연속되는 strip들은 하나의 디스크에 저장되는것이 아니라, 여러개의 디스크에 서로 분산되어 저장된다.

    여기서 strip은 일반적인 저장 단위를 말하는 것으로, 운영체제에서 다루는 블록이라고 생각해도 무방하다. 즉 파일을 저장한다고 했을 때, 파일을 저장한 여러개의 블록을 여러 디스크에 분산시켜 저장하는 것이다.

    이런식으로 구성하게되면, 먼저 용량면에서는 디스크를 4개 사용하였으므로 한개를 사용한 것 보다는 용량이 4배 커진다.
    또한 신뢰성 면에서도 좋다. 만약 디스크 하나가 고장났다고 가정하면 파일을 통째로 잃어버리는 것이 아니라, 각 파일 내용의 1/(디스크 하나 안에 strip수) 만큼, 위 그림에서는 1/4만큼만 없어지기 때문이다.
    RAID 0이 아닌 전통적인 방법으로 단순히 디스크 4개를 사용한다고 가정하자. 그러면 만약에 디스크 하나가 고장나면 해당 내용을 통째로 잃어버린다.
    하지만 RAID 0에서는 strip 하나만 잃어버리므로 나머지 strip을 보고 내용을 일부 복원할 수도 있다.
    즉 통째로 잃어버리는 것보다는 안정적이다.
    하지만 신뢰성이 엄청 크게 향상되는 것은 아니다.

     

     

    RAID 1

    RAID 1번은 RAID 0번이 두 개 복사되어있는 것이다.
    위 예시와 똑같이 어느 하나 디스크가 고장난다고 가정하자. 하지만 똑같은 내용이 하나 더 복사되어 있기 때문에, 고장난 디스크를 새 디스크로 교체하고 그 내용을 새 디스크에 복사하면 되기 때문에 복구가 가능하다.
    때문에 RAID 0보다는 신뢰성이 좋아진다.
    하지만 같은 용량을 저장하기 위해서 두배의 디스크 용량이 필요하므로 가격이 비싸지는 단점이 있다.

     

     

    RAID 2

    위 RAID 1번에서 디스크의 개수를 줄여보려는 목적에서 나온 방법이다.
    심화임

     

     

    🔎 Bit-interleaved Parity방법은 정보를 구성하는 바이트들, 이 비트들을 여러 디스크에 흩어져 저장하는 방법이다.

    예를 들어 1, 0, 1, 1을 저장하고자 할 때,
    전통적인 저장 방법에서는 한 디스크의 특정 섹터에 연이어서 1, 0, 1, 1을 같이 저장한다.
    하지만 bit-interleaved parity 방법은 1, 0, 1, 1이 특정 섹터에 연이어진 위치에 저장되는 것이 아니라, 서로 다른 디스크의 같은 위치에 저장하는 것이다.
    즉 나중에 이 1, 0, 1, 1이라는 값을 읽으려면 이 디스크 5개를 모두 동시에 접근해서 같은 섹터의 같은 위치에 있는 비트들을 전부 읽고 조합하면 1, 0, 1, 1이 되는 것이고, 이에 대해 parity를 계산해서 parity 디스크에 저장된 값과 같은지 다른지를 비교하여 올바른 값인지 확인하는 방법이다.

     

     

    RAID 3

    bit-interleaved parity 방법을 사용한다.
    위 그림에서 b0, b1, b2, b3인 한 바이트를 구성하는 이 네개의 비트를 서로 다른 디스크에 넣고 parity를 계산한 것이다.
    RAID 2는 parity 저장 시에 디스크 세개가 필요했지만, 하나만 사용하자는 방법이다.
    bit-interleaved parity 방법을 사용하여 읽을때도 parity와 비교하여 읽고,
    만약 데이터가 깨졌다면 기존의 parity를 보고 복구를 할 수 있다.
    또 만약 디스크 중 하나가 깨졌다면, 새 디스크로 교체하고 나머지 디스크의 값들과 각각의 parity를 보고 내용 복원이 가능하다.
    즉 비트 하나에서 에러가 생기되, 해당 비트가 어떤 디스크에 있었는지를 알면 내용 복구가 가능하다.
    하지만 어떤 디스크가 고장났는지 모르는 경우에는 한계가 있다.

    접근 성능은 RAID 2보다 우수하다. parity 한개만 계산하면 되므로 시간이 단축되기 때문이다.
    RAID 0도 그렇고, 블록을 서로 다른 디스크에 흩어놓으므로, 4개의 블록을 순차적으로 읽는 것이 아니라 각각 다른 디스크에서 서로 다른 4개의 블록을 읽으니까 시간이 조금 빨라진다. 하지만 디스크 다섯개를 다 읽어야 결과가 나오기 때문에 성능이 크게 빨라지진 않는다.

     

     

     

    RAID 4

    bit-interleaved parity 방법을 사용하지 않는다.
    그냥 1, 0, 1, 1을 모두 한 디스크에 모아 저장하고, parity를 계산하여 저장한다.
    이때 parity는 bit-interleaved parity방법처럼 네 개의 디스크에서 똑같은 위치의 비트를 대상으로 parity를 계산한다. 하지만 RAID 3과의 차이점은, 각각 같은 자리에 있는 네 개의 비트가 하나의 바이트에서 나온 비트가 아닌 서로 상관 없는 정보들이지만 물리적으로만 같은 위치에 있다는 점이다.
    이렇게되면 RAID 3의 단점이 네 개의 비트를 서로 다른 디스크에서 읽어오는 시간을 기다리는 것이었는데, 그럴 필요 없이 하나의 디스크에서 모든 비트를 읽으면 되므로 파일 전체를 읽는데 시간이 훨씬 빨라진다.
    그리고 결국에는 각 디스크마다 별도의 입출력이 parallel하게 가능해진다.

     

     

    RAID 5

    RAID 4와 같은데, parity 값을 모은 블록을 하나의 디스크에 놓는 것이 아니라 여러 디스크에 흩어놓는다.
    parity 정보를 하나의 디스크에 모아두면 parity 디스크가 깨졌을 때 전체에 영향을 주는데, RAID 5처럼 분산시켜놓으면 정보를 한꺼번에 잃어버리는 위험을 피할 수 있다는 장점이 있다.

     

     

    RAID 6

    RAID 5와 같이 parity 값을 흩어놓는데, 추가로 신뢰성을 높이기 위해서 같은 정보에 대해 parity를 두 번 계산해서 서로 다른 디스크에 흩어놓는다.
    parity가 두 번 저장되고, 이것이 여러 디스크에 분산되므로 데이터의 안정성이 더 좋아진다.

     

     

     

    RAID 01, 10

    요즘 많이 사용되고 있는 방법으로 RAID 0과 1을 조합한 RAID 01, 10 방법이 있다.

    먼저 RAID 01은 RAID 0 두개를 RAID 1 방식으로 조합하는 것이다.
    따라서 블록 a1와 a2를 가진 파일이 있다고 가정하면, 오른쪽 그림처럼 디스크 1, 2에 a1과 a2를 저장하고, 이를 디스크 3, 4에 복사하는 방법이다.
    RAID 10은 RAID 1 두개를 RAID 0 방식으로 조합하는 것이다.
    a1를 디스크 1, a2를 디스크 3에 저장하고 이를 먼저 RAID 1 방식으로 디스크 2, 4에 복사한 후 RAID 0 방식으로 묶는 방법이다.

    RAID 10이 RAID 01보다 더 빨리 접근이 가능하여 성능이 약간 더 좋다.

    728x90
    반응형
    LIST