1TB 하드 디스크 네 개와 4TB 하드 디스크 한 개를 비교해보자. 1TB 하드 디스크 네 개를 동시에 사용하는 것이 더 나을까? 아니면 4TB 하드 디스크 하나를 사용하는 것이 더 나을까? 1TB 하드 디스크 네 개로 RAID를 구성하면 4TB 하드 디스크 한 개의 성능과 안전성을 능가할 수 있다. 그렇다면 RAID가 무엇이며, 왜 이런 차이가 생기는 것인지 이번 절에서 알아보도록 하자.
우리가 구글, 아마존과 같은 글로벌 IT 기업의 서버를 관리하는 엔지니어라고 생각해보자. 매일 같이 수십, 수백 TB 데이터가 서버로 쏟아지고, 데이터에는 개인 정보, 결재 정보와 같이 절대로 잃어버려서는 안 될 민감한 정보도 포함되어 있다.
이런 정보를 어떻게 안전하게 관리할 것인가? 앞선 절에서 ‘보조기억장치에도 수명이 있다’는 사실을 배웠다. 그래서 ‘하드 디스크와 같은 보조기억장치에 어떻게든 저장만 하면 된다’와 같은 단순한 답변은 다소 부족한 해법일 수 있다.
이럴 때 사용할 수 있는 방법 중 하나가 RAID이다. RAID(Redundant Array of Independent Disks)는 주로 하드 디스크와 SSD를 사용하는 기술로, 데이터의 안전성 혹은 높은 성능을 위해 여러 개의 물리적 보조기억장치를 마치 하나의 논리적 보조기억장치처럼 사용하는 기술을 의미한다.
여러 개의 하드 디스크나 SSD를 마치 하나의 장치처럼 사용하는 RAID를 구성하는 방법은 여러 가지가 있다. RAID 구성 방법을 RAID 레벨이라 표현하는데, RAID 레벨에는 대표적으로 RAID 0, RAID 1, RAID 2, RAID 3, RAID 4, RAID 5, RAID 6이 있고, 그로부터 파생된 RAID 1, RAID 50 등이 있다. 이들 중 가장 대중적인 RAID 0, RAID 1, RAID 4, RAID 5, RAID 6에 대해 알아보자. (참고로 RAID 2, 3은 현재 잘 활용되지 않는다.)
RAID 0은 여러 개의 보조기억장치에 데이터를 단순히 나누어 저장하는 구성 방식이다. 가령 1TB 하드 디스크 네 개로 RAID 0을 구성했다고 가정해보자.
이제 어떠한 데이터를 저장할 때 각 하드 디스크는 아래와 같이 번갈아 가며 데이터를 저장한다. 즉, 저장되는 데이터가 하드 디스크 개수만큼 저장되는 것이다.
이때 마치 줄무늬처럼 분산되어 저장된 데이터를 스트라입(stripe)이라 하고, 분산하여 저장하는 것을 스트라이핑(striping)이라고 한다. 참고로 stripe는 영어로 줄무늬라는 뜻이다.
위와 같이 데이터가 분산되어 저장되면, 다시 말해 스트라이핑되면 저장된 데이터를 읽고 쓰는 속도가 빨라진다. 하나의 대용량 저장 장치를 이용했더라면 여러 번에 걸쳐 읽고 썼을 데이터를 동시에 읽고 쓸 수 있기 때문이다. 그렇기에 4TB 저장 장치 한 개를 읽고 쓰는 속도보다 RAID 0로 구성된 1TB 저장 장치 네 개의 속도가 이론상 네 배 가량 빠르다.
그런데 RAID 0에는 단점이 있다. 저장된 정보가 안전하지 않다. RAID 0으로 구성된 하드 디스크 중 하나에 문제가 생긴다면 다른 모든 하드 디스크의 정보를 읽는 데 문제가 생길 수 있다. 그래서 등장한 것이 RAID 1이다.
RAID 1은 복사본을 만드는 방식이다. 마치 거울처럼 완전한 복사복을 만드는 구성이기에 미러링(mirroring)이라고 부른다. 아래 그림은 네 개의 하드 디스크를 RAID 1으로 구성한 모습이다. RAID 0 처럼 데이터 스트라이핑이 사용되긴 했지만, 오른쪽의 두 하드 디스크는 마치 거울처럼 왼쪽의 두 하드 디스크와 동일한 내용을 저장하고 있다. 이처럼 RAID 1에 어떠한 데이터를 쓸 때는 원복과 복사본 두 군데 쓴다. 그렇기에 쓰기 속도는 RAID 0 보다 느리다.