본문 바로가기

리눅스/이론

[리눅스] Raid 정리

참고 : http://capple.tistory.com/109

1. RAID
- 여러개의 하드 디스크에 데이터를 나눠서 저장
- 파티션은 하나의 디스크를 여러 개의 디스크를 사용하듯이
- RAID는 여러 개의 디스크를 마치 하나의 디스크처럼 사용
- 0~6 레벨
- 스트라이핑(분산), 미러링(중복), 패리티(무결성)

2. RAID - Striping(분산)
- 데이터를 여러 개의 디스크에 분산하여 저장
  (하나의 디스크에 저장할 수 없는 데이터를 여러 개의 디스크에 분산시키는 것으로 큰 용량을 구성 목적)
ⓐ 묶음 - 스팬(span)
- 하나의 디스크가 꽉차면 다른 디스크에 이어서 데이터를 기록하는 방식
- 분산이 아닌 여러개의 디스크를 단순히 하나의 공간으로 묶음
ⓑ 분산 - Stripe
- 데이터를 쪼개서 여러개의 드라이브에 나누어 동시에 기록하는 방식
- 여러 개의 디스크를 하나의 공간으로 묶는 것 외에 여러개의 디스크에 동시에 데이터를 기록하기 때문에
  디스크를 하나만 사용할 때보다 높은 성능을 가진다. 이는 하나의 디스크에 데이터를 쓰는 동시에 다른 디스크에도
  데이터를 쓰기 때문에 빠른 처리가 가능. 읽기 또한 나누어진 데이터를 동시에 읽어오기때문에 빠르다.
- 단점: 디스크에 나누어 저장하기 때문에 하나의 디스크에 장애가 발생하면 모든 디스크의 데이터가 쓸모 없어진다.
          (- 그래서 미러링과 패리티가 존재)

3. RAID - Mirroring(중복)
- 하나의 데이터를 두 개의 디스크에 중복하여 저장
- 데이터의 안정성 극대화
- 단점: 용량의 낭비

4. RAID - Parity(무결성)
- 데이터의 무결성을 확인하는 오류 체크 기술
- 데이터에 장애가 발생하면 저장된 패리티를 통해 데이터를 복구 할 수 있다
- 데이터와 해당 데이터에 대한 패리티가 함께 저장되어 디스크 장애로 인해 데이터를 잃어버린경우 
  패리티를 통해 데이터 복구
- 스트라이핑과 함계 사용되며 패리티의 저장 방식에 따라 여러가지 레벨로 나누어짐.
- 패리티 생성 및 패리티를 이용한 복구는 XOR 연산이 필요하기 때문에 성능 저하가 일어남




표준 레이드 레벨(Standard RAID Levels)


표준 레이드 레벨은 최초에 구상된 5 개의 레벨과(RAID 0, 1, 2, 3, 4, 5) 이후 추가된 RAID 6 를 의미합니다. 이 중 솔직히 레이드 2, 3, 4 는 현재는 안 쓰이고 있다고 생각하시길 바랍니다. 그냥 참고용으로만 알아두시면 좋습니다.

※ 표의 구성은 위키피디아 RAID 자료에 포함된 표의 구성을 따랐으나 설명은 표의 원문을 번역한 것이 아닌 위키피디아 Standard RAID levels 자료의 내용을 제가 나름대로 쉽게 요약하여 재작성한 것을 기재한 것 입니다. 참고하세요.

※ 공간 효율성은 전체 디스크 크기의 합을 1 로 놓았을 때를 기준으로 합니다. 이 때 전체 디스크 크기의 합은 n * min(Disk 1, Disk 2, Disk 3...)[디스크 수 * 디스크 중 가장 작은 디스크 크기] 입니다.

※ 일부 항목은 원문으로 기재되어 있습니다.[번역하기 난해해서... I am a boy. You ar a girl 수준의 영어 실력이라;;]

 
레벨 설명 최소
필요
디스크
공간
효율성
장애
허용
이미지
RAID 0 블록 레벨 스트라이핑. 패리티, 미러링 없음.

패리티를 포함하지 않는 블록 레벨 스트라이프 구성입니다. 패리티를 포함하지 않기 때문에 실제로 사용 가능한 용량은 전체 디스크 용량의 합을 그대로 사용합니다. 레벨의 구성에 최소 두 개의 디스크가 필요합니다.

