RAID

[source: https://namu.wiki/w/RAID]

의미

  • RAID: Redundant Array of Inexpensive/Independent Disk
  • 저장장치 여러 개를 묶어 고용량·고성능 저장 장치 한 개와 같은 효과를 얻기 위해 개발된 기법이다.

구현방법

  • 하드웨어 RAID: 별도의 RAID 카드를 장착하여 구현하는 방법이다. 속도와 안정성 모두 최고급이나 별도의 RAID카드가 필요하다는 게 단점이다.
  • 드라이버 RAID: 값비싼 RAID 카드 대신 기능을 간략화한 RAID 칩을 탑재하고 펌웨어(드라이버)로 제어하여 구현하는 방법이다. 메인보드 RAID라고도 하며, 보통 OS 진입 전 BIOS(UEFI) 메뉴에서 RAID를 구현한다. OS에 관계 없이 작동하며, OS에서는 원래 장착한 디스크 대신 가상의 BIOS(UEFI) RAID 하드웨어가 표시된다.(즉, 별도의 드라이버 소프트웨어를 통한 관리가 불가능하다.) 단, OS 를 바꿔도 묶어놓았던 레이드가 계속 유효한 대신에 메인보드를 바꾸게 되면(예를들어 인텔보드에서 AMD 보드로) 그 레이드는 더이상 사용하지 못할 가능성이 크다.
  • 소프트웨어 RAID: OS RAID라고도 한다. OS의 디스크 관리 메뉴에서 RAID를 구현하는 방법이다. Windows의 경우에는 부팅 디스크를 OS RAID로 설정할 수 없다. OS 레이드는 메인보드를 바꾸더라도 해당 디스크만 제대로 꼽아주면 계속 레이드를 사용할 수 있지만, OS 를 바꾸면 (예를들어 윈도우->리눅스) 보통 사용하지 못한다. 보통 하드웨어를 바꾸는 경우가 OS 를 바꾸는 경우보다 더 빈번하기도 하고, OS 를 바꾸면 어차피 제공되는 파일시스템 자체가 달라지기때문에 기존 레이드를 인식하건 말건간에 어차피 새로 포맷을 해줘야 하고, 포맷을 할거면 그냥 다시 레이드를 묶으면 된다.[1] 따라서, 호환성 측면에서는 메인보드 레이드보다는 OS 레이드가 좀 더 좋다.

종류
동작 방식에 따라 Level 0 ~ 6으로 분류한다. 주로 사용되는 것은 0, 1, 5, 6이며 컨트롤러 개발사에 따라 다른 방식을 제공하기도 한다.

  • RAID 0: Striping. 여러 개의 멤버 하드디스크를 병렬로 배치하여 거대한 하나의 디스크처럼 사용한다. 데이터 입출력이 각 멤버 디스크에 공평하게 분배되며, 디스크의 수가 N개라면 입출력 속도 및 저장 공간은 이론상 N배가 된다. 다만 멤버 디스크 중 하나만 손상 또는 분실되어도 전체 데이터가 파손되며, 오류검출 기능이 없어 멤버 디스크를 늘릴수록 안정성이 떨어지는 문제가 있다.
    이미지 프로세싱, 데이터베이스 캐시 등 빠른 입출력 성능을 필요로 하며, 데이터 손실이 문제되지 않는 환경에서 쓰일 수 있지만, 상용 환경에서는 위험성 문제로 RAID 5나 6을 이용하는 경우가 많다고 한다.
  • RAID 1: Mirroring. 각 멤버 디스크에 같은 데이터를 중복 기록한다. 멤버 디스크 중 하나만 살아남으면 데이터는 보존되며 복원도 1:1 복사로 매우 간단하기 때문에, 서버 또는 연구목적 PC에서 혹시 모를 데이터 손실에 대비하기 위해 사용한다.
    멤버 디스크를 늘리더라도 저장 공간은 증가하지 않으며, 대신 안정성이 크게 증가하게 된다. 상용 환경에서는 디스크를 2개를 초과해서 쓰는 경우가 드물지만, 극한 환경에서는 3개 이상의 멤버 디스크를 사용하기도 한다. 데이터 가치가 하드디스크 가격이 껌값으로 여겨질 정도로 높은 경우 (국가 비밀 문서등) 사용한다. 읽기 성능은 Non-RAID와 별 차이가 없고, 쓰기 성능은 이론적으로는 소폭 하락한다. 다만, 이 하락이 하향 평준화가 기준이므로 동일 모델 동일 주차 생산품으로 구성한 경우 크게 차이가 없을 수 있다.
  • RAID 2,3,4: 오류정정부호(ECC)를 기록하는 전용의 하드디스크를 이용해서 안정성을 확보한다. RAID 2는 비트 단위에 Hamming code를 적용하며, RAID 3, 4는 각각 바이트, 워드 단위로 패리티를 저장한다. 하나의 멤버 디스크가 고장나도 ECC를 이용하여 정상적으로 작동할 수 있지만, 추가적인 연산이 필요하여 입출력 속도가 매우 떨어진다. 쉽게말해 값들을 미적분으로 저장해서 디스크중 하나둘정도가 날아가도 일단 돌아가기는 하는 형태로, 함수를 저장하기 위해 용량을 약간 희생하지만 하드 하나만 뻑가도 망할수 있는 일부 레이드 시스템에 비해 미친듯한 신뢰성과 저장용량 효율을 보인다. 모든 I/O에서 ECC 계산이 필요하므로 입출력 병목 현상이 발생하며, ECC 기록용으로 쓰이는 디스크의 수명이 다른 디스크들에 비해 짧아지는 문제가 있어 현재는 사용하지 않는다.
  • RAID 5: Fault Tolerance using Distributed Parity Bit. 기본 원리는 RAID 4와 비슷하나, 패리티를 한 디스크에 밀어넣지 않고 각 멤버 디스크에 돌아가면서 순환적으로 저장하여 입출력 병목현상을 해결한다. N개의 디스크를 사용하면 (N-1)배의 저장 공간을 사용할 수 있다. RAID 4처럼 하나의 멤버 디스크 고장에는 견딜 수 있지만 디스크가 두 개 이상 고장나면 데이터가 모두 손실된다. 데이터베이스 서버 등 큰 용량과 무정지 복구 기능을 동시에 필요로 하는 환경에서 주로 쓰인다. 하드디스크가 하나가 사망해도 데이터가 살아있어서, 안전성이 굉장히 높아보이나 실제로는 패리티 연산을 통해서 데이터를 저장한다는 특징 때문에 취급상 유의가 필요하며 까다롭다. 다음은 RAID 5를 고려한다면 알아야 할 사항이다.
    1. RAID 0보단 안전하다는 인식과 달리 오히려 많은 량(보통 8개 이상)의 디스크를 스토리지로 묶으면, 패리티 연산오류 발생 확률이 높아져서 인해 RAID 0으로 묶은것보다 깨질 확률이 높아진다고 한다. 그러므로 대단위로 스토리지를 만드려는 사람이 있다면 RAID 6 또는 RAID 10을 권한다.
    2. 데이터가 분산 저장되어 있기 때문에 어레이가 깨지거나 보장되는 내결함 디스크 개수(RAID 5는 최대 1개)를 초과하는 경우 전자는 데이터를 살리기가 대단히 어렵고 후자는 사실상 데이터를 살릴 수 없다.
    3. RAID 1에서 언급했듯, RAID 5 볼륨의 HDD가 사망했다면 RAID 볼륨의 데이터를 먼저 백업해 두는 게 좋다. 이런 상황은 RAID 5에서 심심지 않게 발생하니 주의하도록 할것. RAID 6은 디스크 1개가 사망해도 1개의 여유가 있기 때문에 해당 상황의 위험성은 심각한 정도는 아니다.
    4. 어레이를 복구하려고 하드를 뽑았는데, 하필 정상이었던 하드를 잘못 뽑아서 어레이가 깨지는 경우도 심심치 않게 발생하니 주의하도록 할 것. 고급 레이드카드/소프트웨어 레이드들은 다시 붙이면 잘 붙긴하나, 그래도 안붙는 경우도 있으니 주의…
    5. 리빌딩을 하고 있을때 해당 어레이에 부하를 주지 말 것. 리빌딩 도중에 사용하면 리빌딩 시간이 늘어나고, 무엇보다 리빌딩 하다가 깨질 수도 있다.
  • RAID 6: Fault Tolerance using Distributed Double Parity Bit. RAID 5와 원리는 같으며, 서로 다른 방식의 패리티 2개를 동시에 사용한다. 성능과 용량을 희생해서 안정성을 높인 셈. N개의 디스크를 사용하면 (N-2)배의 저장 공간을 사용할 수 있다. 스토리지 서버와 같이 디스크를 빼곡히 꽂는(기본 10개 단위) 환경에서 RAID 5는 유지보수가 어려우며, 안정성을 높이기 위한 목적으로 주로 사용된다. 하드 하나가 고장난 RAID 5 장비에서 교체하려다가 실수로 멀쩡한 하드 하나를 뽑았다 → 데이타는 천국으로. 동일 상황에서 RAID 6는 문제가 없다. 컨트롤러가 RAID 5보다 더 비싸고, 멤버 디스크도 기본 4개 이상 확보해야 하므로 초기 구축비용이 비싸다. 하드디스크를 대단위로 물려야 하고, 데이터 안정성의 필요성이 RAID 5보다 높아야 하는 상황에서 쓰인다.

 

답글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다.