<본 카테고리는 "혼자 공부하는 컴퓨터구조 + 운영체제" 책과 강의를 기반으로 작성하였습니다>
RAID
개요
복수의 물리적 보조기억장치를 마치 하나의 논리적 보조기억장치처럼 사용하는 RAID(Redundant Array of Independent Disks) 방식은 수명이 있는 보조기억장치의 한계를 극복하고자 개발된 기법이다. 이 시스템은 데이터의 안정성 혹은 성능 향상을 중심으로 설계되었다. 이번 시간에는 이러한 RAID 시스템을 적용한 하드디스크에 대해 알아보는 시간을 가지도록 하자.
본문
독립적인 보조기억장치를 하나로 묶는 것이 왜 데이터의 안정성, 그리고 높은 성능과 관련이 있을까? 이는 RAID의 종류(Level)를 알아보면 해답이 된다.
RAID의 종류
RAID 0은 여러 개의 보조기억장치에 데이터를 단순히 나누어 저장하는 구성 방식이다. 주로 성능 향상을 목적으로 사용하는데, 이는 데이터 스트라이핑(Striping) 방법 때문이다. 여기서 스트라입(Stripe)은 분산되어 저장된 데이터를 의미한다.
데이터 스트라이핑은 어떠한 데이터를 저장할 때 여러 개의 물리적 디스크에 균등하게 분산하여 저장한다. 예를 들어, 8KB의 데이터를 Disk 0, 1, 2, 3에 저장한다고 하면 2KB를 각각 4개의 디스크에 분산하여 저장하는 것이다.
위와 같이 디스크에 데이터가 분산되면, 여러 번에 걸쳐 읽고 썼을 데이터를 동시에 읽고 쓸 수 있기 때문에, 저장된 데이터를 읽고 쓰는 입출력 속도가 향상된다. 하지만 데이터의 중복 저장이나 패리티 기능을 제공하지 않기 때문에 저장된 정보가 안전하지 않다. 따라서, RAID 0에 포함된 어떤 하나의 디스크라도 고장 나면 전체 RAID 배열의 데이터가 손실된 위험이 있다.
RAID 1은 데이터 미러링(Mirroring)을 사용해 동일한 데이터의 복사본을 만드는 방식이다. 주로 데이터 복구, 즉, 안정성의 목적이 있을 때 사용하는 방식이다. 이로 인해 어떠한 데이터를 쓸 때 원본과 복사본 두 군데에 쓰므로 쓰기 속도가 RAID 0보다 느리다.
예를 들어, 2TB의 데이터를 네 개의 디스크(각 1TB)에 저장한다고 가정해 보자. Disk0과 Disk1은 한 쌍의 미러를 형성하고, Disk2와 Disk3은 또 다른 쌍의 미러를 형성한다. 그렇다면 Disk0에 1TB의 데이터가 저장되고, 이와 동일한 데이터가 Disk1에도 저장된다. Disk2에 나머지 1TB의 데이터가 저장되고, 이와 동일한 데이터가 Disk3에도 저장된다.
이러한 방식은 복구가 간단하며 높은 가용성을 제공한다. 여기서 안정성이란 용어는 하드디스크의 고장률이 낮다는 것이나 백업용 디스크를 의미하는 것이 아니다. 이 안정성은 물리적인 에러가 발생했을 때, 해당 하드디스크만 교체하면 시스템이 계속 작동할 수 있다는 것을 의미한다. 즉, 시스템의 연속적인 운영 시간이 보장된다는 점에서 안정적이라고 할 수 있다. 또한 하드 디스크 개수가 한정되었을 때 사용 가능한 용량이 적어져 더 많은 디스크를 필요로 하게 되고, 비용이 증가된다는 단점이 있다.
RAID 4 방식은 오류를 검출하고 복구하기 위한 정보인 패리티 비트(Parity Bit)가 포함된 방식이다. 이때 패리티 정보를 별도의 하나의 디스크에 저장하여, 여러 디스크의 데이터를 XOR 연산하여 생성한다. 이로 인해 디스크 중 하나가 고장 나면 패리티와 나머지 디스크의 데이터를 사용하여 손실된 데이터를 복구할 수 있다.
예를 들어 2TB의 데이터를 저장할 때, Disk0,1,2는 각각 데이터를 분산하여 저장한다. 그리고 Disk3에는 앞선 디스크들의 패리티 정보가 저장되어 데이터를 안전하게 보호한다. 이로 인해 RAID 4에서는 패리티를 저장한 장치를 이용해 다른 장치들의 오류를 검출하고, 오류가 있다면 복구한다. 하지만 패리티 디스크 자체가 고장 나면 해당 RAID 배열의 성능이 저하된다는 단점이 있다. 또한 후술할 RAID 5 방식과 비교하여 병목 현상 단점이 부각되기 때문에 잘 사용하지 않는다.
RAID 4 방식은 하나의 디스크에 패리티 정보를 모아놔 어떤 새로운 데이터가 저장될 때마다 패리티를 저장하는 디스크에도 데이터를 쓰게 되므로, 패리티를 저장하는 장치에 병목 현상이 발생한다는 문제가 있다. 여기서 병목 현상(Bottleneck Effect)은 전체 시스템의 성능이나 용량이 하나의 구성 요소로 인해 제한을 받는 현상을 의미한다.
RAID 5 방식은 이러한 병목 현상을 해결하기 위해 패리티 정보를 분산하여 저장하는 방식을 채용했다. 즉, 패리티는 여러 디스크의 데이터를 XOR 연산하여 생성되며, 디스크 중 하나가 고장 나면 패리티와 나머지 디스크의 데이터를 사용하여 손실된 데이터를 복구하는 방식이다.
예를 들어, 위와 같은 데이터를 하드디스크 4개에 나눠 담는다고 하면, 각 데이터를 분산하여 디스크에 저장하듯이 패리티도 이와 같은 형태로 저장한다. 요약하면, RAID 5는 데이터의 안정성과 성능 향상을 동시에 제공하는 패리티 기반의 스트라이핑 방식이라고 할 수 있다.
마지막으로 RAID 6 방식이다. 해당 방식은 RAID 5와 유사하게 패리티 기반의 스트라이핑을 사용하지만, 추가적인 패리티를 제공하여 더 높은 안정성을 목표로 한다. 이는 오류를 검출하고 복구할 수 있는 수단이 두 개가 생긴 셈이지만, 새로운 정보를 저장할 때마다 함께 저장할 패리티가 두 개이므로, 쓰기 속도가 RAID 5보다 느리다.
이 외에도 RAID 0과 1을 혼합한 RAID 10 방식, RAID 0과 5를 혼합한 RAID 50 방식 등 여러 레벨을 혼합한 Nested RAID(중첩된 RAID) 방식도 있다. 각 RAID 레벨마다 장단점이 있으므로, 어떤 상황에서 무엇을 최우선적으로 원하는지에 따라 최적의 레벨이 달라질 수 있다는 점까지 체크해 두자.
요약
RAID
1. 정의: 독립적인 보조기억장치를 하나의 논리적 보조기억장치처럼 사용하는 기술
2. 특징: 어떤 방식을 채택하느냐에 따라 안정성 혹은 속도가 달라짐
3. 종류
속도 안정성 특징 RAID 0 높음 낮음 데이터 스트라이핑 RAID 1 중간 높음 데이터 미러링 RAID 4 읽기: 높음, 쓰기: 낮음 중간 스트라이핑 + 단일 패리티 RAID 5 읽기: 높음, 쓰기: 중간 높음 스트라이핑 + 분산 패리티 RAID 6 읽기: 높음, 쓰기: 낮음 매우 높음 이중 패리티
'CS > 컴퓨터구조' 카테고리의 다른 글
[컴퓨터구조] 보조기억장치(하드, 플래시 메모리) (0) | 2023.07.03 |
---|---|
[컴퓨터구조] 메모리 (0) | 2023.06.22 |
[컴퓨터구조] 캐시 메모리 (0) | 2023.06.21 |
[컴퓨터구조] CPU 설계 기법 (2) (0) | 2023.06.13 |
[컴퓨터구조] CPU 설계 기법 (1) (0) | 2023.06.12 |