데이터를 여러 디스크에 동시에 분산하여 저장하고 읽기 때문에 단일 디스크 구성보다 더 높은 성능을 낼 수 있습니다. 이 때 데이터를 적절히 분산하고 합치기 위한 연산이 필요하기 때문에 디스크의 수 만큼 성능이 배로 상승하지는 않습니다.

패리티를 포함하지 않고 미러링이 구성되지 않기 때문에 디스크의 장애에 굉장히 취약합니다. 장애를 허용하지 않기 때문에 하나의 디스크에 문제가 발생하게 되면 전체 디스크의 데이터가 유실됩니다.

이러한 특성으로 디스크의 개수가 늘어날수록 성능은 상승하지만 안정성은 하락합니다. 그리하여 고성능을 요구하는 워크스테이션이나 하이엔드 데스크탑 등에서 주로 사용되며 안정성을 최우선으로 하는 서버에서는 거의 사용되지 않습니다.

2 1 0
(none)
RAID 1 미러링. 패리티, 스트라이핑 없음.

패리티를 포함하지 않는 미러링 구성입니다. 동일한 데이터를 두 개의 디스크에 동시에 저장하기 때문에 실제로 사용 가능한 용량은 전체 디스크 용량을 합한 것의 절반 밖에 되지 않습니다. 레벨의 구성에 두 개의 디스크가 필요합니다.

미러링은 두 개의 디스크로만 구성할 수 있습니다.[표준 레벨 기준] 간단하게 하나의 디스크와 동일한 복사본 디스크를 생성하는 방식이라고 생각하시면 됩니다.

하나의 데이터를 두 개의 디스크에 동시에 저장하기 때문에 하나의 디스크에 장애가 발생해도 다른 디스크에 데이터가 온전히 남아있어 높은 안정성을 가집니다. 하지만 그만큼 용량의 낭비가 큽니다.

이러한 특성으로 성능상의 이점은 없지만 안정성은 우수하여 중소규모의 회사에서 중요한 데이터를 저장하는 용도로 주로 사용됩니다.

2 1/n n-1 disks
RAID 2 비트 레벨 스트라이핑. 전용의 해밍 코드 디스크를 통해 구성.

헤밍 코드 에러 수정 방식을 사용하는 스트라이프 구성입니다.

최초에 레이드 레벨이 구상되었던 시기 이후 곧 모든 하드 디스크들이 동일한 해밍 코드 에러 수정 방식을 사용하여 자체적으로 에러를 수정할 수 있게 됨으로써 레벨 2 의 에러 수정은 중복이 되어 필요 없게 되었습니다. 그리하여 광속으로 사라졌으며 현재는 사용되지 않습니다.

3 1 - 1/n ⋅ log2(n-1) 1 disk when the fact that the disk is corrupt isn't found by any thing but the hamming

-recover-record-code.

RAID 3 바이트 레벨 스트라이핑. 전용의 패리티 디스크를 통해 구성.

바이트 레벨에서 패리티의 생성이 이루어지는 스트라이프 구성입니다. 이 때 패리티는 따로 전용의 패리티 저장용 디스크에 저장됩니다. 패리티를 저장할 디스크가 필요하기 때문에 레벨의 구성에 최소 세 개의 디스크가 필요합니다.

패리티를 포함하고 있기 때문에 사용 가능한 용량은 전체 디스크 용량의 합에서 패리티 전용 디스크의 용량을 뺀 만큼만 사용 가능합니다.

스트라이핑이기 때문에 성능의 향상이 있을 듯 하지만 그보다 더 큰 데이터의 분산에 이어 패리티를 생성하기 위한 XOR 연산이 추가로 필요하여 그만큼의 성능의 하락이 있습니다. 만약 이러한 XOR 연산이 제대로 이루어지지 않고 지연된다면 성능의 하락이 굉장히 크기 때문에 레이드 컨트롤러는 전용의 XOR 연산 프로세서와 캐시 버퍼를 포함하게 됩니다. 소프트웨어 기반 레이드와 펌웨어 기반 레이드에서는 XOR 연산을 CPU 가 담당하기 때문에 CPU 의 사용률이 그만큼 올라가게 됩니다.[결론은 성능 향상을 위한 레벨은 절대 아닙니다.]

패리티를 가지고 있기 때문에 하나의 디스크에 장애가 발생하더라도 패리티 연산(XOR 연산)을 통해 데이터를 읽거나 복구할 수 있습니다. 그러나 두 개의 디스크에 동시에 장애가 발생하거나 패리티를 저장한 디스크에 장애가 발생한 경우에는 데이터를 유실하게 됩니다.

