기술(IT)

디스크 구성 방식 - RAID(Redundant Array of Independent Disks)

2019. 10. 3.
728x90

RAID(Redundant Array of Independent Disks)는 데이터 중복성, 성능 향상 또는 두 가지 모두를 위해 여러 물리적 Disk 드라이브 구성 요소를 하나 이상의 논리 단위로 결합하는 데이터 스토리지 가상화 기술이다. 이는 단일 대형 고가의 디스크라고 하는 매우 안정적인 메인프레임 디스크 드라이브의 이전 개념과는 대조적이었다. 데이터는 필요한 중복성 및 성능 수준에 따라 RAID 레벨이라고 하는 여러 가지 방법 중 하나로 드라이브에 분산된다. 서로 다른 체계 또는 데이터 배포 레이아웃은 "RAID"라는 단어에 의해 명명되며, RAID 0 또는 RAID 1과 같은 숫자로 명명된다. 각 체계 또는 RAID 레벨은 신뢰성, 가용성, 성능 및 용량이라는 주요 목표 간에 서로 다른 균형을 제공한다. RAID 0보다 큰 RAID 레벨은 복구할 수 없는 섹터 읽기 오류뿐 아니라 전체 물리적 드라이브의 장애에 대한 보호 기능을 제공한다. 많은 RAID 레벨은 주어진 데이터 집합에서 내결함성을 제공하기 위해 정보 기술에서 널리 사용되는 방법인 "패리티"라는 오류 보호 체계를 채택하고 있다. 대부분은 단순한 XOR를 사용하지만 RAID 6는 특정 Galois 필드 또는 Reed-Solomon 오류 수정의 덧셈과 곱셈을 기반으로 각각 두 개의 개별 패리티를 사용한다. RAID는 또한 전체 SSD 시스템을 희생하지 않고 솔리드 스테이트 드라이브(SSD)로 데이터 보안을 제공할 수 있다. 예를 들어, 빠른 SSD는 기계적인 드라이브로 미러링할 수 있다. 이 구성을 통해 상당한 속도 이점을 제공하려면 모든 읽기 작업에 빠른 SSD를 사용하는 적절한 컨트롤러가 필요하다.


진실성

데이터 스크러빙은 달리 액세스하지 않는 블록을 포함하여 어레이에 있는 모든 블록의 RAID 컨트롤러에 의한 정기적인 읽기 및 확인을 포함한다. 사용 전에 불량 블록을 감지한다. 데이터 스크러빙은 어레이의 각 스토리지 장치에서 불량 블록을 검사하지만, 어레이의 이중화를 사용하여 단일 드라이브의 불량 블록을 복구하고 복구된 데이터를 드라이브의 다른 곳에 있는 예비 블록에 재할당한다. 드라이브가 8초 정도 응답하지 않으면 RAID 컨트롤러가 구성 요소 드라이브(즉, 구성 요소 드라이브에 고장이 발생한 것으로 가정)를 "드롭"하도록 구성되는 경우가 많으며, 이는 드라이브가 내부 오류 복구 절차를 완료하기에 충분한 시간이 주어지지 않았기 때문에 어레이 컨트롤러가 양호한 드라이브를 떨어뜨리는 원인이 될 수 있다. 따라서 RAID와 함께 소비자 판매 드라이브를 사용하는 것은 위험할 수 있으며, 소위 엔터프라이즈 클래스 드라이브는 위험을 줄이기 위해 이 오류 복구 시간을 제한한다. 유틸리티는 오류 복구 시간을 7초로 제한하는 TLER(시간 제한 오류 복구)을 활성화했다.  RAID는 물리적 드라이브 장애로부터 보호할 수 있지만, 데이터는 여전히 운영자, 소프트웨어, 하드웨어 및 바이러스 파괴에 노출되어 있다. 많은 연구에서는 결함이 있는 RAID에서 서버 운영자가 잘못된 드라이브를 교체하고, 그 과정에서 일시적으로라도 시스템을 비활성화하는 등 운영자 고장을 가장 일반적인 오작동의 원인으로 꼽고 있다. 어레이는 복구 용량을 초과하는 치명적인 고장으로 인해 압도될 수 있으며, 전체 어레이는 화재, 자연 재해 및 인력에 의한 물리적 손상의 위험에 처하지만 백업은 현장에 저장할 수 있다. 어레이는 데이터 손실 없이 항상 새로운 다른 컨트롤러로 마이그레이션할 수 없기 때문에 컨트롤러 장애에도 취약하다.


RAID 레벨은 5개였지만, 많은 변화가 진화했으며, 특히 여러 중첩 레벨과 많은 비표준 레벨이 그러했다.


RAID 0은 스트라이핑으로 구성되지만 미러링이나 패리티는 없다. 스팬 볼륨과 비교하여 RAID 0 볼륨의 용량은 동일하며, 이는 세트에 있는 디스크 용량의 합이다. 그러나 스트라이핑은 각 파일의 내용을 세트의 모든 디스크로 분배하기 때문에, 디스크의 고장으로 인해 전체 RAID 0 볼륨인 모든 파일이 손실된다. 파손된 스팬 볼륨은 적어도 파일을 영구 디스크에 보존한다. RAID 0의 이점은 어떤 파일에 대한 읽기 및 쓰기 작업의 처리량에 디스크 수를 곱한다는 것이다. 왜냐하면, 확장된 볼륨과는 달리 읽기 및 쓰기는 동시에 수행되며, 비용은 드라이브 장애에 대한 완전한 취약성이 있기 때문이다. 실제로 평균 고장률은 동급 단일 비 RAID 드라이브보다 더 나쁘다.


