Linux

RAID?

덩덩 2020. 3. 18. 14:47

여러분은 여러분의 디스크가 고장나지 않을거라 확신하시나요?

하드웨어적인 고장이 발생하지 않을거라고는 누구도 장담할 없습니다.

그러면 기업에서 서버 운영을 하는 데에 있어서 이러한 디스크 고장에 대비하기 위해서는 어떻게 해야 할까요?

당연히 백업을 열심히 놔야 겠죠? 하지만 백업은 복구하는 데에 시간이 어느 정도 소요되기 때문에 복구 시간 동안의 영업 손실은 피할 없습니다. 그러면 이러한 복구시간을 없애기 위한 방법에는 어떤 것이 있을까요?

 

바로 포스팅의 제목인 RAID 있습니다.

RAID Redundant Array of Independent Disk 약어로, 여러 개의 디스크에 데이터를 분할해서 저장하는 방식을 의미합니다. 이로써 디스크 고장에 의한 위험을 감소시키는 것이지요.

 

이러한 RAID 방식에는 여러 가지가 있습니다. 이제부터 RAID 구성하는 방식들에 대해 간략히 알아보도록 하겠습니다. 각각의 방식을 "RAID Level " 이라고 부르기도 하고, "RAID 으로 구성했다" 라고 하기도 합니다.

 

(1) RAID 0 (Striping, 스트라이핑)

여러 개의 디스크에 데이터를 분할해서 저장하는 방식입니다. 이를 스트라이핑이라고 합니다.

아래 그림은 디스크 2개를 RAID-0 방식으로 구성하였을 , 데이터가 어떻게 저장되는지에 대한 예시입니다.

Disk1 Disk2 순서대로 데이터가 나뉘어서 저장되고 있습니다.

이렇게 되면 데이터를 읽어 들일 , 개에서 나뉘어서 가져올 있어서 처리속도가 빨라집니다.

대신에 디스크가 하나라도 고장 나면 시스템을 사용할 없게 되겠지요?

 

(2) RAID 1 (Mirroring, 미러링)

디스크 2개에 동일한 데이터를 저장하는 방식입니다. 이를 미러링이라고 합니다.

아래 그림을 볼까요? 개의 디스크가 동일한 데이터를 저장하고 있죠?

이때문에 하나의 디스크가 고장 나더라도 다른 쪽의 데이터를 사용할 있기 때문에 안정성이 향상됩니다.

또한 쪽에서 동시에 데이터를 읽을 있어서 읽기 성능이 디스크가 하나일 때보다 빠릅니다.

다만, 쓰기 성능은 디스크 하나일 때와 동일합니다.

그리고 가장 단점으로는 디스크의 낭비가 심하다는 것입니다.

 

(3) RAID 5

가장 보편적으로 사용하는 방식입니다.

최소 3개의 디스크가 필요하며, 디스크 하나에다가 패리티 정보를 저장해서, 하나의 디스크에 고장이 발생하더라도 패리티 정보를 이용해서 데이터를 복구할 있는 방식입니다.

아래 그림을 보시면 블록마다 패리티가 저장되어 있지요?

구성의 장점은 읽기, 쓰기 성능을 향상시킬 있고, 저장 공간을 효율적으로 사용할 있다는 점입니다.

디스크의 개수가 늘어날 수록 공간 활용도는 높아집니다. (패리티는 하나만 필요하기 때문이지요)

 

다만, 가지 알아두서야 점이 있습니다.

디스크가 하나 고장나게 되더라도 패리티 정보를 통해 데이터를 복구할 있다고 말씀드렸는데요. 말인 , 아래 그림을 예로 들면, Disk 0 없더라도 시스템이 동작할 있다는 것입니다. 그런데, 패리티로 데이터를 복구하는 것에 계산이 필요하기 때문에 시스템 성능이 많이 느려집니다. 안그래도 느린 디스크가 느려지는 것이니까요.

때문에 Disk 중에 하나가 고장 나면 얼른 다른 디스크를 가져와서 꽂고 패리티 정보를 통해 디스크 내용을 복구시켜야 합니다.

 

(4) RAID 01(0+1) / RAID 10(1+0)

RAID 01 RAID 10 RAID 0 RAID 1 결합한 방식입니다.

다만 차이점은 RAID 0 RAID 1 중에 어떤 것으로 먼저 디스크들을 묶었는지에 따라 달라집니다.

 

먼저 RAID 01 디스크들을 RAID 0으로 그룹으로 묶고, 그룹을 다시 RAID 1 묶은 것입니다.

반대로 RAID 10 디스크들을 RAID 1 먼저 묶고, 다시 RAID 0으로 묶은 것입니다.

언뜻 보기에는 중에 아무거나 선택해도 똑같을 거라 생각할 있지만, 여러 가지 가능성을 고려해 보았을 RAID 10 사용합니다. (가끔씩 디스크 구성에 대해 이야기 하다보면, "RAID 01 구성할거다" 라고 말하는 분들이 있는데 99% RAID 10 이야기하고 싶어하시는 분들이었습니다.)

이유는 디스크가 고장날 확률과, 고장 났을 복구 시나리오에서 RAID 10 유리하기 때문입니다.

DB 서버의 경우, 안정성을 위해서 RAID 5 대신에 RAID 10 사용하는 경우도 있습니다. 똑같이 4개의 디스크가 있다고 가정할 , RAID 10 2개의 디스크가 고장 나더라도 동작이 가능하니까요. (물론 RAID 1 묶인 디스크가 동시에 고장나지 않는 말입니다.)

 

(5) 기타 RAID 방식

이외에도 RAID 2, RAID 3, RAID 4, RAID 6, RAID 7, RAID 50, RAID 60, RAID 100, RAID 53 등이 존재하지만 많이 사용하지 않기 때문에 별도 설명하진 않겠습니다.

저런 것들 알아봐야 괜히 헷갈리기만 하고 좋더라구요.

 

 

참고자료:

https://blog.naver.com/sunchan683/221457964146

https://ko.wikipedia.org/wiki/RAID

https://searchstorage.techtarget.com/definition/RAID-0-disk-striping

https://searchstorage.techtarget.com/definition/RAID-5-redundant-array-of-independent-disks

https://en.wikipedia.org/wiki/Nested_RAID_levels