현재는 레벨 2 와 마찬가지로 사용되지 않습니다.(바이트 차원에서 패리티를 관리할 필요가 없기 때문에)

3 1 - 1/n 1 disk
RAID 4 블록 레벨 스트라이핑. 전용의 패리티 디스크를 통해 구성.

블록 레벨에서 패리티의 생성이 이루어지는 스트라이프 구성입니다. 이 때 패리티는 따로 전용의 패리티 저장용 디스크에 저장됩니다. 패리티를 저장할 디스크가 필요하기 때문에 레벨의 구성에 최소 세 개의 디스크가 필요합니다.

특성은 레벨 3 과 동일하며 단지 바이트 레벨이 아닌 블록 레벨에서 패리티의 저장과 체크가 이루어진다는 것이 다릅니다. 이로 인해 레벨 3 에 비해 읽기 속도는 높지만 쓰기 속도는 떨어집니다.[컨트롤러가 데이터의 완전한 블록을 보내는데 더 오래 걸리기 때문]

패리티를 가지고 있기 때문에 하나의 디스크에 장애가 발생하더라도 패리티 연산(XOR 연산)을 통해 데이터를 읽거나 복구할 수 있습니다. 그러나 두 개의 디스크에 동시에 장애가 발생하거나 패리티를 저장한 디스크에 장애가 발생한 경우에는 데이터를 유실하게 됩니다.

마찬가지로 현재는 레벨 5 에 밀려 사용되지 않습니다.

3 1 - 1/n 1 disk
RAID 5 블록 레벨 스트라이핑. 하나의 분산 패리티를 통해 구성.

블록 레벨에서 패리티의 생성이 이루어지는 스트라이프 구성입니다. 이 때 패리티는 모든 디스크에 분산되어 저장됩니다. 패리티를 저장할 공간이 필요하기 때문에 레벨의 구성에 최소 세 개의 디스크가 필요합니다.

패리티를 포함하고 있기 때문에 사용 가능한 용량은 전체 디스크 용량의 합에서 패리티 공간의 용량을 뺀 만큼만 사용 가능합니다.(전체 디스크 수 - 1)

특성은 레벨 4 와 동일하며 다만 패리티가 모든 디스크에 분산되어 저장되는 것이 다릅니다.

패리티를 가지고 있기 때문에 하나의 디스크에 장애가 발생하더라도 패리티 연산(XOR 연산)을 통해 데이터를 읽거나 복구할 수 있습니다. 그러나 두 개의 디스크에 동시에 장애가 발생한 경우에는 데이터를 유실하게 됩니다.

표준 레벨 중 비용적인 측면과 안정성을 조화롭게 갖춘 방식이기 때문에 회사나 서버의 데이터를 저장하기 위한 방식으로 널리 사용되는 방식입니다.

3 1 - 1/n 1 disk
RAID 6 블록 레벨 스트라이핑. 이중의 분산 패리티를 통해 구성.

블록 레벨에서 이중으로 패리티의 생성이 이루어지는 스트라이프 구성입니다. 이 때 이중의 패리티는 모든 디스크에 분산되어 저장됩니다. 이중의 패리티를 저장할 공간이 필요하기 때문에 레벨의 구성에 최소 네 개의 디스크가 필요합니다.

이중의 패리티를 포함하고 있기 때문에 사용 가능한 용량은 전체 디스크 용량의 합에서 이중의 패리티 공간의 용량을 뺀 만큼만 사용 가능합니다.(전체 디스크 수 - 2)

레벨 5 를 개선한 것으로 특성은 레벨 5 와 거의 동일합니다. 다만 이중으로 패리티를 구성하기 때문에 그만큼 패리티의 연산 과정이 더욱 복잡하고 그로 인해 레벨 5 에 비해 성능이 떨어집니다. 그러나 이중 패리티를 통해 두 개의 디스크에서 동시에 장애가 발생하더라도 데이터를 복구할 수 있으므로 레벨 5 에 비해 안정성은 더욱 좋습니다. 세 개의 디스크에서 동시에 장애가 발생한 경우에는 데이터를 유실하게 됩니다.

레벨 6 은 레벨 5 의 확장판으로 디스크의 구성 개수가 많아 디스크의 장애가 동시에 발생할 수 있는 가능성이 높은 환경에서 주로 사용됩니다.

4 1 - 2/n 2 disks




1. 동적디스크
- 여러 개의 디스크를 스팬하는 볼륨을 만드는 기능이나 내결함성이 있는 볼륨을 만드는 기능을 가짐