RAID 1은 패리티 또는 스트라이핑이 없는 데이터 미러링으로 구성된다. 데이터는 두 드라이브에 동일하게 기록되며, 이에 따라 "미러링된 드라이브 세트"가 생성된다. 따라서 모든 읽기 요청은 세트에 있는 드라이브로 서비스될 수 있다. 요청이 세트의 모든 드라이브에 브로드캐스트되는 경우, 데이터를 먼저 액세스하는 드라이브에 의해 서비스될 수 있으며(찾기 시간 및 회전 지연 시간에 따라 다름), 성능이 향상된다. 지속적인 읽기 처리량(컨트롤러 또는 소프트웨어가 최적화된 경우)은 RAID 0과 마찬가지로 세트 내 모든 드라이브의 처리량 합계에 접근한다. 대부분의 RAID 1 구현의 실제 읽기 처리량은 가장 빠른 드라이브보다 느리다. 모든 드라이브를 업데이트해야 하기 때문에 쓰기 처리량은 항상 느리며, 가장 느린 드라이브는 쓰기 성능을 제한한다. 적어도 하나의 드라이브가 작동하는 한 어레이는 계속 작동한다.


RAID 2는 전용 해밍 코드 패리티가 있는 비트 레벨 스트라이핑으로 구성된다. 모든 디스크 스핀들 회전이 동기화되고 각 순차 비트가 다른 드라이브에 있도록 데이터가 스트라이핑된다. 해밍 코드 패리티는 해당 비트에 걸쳐 계산되며 적어도 하나의 패리티 드라이브에 저장된다. 이 정도는 역사적 의의가 있을 뿐이다.


RAID 3는 전용 패리티가 있는 바이트 레벨 스트라이핑으로 구성된다. 모든 디스크 스핀들 회전이 동기화되고 각 순차 바이트가 다른 드라이브에 있도록 데이터가 스트라이핑된다. 패리티는 해당 바이트에 걸쳐 계산되며 전용 패리티 드라이브에 저장된다. 구현이 존재하지만, RAID 3는 실제로 일반적으로 사용되지 않는다.


RAID 4는 전용 패리티가 있는 블록 레벨 스트라이핑으로 구성된다. 이 레벨은 이전에 NetApp에서 사용했지만, 현재는 RAID-DP라고 하는 두 개의 패리티 Disk로 RAID 4를 독점적으로 구현하는 것으로 대체되었다. RAID 2와 3에 비해 RAID 4의 주요 이점은 I/O 병렬이다. RAID 2와 3에서는 단일 읽기 I/O 작업으로 데이터 드라이브 그룹 전체를 읽어야 하는 반면 RAID 4에서는 I/O 읽기 작업이 모든 데이터 드라이브에 분산될 필요가 없다. 결과적으로 더 많은 I/O 작업을 병렬로 실행할 수 있어 소규모 전송의 성능을 향상시킬 수 있다.


RAID 5는 분산 패리티가 있는 블록 레벨 스트라이핑으로 구성된다. RAID 4와 달리 패리티 정보는 드라이브에 분산되어 있으며, 작동하려면 1개 드라이브를 제외한 모든 드라이브가 있어야 한다. 단일 드라이브가 고장 나면 데이터가 손실되지 않도록 분산 패리티에서 후속 읽기를 계산할 수 있다. RAID 5에는 최소 3개의 디스크가 필요하다. 모든 단일 패리티 개념과 마찬가지로, 대형 RAID 5 구현은 어레이 재구축 시간 및 재구축 중 드라이브 장애 발생 가능성에 관한 추세 때문에 시스템 고장에 취약하다(아래 "재구성 시간 및 고장 확률 증가" 섹션 참조). 어레이를 다시 구축하려면 모든 디스크의 모든 데이터를 읽어야 하며, 두 번째 드라이브 장애 및 전체 어레이의 손실에 대한 가능성을 열어야 한다.


RAID 6는 이중 분산 패리티의 블록 레벨 스트라이핑으로 구성된다. 이중 패리티는 최대 2개의 고장 드라이브까지 내결함성을 제공한다. 따라서 대용량 드라이브를 복원하는 데 시간이 더 오래 걸리기 때문에 특히 고가용성(HA) 시스템의 경우 더 큰 RAID 그룹이 더 실용적이다. RAID 6에는 최소 4개의 디스크가 필요하다. RAID 5와 마찬가지로 단일 드라이브 장애로 인해 장애가 발생한 드라이브를 교체할 때까지 전체 어레이의 성능이 저하된다. RAID 6 어레이를 사용하면 여러 소스와 제조업체의 드라이브를 사용하여 RAID 5와 관련된 대부분의 문제를 완화할 수 있다. 드라이브 용량이 크고 어레이 크기가 클수록 RAID 5 대신 RAID 6을 선택하는 것이 중요해진다.


RAID 0+1: 2개의 스트라이프를 만들고 이를 반영한다. 단일 드라이브에 장애가 발생하면 스트라이프 중 하나가 고장 났으며, 이 시점에서 중복 없이 RAID 0으로 효과적으로 실행되고 있다. RAID 1+0보다 재구축 시 위험성이 크게 높아지는데, 이는 나머지 스트라이프의 모든 드라이브의 데이터를 한 드라이브에서 읽는 것이 아니라 읽어야 하기 때문에 복구할 수 없는 읽기 오류(URE)의 가능성이 높아지고 재구축 창이 크게 확장되기 때문이다.


RAID 1+0: (RAID 10 참조) 일련의 미러링된 드라이브에서 스트라이프 세트를 생성한다. 모든 드라이브를 잃지 않는 한 어레이는 여러 개의 드라이브 손실을 입힐 수 있다.




LIST

댓글

추천 글