RAID

COZYHAMA·2024년 4월 17일
0

Operating System

목록 보기
3/5
post-thumbnail

RAID

RAID는 두 가지의 약자를 가지고 있다. 첫 번째는, Redundant Array of Independent Disk이고 두 번째는 Redundant Arrays of Inexpensive Disks이다. 각각을 직역하면 독립된 디스크의 복수 배열 또는, 저렴한 디스크의 복수 배열이다. 즉, 개별 디스크드라이브를 묶어서 고가의 대용량 고성능 디스크 드라이브의 성능과 기술을 구현하기 위해 만들어진 기술이다.

RAID 사용 시 기대 효과

RAID를 사용하였을 때 얻는 기대효과는 첫째, 대용량의 단일 볼륨을 사용하는 효과이다. RAID는 여러 디스크를 하나처럼 사용하여, 하나의 큰 저장공간을 제공한다. 추후 Standard RAID Level에 대해 언급할 예정이며, 이 효과는 특히, RAID 0에서 볼 수 있는 효과이다. 둘째, 디스크 I/O 병렬화로 인한 성능 향상 기대효과이다. RAID 0, RAID 5, RAID 6과 같은 구성에서는, 여러 디스크에 데이터를 분산시켜 동시에 읽고 쓰기 작업을 수행한다. 이로써 I/O 성능이 향상된다. 셋째, 데이터 중복성과 고장 허용성이다. RAID 1, RAID 5, RAID 6, RAID 10 등은 각각 다른 방식으로 데이터 중복성을 제공하여 한 개 이상의 드라이브가 실패해도 시스템이 계속 작동할 수 있게 한다. 넷째, 확장성이다. RAID 시스템은 추가 스토리지 용량이 필요할 때 더 많은 드라이브를 추가하는 것이 비교적 쉽다. 다섯 번째, 가용성이다. 중요한 서버에서는 RAID를 사용하여 하드웨어 결함이 발생해도 시스템을 계속 운영할 수 있게 한다. 일부 RAID 레벨은 핫 스왑을 지원하여, 시스템을 종료하지 않고도 실패한 드라이브를 교체할 수 있게 한다. 여섯 번째, 비용 효율성이다. 특히 대용량의 데이터 스토리지가 필요한 경우, RAID를 사용하면 고성능의 단일 대용량 드라이브보다 적은 비용으로 사용할 수 있다. RAID는 동작 방식에 따라 Level 0에서 6으로 분류한다. 이를 Standard RAID Level이라고 하며, 주로 사용되는 것은 0, 1, 5, 6이다.

Standard RAID

RAID 0

△ RAID 0

RAID 0은 Striping이라고도 불리며, 여러 개의 멤버 하드디스크를 병렬로 배치하여 거대한 하나의 디스크처럼 사용하는 것이다. 데이터 입출력이 각 멤버 디스크에 공평하게 분배되며, 디스크의 수가 n개라면 입출력 속도 및 저장 공간은 이론상 n배가 된다. 하지만, 멤버 디스크 중 하나만 손상 또는 분실되어도 전체 데이터가 파손되며, 오류검출 기능이 없어 멤버 디스크를 늘릴수록 안정성이 떨어지는 문제가 있다.

RAID 1

△ RAID 1

RAID 1은 Mirroring이라고도 불리며, 각 멤버 디스크에 같은 데이터를 중복 기록한다. 멤버 디스크 중 하나만 살아남으면 데이터는 보존되며 복원도 1:1 복사로 매우 간단하기 때문에, 서버에서 끊김없이 지속적으로 서비스를 제공 가능하다. 하지만, 멤버 디스크를 늘리더라도 저장 공간은 증가하지 않으며, 대신 가용성이 크게 증가하게 된다.

RAID 2


△ RAID 2


△ RAID 3


△ RAID 4

RAID 2, 3, 4의 경우 현재 거의 사용하지 않는 RAID Level이다. 이들은 ECC라고 불리는 오류정정부호를 기록하는 전용의 하드디스크를 이용하여 안정성을 확보하는 Level이다. RAID 2는 비트 단위에 Hamming code를 적용하며, RAID 3, 4는 각각 바이트, 워드 단위로 패리티를 저장한다. 하나의 멤버 디스크가 고장나도 ECC를 이용하여 정상적으로 작동할 수 있지만, 추가적인 연산이 필요하여 입출력 속도가 매우 떨어진다. 예를 들면 디스크 1에 2, 디스크 2에 4를 저장하면 디스크 3에는 2+4의 값인 6을 저장한다. 이렇게 저장하면 한 개의 디스크가 사라지더라도 연산을 통해 값을 읽을 수 있기 때문에 저장소 하나가 파손되더라도 데이터를 읽을 수 있는 것이다. 추가적인 용량을 사용하는 단점이 있지만 매우 높은 가용성과 저장용량 효율을 보인다. 하지만 모든 I/O에서 ECC 계산이 필요하므로 입출력 병목 현상이 발생하며, ECC 기록용으로 쓰이는 디스크의 수명이 다른 디스크들에 비해 짧아지는 문제가 생겨 현재는 거의 사용하지 않는다.

