RAID와 디스크 타입으로 보는 데이터 백업 플랜 + 용량 확보 방법 정리하기
취업 등을 준비하면서 RAID에 대해 한 번이라도 공부해 본 사람들이 있을 것이다.
보통 RAID를 구성하는 방식은 현대의 개발 방법에서 이론적으로만 이해하고 있고, 직접 구성할 일은 거의 없을 것이다.
많은 기업들이 클라우드 상에서 업무를 수행하고 있고, RAID 자체는 특별한 기술이 아니기 때문이다.
그러나 온프레미스로 서비스를 운영하는 회사의 입장에서 클라우드 사용 업체와는 얘기가 완전히 다르다.
한 번 RAID를 구성한 서버는 다른 RAID 타입으로 바꾸기도 어렵고, 바꾸려면 서버는 그대로 두고, 디스크를 완전히 바꾸는 형태로 사용하기 때문이다.
지난 4개월 동안 회사에서 스토리지 장비 구매를 위해 PoC를 여러 업체들과 진행했다.
PoC를 하는데 이렇게 많은 시간이 걸렸던 이유는 장비 가격 이슈가 무척 컸고 (최소 스토리지 장비 한 대에 1억 이상이고, 최대 3억 정도 였다) 스토리지 장비에 워낙 많은 기능들을 취급하고 있어서 다양하게 회사에서 취급하는 데이터에 맞게 튜닝을 해봤기 때문이다.
특히 업체별로 RAID 구성 관련해서 다양한 얘기를 해봤었기 때문에 이 과정을 정리해본다.
1. RAID 0
데이터를 다루는 일상에서 빠른 속도는 매우 중요하다.
그래서 RAID 0은 여러 개의 디스크를 하나로 연결해 데이터를 빠르게 처리하는 기술이다. (HDD, SSD 포함)
이 방식은 데이터를 여러 디스크에 나눠 저장하는데, 이렇게 나누어 저장하면 각 디스크가 동시에 데이터를 처리할 수 있어 처리 속도가 빨라진다.
사람의 예로 설명을 들면, 혼자서 2시간 걸리는 작업을 2명이서 1시간에 끝내는 것과 같은 원리다.
이렇게 저장된 데이터는 다시 합쳐져서 하나의 큰 논리적인 디스크로 인식된다.
하지만, 단점도 있다.
RAID 0은 데이터를 분산하여 저장하기 때문에 디스크 중 하나가 고장나면 그 안에 저장된 모든 데이터가 유실된다.
즉, 복구가 안된다.
2인 삼각 경기처럼 한 명이 넘어지면 함께 뛰던 사람도 넘어지는 것과 같다.
그래서 RAID 0은 데이터 처리 속도가 중요한 작업에서 사용되며, 예를 들어 영상 편집이나 게임에서 유용하게 사용된다.
RAID 0을 사용하면 데이터 처리 속도를 높일 수 있어 작업 시간을 단축시킬 수 있다.
2. RAID 1
RAID1은 0과 다르게 처리 속도보다 데이터 백업에 초점을 맞춘 디스크 구성 방식이다.
이 기술은 두 개의 디스크를 사용하여 데이터를 동시에 저장하는데, 이를 미러링이라고 한다.
데이터 미러링은 간단히 말해, 같은 데이터를 두 개의 디스크에 동시에 저장하는 것이다.
즉, 하나의 디스크에 데이터가 저장되면 다른 디스크에도 같은 데이터가 복제되어 저장되는 것이다.
이 방식은 데이터를 보호하는 데 매우 효과적이다.
만약 하나의 디스크가 고장나도 다른 디스크에 데이터가 그대로 남아있기 때문이다.
RAID 1은 데이터를 저장할 때 동시에 두 개의 디스크에 저장하기 때문에 처리 속도가 RAID 0에 비해 느리다.
하지만 데이터의 안정성을 위해서라면 이 정도의 속도 저하는 감수할만하다.
RAID 1에서는 모든 데이터가 두 개의 디스크에 저장되기 때문에, 전체 디스크 용량은 한 디스크의 용량만큼만 사용 가능하다.
예를 들어, 디스크 용량이 500GB면, 절반인 250GB는 실제로 데이터가 기록되는 나머지 절반을 동일하게 따라하는 것이다.
또한, 두 개의 디스크를 모두 사용하므로 비용이 RAID 0보다 비싸지만, 데이터를 보호할 필요가 있는 경우에는 이 비용을 감수하는 것이 좋다.
RAID 1은 중요한 데이터를 보호하기 위해 사용되는 기술로, 예를 들어 회사의 중요한 문서나 데이터베이스 등을 저장할 때 많이 사용된다.
이를 통해 데이터 유실을 방지하고 안정적인 시스템 운영을 유지할 수 있다.
뒷부분에서 언급하겠지만, 처리 속도와 데이터 복구라는 두 마리 토끼를 모두 잡기 위해 RAID 10이라는 방식도 있다.
3. RAID 2
RAID 2는 하나의 디스크에 데이터를 저장하는 것이 아니라, 여러 개의 디스크에 나눠 저장하는 방식을 사용하는 RAID 방식이다.
이를 위해 해밍 코드(Hamming Code)라는 것을 사용한다.
해밍 코드는 데이터 블록에 오류 검출 및 정정 기능을 제공하는 코드로 이를 사용하여 데이터 블록을 여러 디스크에 나눠 저장한다.
이 때, 각 디스크에는 데이터 블록의 일부분과 해밍 코드가 함께 저장되는 방식이다.
RAID 2에서는 각 디스크마다 전용 컨트롤러가 있어서, 병목 현상을 줄이고 처리 속도를 높일 수 있다.
그러나 RAID 2는 실용성이 없어 거의 사용되지 않는다.
그 이유는 RAID 2가 등장한 1980년대에는 기술적으로 진보적이었지만, 현재는 다른 RAID 레벨에서도 오류 검출 및 정정 기능을 제공하기 때문이다.
RAID 2는 해밍 코드를 사용하여 데이터의 정합성을 보장할 수 있지만, 이에 따른 오버헤드가 무척 크다.
따라서 RAID 2는 많은 저장 용량이 필요하지만, 데이터를 많이 읽는 애플리케이션이나 파일 서버 등에서는 어느 정도의 이점을 얻을 수 있다.
하지만 현재는 RAID 2보다 성능이 더 우수한 다른 RAID 레벨이 많이 존재한다.
RAID 2는 기술적으로는 중요하지만, 실제로는 거의 사용되지 않기 때문에, 데이터를 안전하게 보호하고 성능을 향상시키기 위해서는 RAID 50, 60과 같은 타입을 고려하는 것이 좋을 것 같다.
실제로 RAID 2, 3, 4는 거의 얘기할 일이 없었는데 글 작성을 위해 내용을 알아보니 아마 가까운 미래에도 RAID를 2 / 3 / 4를 쓸 일은 없지 않을까 생각한다.
4. RAID 3
RAID 3은 하나의 디스크에 패리티 정보를 저장하는 방식을 사용하는 RAID 방식이다.
이를 위해 독립적인 Parity Disk라는 것을 사용하는데 패리티 정보는 Parity Disk에서 발생한 오류를 검출하고 정정할 수 있도록 해준다.
RAID 3은 매우 빠른 데이터 전송 속도와 높은 신뢰성을 제공한다.
기본적으로 모든 데이터가 여러 개의 디스크에 분산되어 저장되고, RAID 3에서는 여러 디스크에서 병렬로 데이터를 읽고 쓸 수 있으므로 처리 속도가 빠르기 때문이다.
하지만 RAID 3에서는 오직 Parity Disk에만 데이터가 저장되기 때문에, 다른 RAID 레벨에 비해 디스크 사용률이 낮다.
또한, Parity Disk가 단일 장애점(single point of failure)이 되기 때문에, 이 디스크가 고장나면 모든 데이터가 손상될 수 있다.
RAID 3은 많은 디스크를 사용하는 데이터베이스, 파일 서버 등에서 사용될 수 있다.
이는 대용량 데이터를 다루는 애플리케이션에서 유용하며, 데이터 전송 속도와 신뢰성이 중요한 경우에 적합하다.
그러나 현재는 RAID 3보다 더 효율적인 다른 RAID 레벨들이 개발되어 사용되고 있다.
RAID 3은 오랫동안 사용되어왔지만, 이제는 다른 RAID 레벨을 고려하는 것이 좋다고 한다.
5. RAID 4
RAID 4는 여러 개의 디스크에 데이터를 분산 저장하면서도, 하나의 디스크에 전용 패리티 정보를 저장하여 데이터 오류를 검출 및 정정할 수 있는 RAID 타입이다.
RAID 4에서는 전용 Parity Disk를 사용하기 때문에, 디스크 고장 시 모든 데이터가 손실될 가능성이 있다.
그러나 RAID 4에서는 디스크에 대한 동시 접근이 가능하기 때문에, 이론적으로 RAID 3보다 처리 속도가 더 빠르다고 한다.
RAID 4는 일반적으로 대용량 파일 서버나 데이터베이스에서 사용된다.
이는 많은 사용자들이 동시에 대용량 파일을 읽거나 쓰는 경우에 유용하다.
또한 RAID 4는 RAID 5보다는 처리 속도가 빠르지만, 디스크 고장 시에는 더 큰 위험이 있으므로, RAID 5를 대체하기보다는 보완적인 용도로 사용된다고 한다.
RAID 4의 단점 중 하나는 하나의 패리티 디스크만 사용하기 때문에, 이 디스크의 처리 속도가 전체 RAID 시스템의 성능에 큰 영향을 미치게 된다.
RAID 4도 팀에서 스토리지 구성하면서 얘기가 한 번도 안나왔던 주제인데, 찾아보다 보니 충격이었다.
회사에서 10년치 정도 되는 주식 시장 데이터가 있는데, 각 파일들이 4k 정도로 작다.
파일 블록 사이즈가 작다보니, PoC 과정에서도 스토리지 튜닝을 여러번 했었는데 RAID4로 묶었으면 디스크 성능이 무척 안나왔을 가능성이 높다.
RAID 4는 RAID 5와 마찬가지로, 대부분의 하드웨어 RAID 컨트롤러에서 지원되므로, 소프트웨어 RAID보다 더욱 안정적인 운영이 가능하다.
사실 RAID 4만 보면 데이터 복구 쪽에 큰 메리트가 없어서, RAID 40 형태로 묶어도 의미가 없을 것 같다. (RAID 0도 백업은 지원이 안되니)
6. RAID 5
RAID 5는 여러 개의 디스크에 데이터를 분산 저장하면서도, 전용 패리티 정보를 모든 디스크에 분산 저장하여 데이터 오류를 검출 및 정정할 수 있는 RAID 타입이다.
RAID 5에서는 모든 디스크에 데이터와 패리티 정보가 분산되어 저장된다.
디스크 하나가 고장 나더라도, 패리티 정보를 이용해 데이터를 정확하게 복구할 수 있다.
따라서 RAID 5는 데이터의 안정성을 보장하면서도, 전체 디스크 용량 중 하나의 디스크 용량을 패리티 정보로 사용하기 때문에, RAID 1보다 더 효율적으로 용량을 사용할 수 있다.
RAID 5에서는 디스크에 대한 동시 접근이 가능하기 때문에, RAID 1보다 처리 속도가 더 빠르다. (앞에서 얘기한 것처럼 RAID 1은 미러링이므로)
RAID 5는 디스크 고장 시에도 데이터를 유지할 수 있기 때문에, 일반적으로 대용량 파일 서버나 데이터베이스에서 사용된다.
RAID 5의 단점 중 하나는 RAID 1과 마찬가지로, 디스크 용량이 홀수일 경우에는 패리티 정보를 저장할 디스크가 하나 뿐이기 때문에, 디스크 고장 시에 모든 데이터가 손실될 가능성이 있다.
그래서 디스크 갯수나 용량을 홀수로 구성하지 않고, 회사에서 RAID 구성 얘기할 때도 홀수 구성에 대해 전혀 언급을 하지 않았다.
또한, RAID 5에서는 쓰기 작업이 많은 경우에는 성능이 저하될 수 있다.
애초에 분산처리로 어느 정도 데이터 읽기에 대해 성능 개선을 꾀할 수 있겠지만, 복구에 우선순위를 좀 더 둬서 사용하는 RAID 타입이라 약간의 트레이드 오프는 있다.
RAID 5는 대부분의 하드웨어 RAID 컨트롤러에서 지원되며, 소프트웨어 RAID보다 더욱 안정적인 운영이 가능하다.
7. RAID 6
RAID 6은 RAID 5와 비슷한 방식으로 작동하지만, 전용 패리티 정보를 두 개 사용하여 두 개의 디스크가 동시에 고장 났을 때에도 데이터를 복구할 수 있는 RAID 타입이다.
RAID 6는 RAID 5보다 더 안정적인 데이터 보호 기능을 제공한다.
RAID 5에서는 하나의 디스크가 고장 나면 패리티 정보를 이용해 데이터를 복구할 수 있지만, 두 개의 디스크가 동시에 고장 나면 데이터를 복구할 수 없다.
RAID 6에서는 전체 디스크 용량 중 두 개의 디스크 용량을 패리티 정보로 사용하기 때문에, RAID 5보다는 용량 효율성이 낮을 수 밖에 없다.
RAID 6의 단점 중 하나는, RAID 5와 마찬가지로 쓰기 작업이 많은 경우에는 성능이 저하될 수 있다는 점이다.
또한, RAID 6를 사용하기 위해서는 전용 RAID 컨트롤러가 필요하다.
RAID 6은 비용이 비싸지만, 대용량 데이터를 안정적으로 저장하고 보호해야 하는 기업이나 기관에서는 유용하게 사용될 수 있다.
8. RAID 10
RAID 10은 RAID 0과 RAID 1을 결합한 RAID 타입으로, 높은 데이터 안정성과 빠른 속도를 제공할 수 있다.
RAID 10은 여러 개의 디스크를 최소한 4개 이상 사용하여 작동한다.
디스크를 2개씩 묶어서 RAID 1으로 구성하고, 이들을 다시 RAID 0으로 묶어서 구성한다.
즉, RAID 10은 데이터를 미러링하면서도 스트라이핑을 동시에 수행하는 구조를 갖고 있다.
RAID 10은 데이터의 안정성과 속도 모두를 고려한 RAID 타입이다.
RAID 1의 특성 때문에 데이터를 미러링하여, 하나의 디스크가 고장 나더라도 다른 디스크에서 데이터를 복구할 수 있고, RAID 0의 특성으로 분산처리를 함으로써 속도를 개선할 수 있다는 것이 RAID를 결합했을 때의 특징이다.
그러나 RAID 10의 단점 중 하나는 디스크 용량의 효율성이 낮다는 것이다.
RAID 1에서 미러링을 위해 사용하는 디스크 용량의 절반 이상을 사용하기 때문에, RAID 10은 디스크 용량의 효율성이 RAID 0이나 RAID 5보다 낮을 수 밖에 없다.
또한, 디스크를 4개 이상 사용해야 하기 때문에 비용이 올라갈 수 밖에 없다.
9. RAID 50
RAID 50은 RAID 5와 RAID 0을 결합한 RAID 타입으로, 데이터 안정성과 높은 성능을 모두 제공한다.
RAID끼리 결합하는 방식은 거의 RAID 0을 기본으로 깔고 가는 것으로 보인다.
RAID 50은 여러 개의 디스크를 최소한 6개 이상 사용하여 작동하며, 디스크를 3개씩 묶어서 RAID 5으로 구성하고, 이들을 다시 RAID 0으로 묶어서 구성해준다.
즉, RAID 50은 RAID 5의 데이터 안정성을 유지하면서 RAID 0의 분산처리 특징을 차용하여 빠른 속도를 제공하는 방식이다.
RAID 50은 RAID 5와 비교하여 데이터의 안정성과 성능 모두를 높일 수 있고 RAID 5는 디스크 하나가 고장 나더라도 데이터를 복구할 수 있지만, 이 때는 더 이상 RAID 5로 작동하지 않으며 속도도 감소할 수 밖에 없다.
반면 RAID 50은 RAID 5의 디스크 하나가 고장 나도 데이터를 복구할 수 있고, 속도도 감소하지 않는다.
10. RAID 60
RAID 60은 RAID 6와 RAID 0을 결합한 RAID 레벨로, 데이터 안정성과 높은 성능을 모두 제공하며, 결합 방식을 감안하면 비용적으로 구매하는 디스크가 많아져 RAID 10 다음으로 비싸지 않을까 싶다.
RAID 60은 최소한 8개 이상의 디스크를 사용하여 작동한다.
디스크를 4개씩 묶어서 RAID 6으로 구성하고, 이들을 다시 RAID 0으로 묶어서 구성한다.
즉, RAID 60은 RAID 6의 데이터 안정성과 RAID 0의 분산처리 기술을 결합한 것이다
RAID 60은 RAID 6의 장점인 2개의 디스크가 동시에 고장나도 데이터의 안정성을 유지할 수 있다.
RAID 6에서 사용하는 디스크 용량의 2/3 이상을 사용하기 때문에, RAID 60은 디스크 용량의 효율성이 RAID 0이나 RAID 6보다 낮을 수 밖에 없다.
또한, 디스크를 8개 이상 사용해야 하기 때문에 비용이 높을 수 있다.
11. 후기
일단 RAID 0, 1, 5, 6 을 단일하게 사용하는 경우도 있지만 RAID 0을 결합해 사용하면 속도 개선 이슈가 있어서 거의 기본적으로 10 / 50 / 60을 기본으로 염두하고 디스크를 묶어주는 것으로 보인다.
다만, 비용적으로 따져본다면 RAID 10 > RAID 60 > RAID 50이며 (각각 디스크 백업에 전체 용량의 50% / 33% / 33% 차지) RAID 60의 경우 50보다 Parity disk를 한 개 더 가져가기 때문에 데이터에 대해 더 보수적으로 접근한다.
사실 돈이 많다면 10이 제일 베스트다.
용량적인 부분에서 절반이나 백업 데이터로 쓰는 건 속이 쓰리지만, write 부분에서도 성능 개선을 얻을 수 있기 때문이다. (RAID 50 & 60은 읽기 속도만 개선된다)
지난 4개월 동안 스토리지 관련 PoC를 위해 FIO를 사용해보고, 관련 미팅을 많이 가져서 스스로 부족한 부분은 정말 많이 느꼈는데 개발하다보면 스스로의 부족함을 늘 맞이할 수 밖에 없을 것 같다.
운영체제에서 이론적으로만 배웠던 RAID에 대해 감히 “완벽하게” 이해하고 간 느낌이다.
Ryan