RAID 5

△ RAID 5

RAID 4와 비슷한 원리를 가지고 있으나, 패리티를 한 디스크에 밀어 넣지 않고 각 멤버 디스크에 돌아가면서 순환적으로 저장하여 입출력 병목 현상을 해결한다. n개의 디스크를 사용하면 (n-1)배의 저장 공간을 사용할 수 있다. 하지만, 하나의 멤버 디스크 고장에는 견딜 수 있지만 디스크가 두 개 이상 고장 나면 데이터가 모두 손실된다. 또한, 매번 쓰기 작업 때마다 패리티 연산 과정이 추가되어, 성능을 보장하려면 고가의 패리티 연산 전용 프로세서와 메모리를 사용해야하는 것 뿐만 아니라, 멤버 디스크도 최소 3개 이상 사용해야 하므로 초기 구축 비용이 바싸다.

RAID 6

△ RAID 6

RAID 5와 원리는 같으며, 서로 다른 방식의 패리티 2개를 동시에 사용한다. 즉, n개의 디스크를 사용하면 (n-2)개의 저장 공간을 사용할 수 있다. 성능과 용량을 포기하는 대신 가용성을 높인 격이다. 스토리지 서버와 같이 고밀도 스토리지 환경에서 RAID 5는 유지보수가 어려우나, 2개의 디스크가 동시에 나가는 상황이 아니라면 RAID 6은 문제없다. 하지만 컨트롤러가 RAID 5보다 비싸고, 멤버 디스크도 기본 개 이상 확보해야 하므로 RAID 5에 비해 초기 구축 비용이 비싸다.

Nested RAID


△ RAID 0+1


△ RAID 1+0

Standard RAID를 여러개 중첩하여 사용하는 경우도 있는데 이를 Nested RAID 즉, 복합 RAID라고 한다. 예를 들면, RAID 01과 RAID 10이 있다. 2개의 RAID 0을 RAID 1로 묶으면 RAID 01이 되며, 2개의 RAID 1을 RAID 0으로 묶으면 RAID 10이 된다. RAID 01은 Striping된 세트를 Mirroring하기에 구현이 간단하다. 하지만 하나의 Striping 세트의 디스크가 모두 실패하면 데이터가 손실된다. 반면, RAID 10은 Mirroring으로 인해 하나의 디스크가 실패해도 안전하다. 하지만 구현이 복잡하며 상대적으로 높은 비용을 가지고 있다. 일반적으로, RAID 10은 RAID 01에 비해 더 높은 고장 허용성을 제공하며, 더 복잡한 구성이 필요한 대신 유연성과 안정성 면에서 우위를 차지합니다.

느낀점

RAID라는 개념을 처음 접했을 때, 디스크를 연결하여 더욱 큰 용량의 디스크를 비교적 싼 가격에 구비하고 복제를 통한 가용성까지 구현하는 모습이 엄청 참신하다고 느껴졌다. 그뿐만 아니라, 모든 이점에는 그만한 리스크가 있다는 것도 깨달았습니다. 예를 들어, RAID 0과 같은 경우에는 용량을 늘리는 대신 가용성을 포기하였고 반대로 RAID 1과 같은 경우 가용성을 채택한 대신 용량을 포기했다. 가용성과 용량을 모두 신경 쓰는 RAID 5나 6 같은 경우에는 비용을 포기했다. 이를 보고 비용, 가용성, 용량을 모두를 챙길 수 있는 RAID를 한번 만들어보고 싶다는 생각이 들었다. 또한, 이를 내 삶에 적용하여 모든 것을 챙길 수 없기에 최소한의 리스크로 최대한의 결과물을 내는, 이익을 내는 길을 찾는 사람이 되고 싶다는 생각이 들었다.

profile
코딩의 지식으로 하루를 마무리

0개의 댓글

관련 채용 정보