RAID
복수 배열 독립 디스크(Redundant Array of Independent Disks 혹은 Redundant Array of Inexpensive Disks) 또는 RAID는 데이터를 하나 이상의 보조 기억 장치에 기록하는 컴퓨터 데이터 저장에 대한 조직적인 접근 방식이다. 모든 데이터를 단일 하드 디스크 드라이브나 솔리드 스테이트 드라이브에 저장하는 대신, RAID는 두 개 이상의 장치를 하나의 디스크 어레이로 조정한다. 컴퓨터가 보조 기억 장치에 데이터를 기록할 때, RAID 시스템은 어레이 전반에 데이터를 분산시킨다. 이를 수행하는 방법에는 여러 가지가 있으며, 이러한 다양한 구성을 RAID 레벨이라고 부른다.
RAID 레벨은 제공하는 중복성의 양과 필요한 최소 드라이브 수뿐만 아니라, 상대적인 복잡성, 성능, 에너지 효율성, 결함 허용 범위 및 가용성에 따라 구분된다. RAID에서 사용되는 핵심 기술은 1970년대와 1980년대에 고안되었다. 읽기/쓰기 효율을 높이기 위한 데이터 스트라이핑과 데이터 복구를 위한 디스크 미러링 또는 패리티 드라이브가 그것이다. RAID 1을 제외한 모든 표준 RAID 레벨은 스토리지 가상화를 사용하여 여러 저장 장치를 하나의 논리적 스토리지 볼륨으로 추상화한다.
원래 RAID는 저렴한 디스크의 중복 어레이(redundant array of inexpensive disks)의 두문자어로 만들어졌다.[1][2] 이후 RAID 자문위원회(1992년 설립)는 이 두문자어를 독립된 디스크의 중복 어레이(redundant array of independent disks)로 재정의했다.[2] 데이터 스트라이핑과 중복된 온라인 디스크가 등장하기 전에는 고용량, 고가용성 데이터 저장을 위해 메인프레임에 연결된 소위 SLED("단일 대형 고가 디스크", single, large, expensive disks)에 의존하는 것이 일반적이었다.[1][3] RAID는 메인프레임 컴퓨터뿐만 아니라 개인용 컴퓨터, 슈퍼컴퓨터, 파일 서버, 데이터베이스 서버, 웹 서버 및 네트워크 결합 스토리지 장치에 배포되었다.
역사
[원본 편집]RAID라는 용어는 1987년 캘리포니아 대학교 버클리의 데이비드 패터슨, 가스 깁슨, 랜디 카츠에 의해 만들어졌다. 1988년 6월 SIGMOD 컨퍼런스에서 발표된 "저렴한 디스크의 중복 어레이(RAID)에 대한 사례"라는 논문에서, 그들은 당시 최고 성능의 메인프레임 컴퓨터 디스크 드라이브가 성장하는 개인용 컴퓨터 시장을 위해 제조된 (상대적으로 저렴한) 디스크 드라이브 어레이에 의해 성능이 추월될 수 있다고 주장했다. 하드 디스크 드라이브 오류 발생률은 사용되는 드라이브 수에 비례하여 증가하지만, 데이터를 둘 이상의 디스크에 자동으로 기록하도록 구성하여 컴퓨터 저장 시스템에 중복성을 구축한다면 어레이의 신뢰성은 단일 고용량 드라이브의 신뢰성을 훨씬 초과할 수 있다.[4]
비록 당시에는 해당 용어를 사용하지 않았으나, 1988년 6월 논문에서 명명된 다섯 가지 레벨의 RAID 기술은 논문 발표 이전에도 다음과 같은 다양한 제품에서 사용되고 있었다.[3]
- 미러링 (RAID 1)은 탠덤 논스톱 시스템 등을 포함하여 1970년대에 이미 잘 확립되어 있었다.
- 1977년, IBM의 노먼 켄 오우치는 이후 RAID 4로 명명된 기술을 공개한 특허를 출원했다.[5]
- 1983년경, DEC는 HSC50 하위 시스템의 일부로 미러링된 RA8X 디스크 드라이브(현재의 RAID 1)를 출하하기 시작했다.[6]
- 1986년, IBM의 클라크 외 연구진은 이후 RAID 5로 명명된 기술을 공개한 특허를 출원했다.[7]
- 1988년경, 싱킹 머신즈의 데이터볼트는 디스크 드라이브 어레이에서 오류 정정 코드(현재의 RAID 2)를 사용했다.[8] 유사한 접근 방식이 1960년대 초 IBM 353에서도 사용되었다.[9][10]
업계 제조사들은 나중에 RAID 두문자어를 "독립된 디스크의 중복 어레이"를 의미하도록 재정의했다.[2][11][12][13]
개요
[원본 편집]RAID는 디스크 어레이 내의 각 저장 장치에 역할을 할당하여 보조 기억 장치를 모듈화한다. 어레이의 RAID 레벨은 이러한 구성 장치들의 역할과 관계에 의해 정의된다. 일부 RAID 레벨은 패리티 데이터를 사용하여 결함 허용 범위를 높인다. 대부분의 패리티 데이터는 XOR을 사용하여 계산되지만, RAID 6는 특정 갈루아 필드에서의 덧셈과 곱셈 또는 리드-솔로몬 오류 정정을 사용한다.[14]
RAID는 또한 전체 SSD 시스템의 비용 부담 없이 솔리드 스테이트 드라이브(SSD)를 사용하여 데이터 보안을 제공할 수 있다. 예를 들어, 빠른 SSD를 느린 기계식 하드 디스크 드라이브와 미러링할 수 있다. 이 구성이 상당한 속도 이점을 제공하려면 모든 읽기 작업에 빠른 SSD를 사용하는 적절한 컨트롤러가 필요하다. 아답텍은 이를 "하이브리드 RAID"라고 부른다.[15]
표준 레벨
[원본 편집]원래 RAID에는 5가지 표준 레벨이 있었지만, 여러 중첩된 레벨과 많은 비표준 레벨(대부분 독점 소프트웨어)을 포함하여 많은 변형이 진화했다. RAID 레벨과 관련 데이터 형식은 스토리지 네트워킹 산업 협회(SNIA)의 공통 RAID 디스크 드라이브 형식(DDF) 표준으로 표준화되어 있다.[16][17]
- RAID 0는 블록 레벨 스트라이핑으로 구성되지만, 미러링이나 패리티는 없다. 동일한 용량의 n개 드라이브를 모두 사용한다고 가정할 때, RAID 0 볼륨의 용량은 n개 드라이브 용량의 합계인 스팬 볼륨과 일치한다. 그러나 스트라이핑은 각 파일의 내용을 모든 드라이브에 분산시키기 때문에, 드라이브 중 하나만 고장 나도 전체 RAID 0 볼륨에 접근할 수 없게 된다. 일반적으로 모든 데이터가 손실되며 백업 복사본 없이는 파일을 복구할 수 없다.
- 반면, 파일을 순차적으로 저장하는 스팬 볼륨은 고장 난 드라이브에 저장된 데이터는 잃지만 나머지 드라이브에 저장된 데이터는 보존한다. 그러나 드라이브 고장 후 파일을 복구하는 것은 어려울 수 있으며 종종 파일 시스템의 세부 사항에 따라 달라진다. 어쨌든 고장 난 드라이브에 걸쳐 있거나 그 드라이브에서 시작/종료되는 파일은 영구적으로 손실된다.
- 반대로 RAID 0의 장점은 스팬 볼륨과 달리 읽기 및 쓰기가 병행으로 수행되기 때문에 모든 파일에 대한 읽기 및 쓰기 작업의 처리량이 드라이브 수만큼 배가된다는 것이다.[11] 대가는 드라이브 고장에 대한 취약성 증가이다. RAID 0 설정에서 드라이브 하나가 고장 나면 전체 볼륨이 손실되므로, 볼륨의 평균 고장률은 연결된 드라이브 수에 따라 상승한다. 이로 인해 RAID 0은 데이터 신뢰성이나 결함 허용이 필요한 시나리오에서는 좋지 않은 선택이 된다.
- RAID 1은 패리티나 스트라이핑 없이 데이터 미러링으로 구성된다. 데이터는 두 개 이상의 드라이브에 동일하게 기록되어 드라이브의 "미러링된 세트"를 생성한다. 따라서 모든 읽기 요청은 세트 내의 모든 드라이브에서 처리될 수 있다. 요청이 세트의 모든 드라이브에 브로드캐스트되면, (해당 드라이브의 탐색 시간과 회전 대기 시간에 따라) 데이터를 가장 먼저 액세스하는 드라이브가 요청을 처리할 수 있어 성능이 향상된다. 컨트롤러나 소프트웨어가 최적화되어 있다면, 지속적인 읽기 처리량은 RAID 0과 마찬가지로 세트 내 모든 드라이브 처리량의 합에 도달한다. 대부분의 RAID 1 구현의 실제 읽기 처리량은 가장 빠른 드라이브보다 느리다. 쓰기 처리량은 모든 드라이브를 업데이트해야 하고 가장 느린 드라이브가 쓰기 성능을 제한하기 때문에 항상 더 느리다. 어레이는 적어도 하나의 드라이브가 작동하는 한 계속 작동한다.[11]
- RAID 2는 전용 해밍 코드 패리티를 사용하는 비트 레벨 스트라이핑으로 구성된다. 모든 디스크 스핀들 회전이 동기화되고 각 순차 비트가 서로 다른 드라이브에 있도록 데이터가 스트라이핑된다. 해밍 코드 패리티는 해당 비트들에 대해 계산되어 최소 하나의 패리티 드라이브에 저장된다.[11] 이 레벨은 역사적인 의미만 있을 뿐이다. 초기 일부 기계(예: 싱킹 머신즈 CM-2)에서 사용되었지만,[18] 2014년 현재 상업적으로 판매되는 시스템에서는 사용되지 않는다.[19]
- RAID 3는 전용 패리티를 사용하는 바이트 레벨 스트라이핑으로 구성된다. 모든 디스크 스핀들 회전이 동기화되고 각 순차 바이트가 서로 다른 드라이브에 있도록 데이터가 스트라이핑된다. 패리티는 해당 바이트들에 대해 계산되어 전용 패리티 드라이브에 저장된다.[11] 구현 사례는 존재하지만,[20] RAID 3는 실제로 흔히 사용되지 않는다.
- RAID 4는 전용 패리티를 사용하는 블록 레벨 스트라이핑으로 구성된다. 이 레벨은 이전에 넷앱에서 사용되었으나, 현재는 RAID-DP라고 불리는 두 개의 패리티 디스크를 사용하는 RAID 4의 독점 구현으로 대체되었다.[21] RAID 2 및 3에 비해 RAID 4의 주요 장점은 I/O 병렬성이다. RAID 2 및 3에서는 단일 읽기 I/O 작업에 데이터 드라이브 그룹 전체를 읽어야 하지만, RAID 4에서는 하나의 I/O 읽기 작업이 모든 데이터 드라이브에 분산될 필요가 없다. 결과적으로 더 많은 I/O 작업을 병렬로 실행할 수 있어 작은 전송 성능이 향상된다.[1]
- RAID 5는 분산 패리티를 사용하는 블록 레벨 스트라이핑으로 구성된다. RAID 4와 달리 패리티 정보가 드라이브들 사이에 분산되어 있어, 작동을 위해 하나를 제외한 모든 드라이브가 있어야 한다. 단일 드라이브 고장 시, 이후의 읽기는 분산된 패리티로부터 계산되어 데이터 손실이 발생하지 않는다. RAID 5는 최소 3개의 디스크가 필요하다.[11] 모든 단일 패리티 개념과 마찬가지로, 대규모 RAID 5 구현은 어레이 재구축 시간의 추세와 재구축 중 드라이브 고장 가능성 때문에 시스템 고장에 취약하다(아래 "재구축 시간 증가 및 고장 확률" 섹션 참조).[22] 어레이를 재구축하려면 모든 디스크에서 모든 데이터를 읽어야 하므로, 두 번째 드라이브 고장과 전체 어레이 손실의 가능성이 열린다.
- RAID 6은 이중 분산 패리티를 사용하는 블록 레벨 스트라이핑으로 구성된다. 이중 패리티는 최대 두 개의 드라이브 고장까지 결함 허용을 제공한다. 이는 고용량 드라이브를 복원하는 데 시간이 더 오래 걸리기 때문에 대규모 RAID 그룹을 더 실용적으로 만들며, 특히 고가용성 시스템에 적합하다. RAID 6은 최소 4개의 디스크가 필요하다. RAID 5와 마찬가지로 단일 드라이브 고장은 고장 난 드라이브가 교체될 때까지 전체 어레이의 성능 저하를 초래한다.[11] 다양한 출처와 제조사의 드라이브를 사용하는 RAID 6 어레이를 통해 RAID 5와 관련된 대부분의 문제를 완화할 수 있다. 드라이브 용량이 커지고 어레이 크기가 커질수록 RAID 5 대신 RAID 6를 선택하는 것이 더 중요해진다.[23] RAID 10 또한 이러한 문제를 최소화한다.[24]
중첩 (하이브리드) RAID
[원본 편집]원래 하이브리드 RAID라고 불렸던 기술로,[25] 많은 스토리지 컨트롤러가 RAID 레벨을 중첩할 수 있도록 허용한다. RAID의 구성 요소는 개별 드라이브이거나 어레이 자체일 수 있다. 어레이는 1단계 이상 깊이 중첩되는 경우가 드물다.
최종 어레이는 최상위 어레이로 알려져 있다. 최상위 어레이가 RAID 0일 때(예: RAID 1+0 및 RAID 5+0), 대부분의 벤더는 "+"를 생략한다(각각 RAID 10 및 RAID 50이 됨).
- RAID 0+1: 두 개의 스트라이프를 생성하고 이를 미러링한다. 단일 드라이브 고장이 발생하면 미러 중 하나가 고장 난 것이며, 이 시점부터는 중복성 없는 RAID 0으로 효과적으로 작동한다. 재구축 중에는 RAID 1+0보다 훨씬 높은 위험이 수반되는데, 단일 드라이브가 아닌 나머지 스트라이프의 모든 드라이브에서 모든 데이터를 읽어야 하므로 복구 불가능한 읽기 오류(URE)가 발생할 가능성이 커지고 재구축 시간이 크게 늘어나기 때문이다.[26][27][28]
- RAID 1+0: (RAID 10 참조) 일련의 미러링된 드라이브로부터 스트라이프 세트를 생성한다. 이 어레이는 어떤 미러에서도 모든 드라이브를 잃지 않는 한 여러 개의 드라이브 손실을 견딜 수 있다.[29]
- JBOD RAID N+N: JBOD(단순 디스크 묶음)를 사용하면 디스크를 연결할 수 있을 뿐만 아니라 RAID 세트와 같은 볼륨도 연결할 수 있다. 드라이브 용량이 커짐에 따라 쓰기 지연과 재구축 시간이 급격히 증가한다(특히 위에서 설명한 RAID 5 및 RAID 6의 경우). 대규모 RAID N 세트를 더 작은 하위 세트로 나누고 이를 선형 JBOD로 연결하면 쓰기 및 재구축 시간을 줄일 수 있다. 디스크 어레이 컨트롤러가 선형 JBOD와 RAID N의 중첩을 지원하지 않는 경우, 하나 이상의 하드웨어 RAID 컨트롤러 내에 생성된 별도의 RAID N 하위 세트 볼륨을 조합하여 OS 레벨의 소프트웨어 RAID로 선형 JBOD를 구현할 수 있다. 급격한 속도 증가 외에도 이는 상당한 이점을 제공한다. 즉, 작은 디스크 세트로 선형 JBOD를 시작하고 나중에 다른 크기의 디스크로 전체 세트를 확장할 수 있다는 것이다(시간이 지나면 더 큰 용량의 디스크가 시장에 출시되기 때문). 재해 복구 측면에서도 또 다른 장점이 있다(하나의 RAID N 하위 세트가 실패하더라도 다른 RAID N 하위 세트의 데이터는 손실되지 않아 복구 시간이 단축됨).
비표준 레벨
[원본 편집]기본적인 번호가 매겨진 RAID 레벨 외에도 많은 구성이 가능하며, 많은 회사, 조직 및 그룹이 소규모 틈새 그룹의 특수한 요구 사항을 충족하도록 설계된 자체 비표준 구성을 만들었다. 이러한 구성에는 다음이 포함된다.
- 리눅스 MD RAID 10은 일반 RAID 드라이버를 제공하는데, "near" 레이아웃에서는 기본적으로 드라이브 2개인 표준 RAID 1 및 드라이브 4개인 표준 RAID 1+0으로 설정된다. 그러나 홀수를 포함하여 임의의 수의 드라이브를 포함할 수 있다. "far" 레이아웃을 사용하면 MD RAID 10은
f2레이아웃의 드라이브 2개만으로도 스트라이핑과 미러링을 동시에 실행할 수 있다. 이는 스트라이핑된 읽기로 미러링을 실행하여 RAID 0의 읽기 성능을 제공한다. 리눅스 소프트웨어 RAID가 제공하는 일반 RAID 1은 읽기를 스트라이핑하지 않지만 병렬로 읽기를 수행할 수 있다.[29][30][31] - 하둡은 단일 HDFS 파일 내의 블록 스트라이프를 XOR하여 패리티 파일을 생성하는 RAID 시스템을 갖추고 있다.[32]
- BeeGFS와 러스터 같은 병렬 파일 시스템은 여러 서버의 처리량과 용량을 통합하기 위해 내부 스트라이핑(파일 기반 RAID0과 유사) 및 복제(파일 기반 RAID10과 유사) 옵션을 갖추고 있으며, 일반적으로 디스크 고장을 투명하게 처리하기 위해 하위 RAID 위에 구축된다.
- 디클러스터드 RAID는 저장 하위 시스템 내의 모든 디스크(수백 개일 수 있음)에 데이터의 이중(또는 그 이상) 사본을 분산시키고, 몇 개의 디스크 고장에 대비하여 충분한 예비 용량을 확보해 둔다. 분산은 임의성처럼 보이는 알고리즘을 기반으로 한다. 하나 이상의 디스크가 고장 나면 누락된 사본이 해당 예비 용량에 다시 임의로 재구축된다. 재구축이 나머지 모든 디스크로부터 그리고 모든 디스크로 수행되기 때문에 기존 RAID보다 훨씬 빠르게 작동하여 스토리지 시스템 클라이언트에 미치는 전반적인 영향을 줄인다.
구현
[원본 편집]여러 드라이브에 걸친 데이터 분산은 전용 컴퓨터 하드웨어 또는 소프트웨어에 의해 관리될 수 있다. 소프트웨어 솔루션은 운영체제의 일부이거나, 표준 드라이브 컨트롤러와 함께 제공되는 펌웨어 및 드라이버의 일부이거나(소위 "하드웨어 지원 소프트웨어 RAID"), 하드웨어 RAID 컨트롤러 내에 완전히 상주할 수 있다.
하드웨어 기반
[원본 편집]하드웨어 RAID 컨트롤러는 운영체제가 부팅되기 전에 카드 바이오스 또는 옵션 ROM을 통해 구성할 수 있으며, 운영체제가 부팅된 후에는 각 컨트롤러 제조사에서 제공하는 독점 구성 유틸리티를 사용할 수 있다. 유닉스의 Ifconfig처럼 일반적인 운영체제 패러다임을 통해 완전히 구성 및 서비스될 수 있고 타사 도구가 필요 없는 이더넷용 네트워크 인터페이스 컨트롤러와 달리, 각 RAID 컨트롤러 제조사는 일반적으로 지원하기로 결정한 각 운영체제에 대해 자체 독점 소프트웨어 도구를 제공하여 공급업체 종속을 유도하고 신뢰성 문제에 기여한다.[33]
예를 들어 FreeBSD에서 아답텍 RAID 컨트롤러의 구성에 접근하려면 사용자가 리눅스 호환 레이어를 활성화하고 아답텍의 리눅스 도구를 사용해야 하므로,[34] 특히 장기적인 관점에서 볼 때 설정의 안정성, 신뢰성 및 보안을 저해할 잠재적 위험이 있다.[33]
일부 다른 운영체제는 모든 RAID 컨트롤러와 인터페이스하기 위한 자체 범용 프레임워크를 구현하고, RAID 볼륨 상태를 모니터링하는 도구뿐만 아니라 재부팅하여 카드 바이오스로 들어갈 필요 없이 운영체제 내에서 LED 깜박임을 통한 드라이브 식별, 알람 관리 및 핫 스페어 지정을 용이하게 하는 도구를 제공한다. 예를 들어, 이는 OpenBSD가 2005년에 bio(4) 의사 장치와 bioctl 유틸리티를 통해 취한 접근 방식이며, 이는 볼륨 상태를 제공하고 LED/알람/핫스페어 제어뿐만 아니라 상태 모니터링을 위한 센서(드라이브 센서 포함)를 허용한다.[35] 이 접근 방식은 이후 2007년에 NetBSD에 의해서도 채택 및 확장되었다.[36]
소프트웨어 기반
[원본 편집]소프트웨어 RAID 구현은 많은 현대 운영체제에서 제공된다. 소프트웨어 RAID는 다음과 같이 구현될 수 있다.
- 여러 장치를 추상화하여 단일 가상 장치를 제공하는 레이어(예: 리눅스 커널의 md 및 OpenBSD의 softraid)
- 더 일반적인 논리 볼륨 관리자(Veritas 또는 LVM과 같이 대부분의 서버급 운영체제와 함께 제공됨)
- 파일 시스템의 구성 요소(예: ZFS, Spectrum Scale 또는 Btrfs)
- 모든 파일 시스템 위에 상주하며 사용자 데이터에 패리티 보호를 제공하는 레이어(예: RAID-F)[37]
일부 고급 파일 시스템은 타사 논리 볼륨 관리자의 도움 없이 여러 저장 장치에 걸쳐 직접 데이터를 구성하도록 설계되었다.

- ZFS는 RAID 0, RAID 1, RAID 5(RAID-Z1) 단일 패리티, RAID 6(RAID-Z2) 이중 패리티 및 RAID 7이라고도 하는 삼중 패리티 버전(RAID-Z3)의 등가물을 지원한다.[38] 항상 최상위 vdev에 스트라이핑하므로 1+0, 5+0, 6+0 중첩 RAID 레벨(및 스트라이핑된 삼중 패리티 세트)의 등가물을 지원하지만 다른 중첩 조합은 지원하지 않는다. ZFS는 솔라리스 및 일루모스의 기본 파일 시스템이며, FreeBSD와 리눅스에서도 사용할 수 있다. 오픈 소스 ZFS 구현은 OpenZFS 프로젝트 우산 아래에서 활발히 개발되고 있다.[39][40][41][42][43]
- Spectrum Scale은 당초 미디어 스트리밍과 확장 가능한 분석을 위해 IBM에서 개발되었으며, 최대 n+3까지의 디클러스터드 RAID 보호 방식을 지원한다. 특징은 데이터 청크가 n+0 중복성에 도달할 때까지 백그라운드에서 낮은 영향으로 실행되다가, 해당 청크를 최소 n+1로 빠르게 재구축하는 동적 재구축 우선순위이다. 또한 Spectrum Scale은 메트로 거리 RAID 1을 지원한다.[44]
- Btrfs는 RAID 0, RAID 1 및 RAID 10을 지원한다(RAID 5 및 6은 개발 중이다).[45][46]
- XFS는 원래 여러 물리적 저장 장치의 연결, 미러링 및 스트라이핑을 지원하는 통합 볼륨 관리자를 제공하도록 설계되었다.[47] 그러나 리눅스 커널의 XFS 구현에는 통합 볼륨 관리자가 누락되어 있다.[48]
다음을 포함하여 많은 운영체제가 RAID 구현을 제공한다.
- 휴렛 팩커드의 OpenVMS 운영체제는 RAID 1을 지원한다. "섀도 세트"라고 불리는 미러링된 디스크는 재해 복구를 돕기 위해 서로 다른 위치에 있을 수 있다.[49]
- 애플의 MacOS 및 macOS 서버는 기본적으로 RAID 0, RAID 1 및 RAID 1+0을 지원하며,[50][51] 이는 디스크 유틸리티 또는 명령줄 인터페이스로 생성할 수 있다. 반면 RAID 4 및 RAID 5는 OWC의 타사 소프트웨어인 SoftRAID를 사용해야만 생성할 수 있으며, SoftRAID 액세스용 드라이버는 macOS 13.3부터 기본적으로 포함되어 있다.
- FreeBSD는 GEOM 모듈과 ccd를 통해 RAID 0, RAID 1, RAID 3, RAID 5 및 모든 중첩 구성을 지원한다.[52][53][54]
- 리눅스의 md는 RAID 0, RAID 1, RAID 4, RAID 5, RAID 6 및 모든 중첩 구성을 지원한다.[55] 특정 형태 변경/크기 조정/확장 작업도 지원된다.[56]
- 마이크로소프트 윈도우는 다양한 소프트웨어 구현을 사용하여 RAID 0, RAID 1 및 RAID 5를 지원한다. 윈도우 2000과 함께 도입된 논리 디스크 관리자는 동적 디스크를 사용하여 RAID 0, RAID 1 및 RAID 5 볼륨을 생성할 수 있게 했으나, 이는 윈도우 8 출시 전까지 윈도우의 프로페셔널 및 서버 에디션으로만 제한되었다.[57][58] 윈도우 XP는 RAID 0, 1, 5 지원을 해제하도록 수정될 수 있다.[59] 윈도우 8 및 윈도우 서버 2012는 저장소 공간으로 알려진 RAID와 유사한 기능을 도입했으며, 이는 사용자가 폴더별로 미러링, 패리티 또는 중복 없음 여부를 지정할 수 있게 한다. 이러한 옵션은 RAID 1 및 RAID 5와 유사하지만 더 높은 추상화 레벨에서 구현된다.[60]
- NetBSD는 RAIDframe이라는 소프트웨어 구현을 통해 RAID 0, 1, 4, 5를 지원한다.[61]
- OpenBSD는 softraid라는 소프트웨어 구현을 통해 RAID 0, 1, 5를 지원한다.[62]
부팅 드라이브가 고장 나면 시스템은 남은 드라이브에서 부팅할 수 있을 만큼 정교해야 한다. 예를 들어 디스크가 RAID 1(미러링된 드라이브)로 구성된 컴퓨터를 가정해 보자. 어레이의 첫 번째 드라이브가 고장 나면 1단계 부트로더는 장애 발생 시 두 번째 드라이브에서 2단계 부트로더를 로드하려 시도할 만큼 정교하지 않을 수 있다. FreeBSD의 2단계 부트로더는 이러한 어레이에서 커널을 로드할 수 있다.[63]
펌웨어 및 드라이버 기반
[원본 편집]
소프트웨어로 구현된 RAID가 항상 시스템의 부팅 프로세스와 호환되는 것은 아니며, 일반적으로 데스크톱 버전 윈도우에서는 실용적이지 않다. 그러나 하드웨어 RAID 컨트롤러는 비싸고 독점적이다. 이 간극을 메우기 위해 전용 RAID 컨트롤러 칩이 포함되어 있지 않고 단순히 표준 드라이브 컨트롤러 칩이나 독점 펌웨어 및 드라이버가 포함된 칩셋 내장 RAID 기능을 사용하는 저가형 "RAID 컨트롤러"가 도입되었다. 초기 부팅 시에는 펌웨어에 의해 RAID가 구현되고, 운영체제가 완전히 로드되면 드라이버가 제어권을 인계받는다. 따라서 호스트 운영체제에 드라이버 지원이 제공되지 않으면 이러한 컨트롤러는 작동하지 않을 수 있다.[64] 많은 소비자용 메인보드에 구현된 Intel Rapid Storage Technology가 그 예이다.[65][66]
일부 최소한의 하드웨어 지원이 수반되기 때문에 이 구현은 "하드웨어 지원 소프트웨어 RAID",[67] "하이브리드 모델" RAID,[68] 또는 심지어 "가짜 RAID"(fake RAID)라고도 불린다.[69] RAID 5가 지원되는 경우 하드웨어가 하드웨어 XOR 가속기를 제공할 수 있다. 순수 소프트웨어 RAID에 비해 이 모델의 장점은 중복성 모드를 사용하는 경우 운영체제의 드라이버가 인계받기 전의 부팅 프로세스 중에도 (펌웨어 덕분에) 부팅 드라이브가 고장으로부터 보호된다는 것이다.[68]
무결성
[원본 편집]데이터 스크러빙(일부 환경에서는 패트롤 리드라고 함)은 RAID 컨트롤러가 달리 액세스되지 않는 블록을 포함하여 어레이의 모든 블록을 주기적으로 읽고 확인하는 작업이다. 이를 통해 사용 전에 불량 블록을 감지한다.[70] 데이터 스크러빙은 어레이의 각 저장 장치에서 불량 블록을 확인하지만, 어레이의 중복성을 사용하여 단일 드라이브의 불량 블록을 복구하고 복구된 데이터를 드라이브의 다른 곳에 있는 예비 블록에 재할당하기도 한다.[71]
자주 RAID 컨트롤러는 드라이브가 8초 정도 응답하지 않으면 구성 드라이브를 "드롭"(즉, 구성 드라이브가 고장 났다고 가정)하도록 설정된다. 이로 인해 드라이브에 내부 오류 복구 절차를 완료할 충분한 시간이 주어지지 않아 컨트롤러가 정상적인 드라이브를 드롭할 수 있다. 따라서 소비자 시장용 드라이브를 RAID와 함께 사용하는 것은 위험할 수 있으며, 이른바 "기업용" 드라이브는 이러한 오류 복구 시간을 제한하여 위험을 줄인다. 웨스턴 디지털의 데스크톱 드라이브에는 과거에 특정 해결책이 있었다. WDTLER.exe라는 유틸리티는 드라이브의 오류 복구 시간을 제한했다. 이 유틸리티는 오류 복구 시간을 7초로 제한하는 TLER (시간 제한 오류 복구)를 활성화했다. 2009년 9월경 웨스턴 디지털은 데스크톱 드라이브(캐비어 블랙 라인 등)에서 이 기능을 비활성화하여 해당 드라이브를 RAID 구성에 부적합하게 만들었다.[72] 그러나 웨스턴 디지털 기업용 드라이브는 TLER이 활성화된 상태로 공장에서 출하된다. 씨게이트, 삼성, 히타치에서도 유사한 기술이 사용된다. 비 RAID 용도의 경우, 변경할 수 없는 짧은 오류 복구 타임아웃을 가진 기업용 드라이브는 데스크톱 드라이브보다 적합하지 않다.[72] 2010년 하반기에 Smartmontools 프로그램이 ATA 오류 복구 제어 구성을 지원하기 시작하면서, 이 도구를 통해 많은 데스크톱 급 하드 드라이브를 RAID 설정에서 사용할 수 있도록 구성할 수 있게 되었다.[72]
RAID가 물리적 드라이브 고장으로부터 보호할 수는 있지만, 데이터는 여전히 작업자, 소프트웨어, 하드웨어 및 바이러스 파괴에 노출되어 있다. 많은 연구에서 서버 작업자가 결함이 있는 RAID에서 잘못된 드라이브를 교체하여 그 과정에서 (일시적으로라도) 시스템을 무력화하는 것과 같은 작업자 과실을 오작동의 흔한 원인으로 꼽는다.[73][74]
어레이는 복구 능력을 초과하는 파괴적인 고장에 압도될 수 있으며, 전체 어레이가 화재, 자연재해 및 인위적 힘에 의한 물리적 손상 위험에 처할 수 있으나 백업은 오프사이트에 저장할 수 있다. 또한 데이터 손실 없이 새로운 다른 컨트롤러로 마이그레이션하는 것이 항상 가능한 것은 아니기 때문에 어레이는 컨트롤러 고장에도 취약하다.[75]
약점
[원본 편집]상관된 고장
[원본 편집]실제로 드라이브들은 종종 수명이 같고(마모도가 비슷함) 동일한 환경에 처해 있다. 많은 드라이브 고장이 기계적 문제(오래된 드라이브에서 발생 가능성이 높음)로 인해 발생하므로, 이는 드라이브 간의 독립적이고 동일한 고장률 가정을 위반한다. 고장은 사실 통계적으로 상관되어 있다.[11] 실제로 첫 번째 고장이 복구되기 전의 두 번째 고장 가능성(데이터 손실 유발)은 무작위 고장 가능성보다 높다. 최소 4개의 서로 다른 벤더로부터 수집된 약 100,000개의 드라이브를 대상으로 한 연구에서, 동일한 클러스터 내의 두 드라이브가 1시간 이내에 고장 날 확률은 사건이 일정한 평균 속도로 지속적이고 독립적으로 발생하는 과정을 특징짓는 지수 분포에 의해 예측된 것보다 4배 더 컸다. 동일한 10시간 기간 내에 두 번의 고장이 발생할 확률은 지수 분포에 의해 예측된 것보다 2배 더 컸다.[76]
피할 수 있는 상관된 디스크 고장 모드는 배치 상관 디스크 고장으로, 어레이가 동일한 배치에서 생산된 디스크들로 구축되어 디스크들이 짧은 간격으로 연달아 고장 나는 경우이다. 이러한 사건은 드물지만 없는 일은 아니다. 표준 권장 사항은 서로 다른 배치의 디스크, 가능하면 서로 다른 제조사의 디스크를 섞어서 사용하는 것이다.[77] 2021년 연구에 따르면 알리바바의 여러 SSD 기반 데이터 센터에서 배치 상관 고장 패턴이 나타났으며, 최소 2개의 SSD가 있는 노드의 88.6%가 동일한 모델을 사용하고 있었다.[78]
상관된 디스크 고장의 또 다른 원인은 디스크가 아니라 상호 연결, CPU 또는 메모리에 있다. 지앙 외 연구진(2008)은 스토리지 시스템 고장의 20~55%만이 디스크 때문임을 보여주었다. 이러한 부품들 또한 일시적으로 집중되는 상관된 고장 모드를 가지고 있다.[79][80]
재구축 중 복구 불가능한 읽기 오류
[원본 편집]복구 불가능한 읽기 오류(URE)는 섹터 읽기 실패로 나타나며 잠재 섹터 오류(LSE)라고도 한다. 관련 미디어 평가 척도인 복구 불가능한 비트 오류(UBE) 속도는 일반적으로 기업용 드라이브(SCSI, FC, SAS 또는 SATA)의 경우 1015비트당 1비트 미만, 데스크톱 급 드라이브(IDE/ATA/PATA 또는 SATA)의 경우 1014비트당 1비트 미만으로 보장된다. 드라이브 용량의 증가와 대규모 RAID 5 인스턴스로 인해, RAID 세트 재구축 중에 나머지 드라이브 중 하나 이상에서 이러한 오류가 발생할 가능성이 높아졌기 때문에 최대 오류 속도만으로는 성공적인 복구를 보장하기에 불충분하게 되었다.[11][81] 재구축 시 RAID 5와 같은 패리티 기반 방식은 URE가 발생한 섹터뿐만 아니라 패리티 계산을 위해 해당 섹터를 사용하는 재구성된 블록에도 영향을 미치므로 URE의 영향에 특히 취약하다.[82]
RAID 6와 같은 이중 보호 패리티 기반 방식은 이중 드라이브 고장을 허용하는 중복성을 제공하여 이 문제를 해결하려고 시도한다. 단점으로는 이러한 방식은 단일 쓰기 작업 중에 저장 매체에 액세스해야 하는 횟수인 쓰기 페널티가 높다는 점이 있다.[83] RAID 1 및 RAID 10과 같이 데이터를 드라이브 대 드라이브 방식으로 복제(미러링)하는 방식은 패리티 계산이나 스트라이프 세트 간 미러링을 사용하는 방식보다 URE로 인한 위험이 낮다.[24][84] 백그라운드 프로세스로서의 데이터 스크러빙은 URE를 감지하고 복구하는 데 사용될 수 있으며, RAID 재구축 중에 URE가 발생하여 이중 드라이브 고장을 일으키는 위험을 효과적으로 줄여준다. URE의 복구에는 드라이브의 섹터 재매핑 풀을 활용하여 영향을 받은 기본 디스크 섹터를 재매핑하는 작업이 포함된다. 백그라운드 스크러빙 중에 URE가 감지되는 경우, 완전히 작동하는 RAID 세트가 제공하는 데이터 중복성을 통해 누락된 데이터를 재구성하고 재매핑된 섹터에 다시 기록할 수 있다.[85][86]
재구축 시 URE 발생에 따른 RAID 구현의 동작도 중요하다. 일부 구현은 URE 발생 시 어레이에 "펑크"(puncture)를 내어 해당 섹터/블록을 접근 불가로 표시하고 재구축을 계속한다. 다른 구현은 단순히 절차를 중단할 수도 있다.
재구축 시간 증가 및 고장 확률
[원본 편집]드라이브 용량은 전송 속도보다 훨씬 빠른 속도로 성장했으며, 이에 비해 오류 속도는 조금밖에 떨어지지 않았다. 따라서 대용량 드라이브는 재구축에 며칠은 아니더라도 몇 시간이 걸릴 수 있으며, 그동안 다른 드라이브가 고장 나거나 아직 감지되지 않은 읽기 오류가 나타날 수 있다. 전체 어레이가 여전히 축소된 용량으로 작동 중인 경우에도 재구축 시간은 제한된다.[87] 하나의 중복 드라이브만 있는 어레이(RAID 레벨 3, 4, 5 및 "클래식" 2드라이브 RAID 1에 해당)의 경우, 두 번째 드라이브 고장은 어레이의 완전한 고장을 초래한다. 개별 드라이브의 평균 고장 간격(MTBF)은 시간이 지남에 따라 증가했지만, 이 증가는 드라이브의 저장 용량 증가 속도를 따라가지 못했다. 단일 드라이브 고장 후 어레이를 재구축하는 시간과 재구축 중 두 번째 고장이 발생할 가능성은 시간이 지남에 따라 증가했다.[22]
일부 평론가들은 RAID 6가 문제를 조금 더 뒤로 미룰 뿐이라는 점에서 단지 "임시방편"일 뿐이라고 선언했다.[22] 그러나 베리만 외 연구진의 2006년 넷앱 연구에 따르면, 범용 드라이브를 사용하더라도 제대로 된 RAID 6 구현의 경우 고장 확률은 (RAID 5에 비해) 약 3,800배 감소한다.[88] 그럼에도 불구하고 현재 관찰되는 기술 추세가 변하지 않는다면, 2019년의 RAID 6 어레이는 2010년의 RAID 5 어레이와 동일한 고장 확률을 갖게 될 것이다.[88]
RAID 10과 같은 미러링 방식은 어레이 세트 내 모든 드라이브의 블록 복사가 필요한 RAID 6와 같은 패리티 방식에 비해 단일 고장 드라이브의 복사만 필요하므로 복구 시간이 제한적이다. 이러한 긴 재구축 시간 동안 추가 드라이브 고장에 대한 복원력을 높이기 위한 한 가지 방법으로 삼중 패리티 방식이나 삼중 미러링이 제안되었다.[88]
원자성
[원본 편집]시스템 충돌이나 기타 쓰기 작업 중단은 쓰기 프로세스의 비원자성으로 인해 패리티가 데이터와 일치하지 않는 상태를 초래할 수 있으며, 이 경우 디스크 고장 시 복구에 패리티를 사용할 수 없다. 이를 흔히 쓰기 홀(write hole)이라고 하며, 이는 디스크로의 쓰기 배출(destaging) 중단으로 인해 발생하는 구형 및 저가형 RAID의 고질적인 데이터 손상 문제이다.[89] 쓰기 홀은 몇 가지 방법으로 해결될 수 있다.
- 로그 선행 기입.
- 쓰기 의도 로깅. Mdadm은 "쓰기 의도 비트맵"을 사용한다. 시작 시 불완전하게 기록된 것으로 표시된 위치를 발견하면 다시 동기화한다. 이는 쓰기 홀을 닫아주지만 전체 WAL과 달리 전송 중인 데이터의 손실을 방지하지는 못한다.[90][94]
- 부분 패리티. Mdadm은 수정된 청크와 결합하여 원래 패리티를 복구하는 "부분 패리티"를 저장할 수 있다. 이는 쓰기 홀을 닫아주지만, 전송 중인 데이터 손실로부터 보호하지는 못한다.[95]
- 동적 스트라이프 크기. RAID-Z는 각 블록이 고유한 스트라이프가 되도록 보장하여 모든 블록이 완전하도록 한다. 카피 온 라이트(COW) 트랜잭션 시맨틱은 스트라이프와 관련된 메타데이터를 보호한다.[96] 단점은 IO 파편화이다.[97]
- 사용된 스트라이프 덮어쓰기 방지. 복사 가비지 컬렉터를 사용하는 Bcachefs는 이 옵션을 선택한다. COW는 스트라이프된 데이터에 대한 참조를 보호한다.[97]
쓰기 홀은 트랜잭션 기능을 활용하지 않는 중복 저장 시스템에서 제대로 이해되지 않고 거의 언급되지 않는 고장 모드이다. 데이터베이스 연구원인 짐 그레이는 관계형 데이터베이스 상용화 초기 시절에 "제자리 업데이트는 독이 든 사과이다"(Update in Place is a Poison Apple)라고 썼다.[98]
쓰기 캐시 신뢰성
[원본 편집]쓰기 캐시 신뢰성, 특히 후행 쓰기 캐시(데이터가 비휘발성 저장 매체에 기록될 때가 아니라 캐시에 기록되는 즉시 기록된 것으로 보고하는 캐싱 시스템)가 장착된 장치와 관련된 우려가 있다. 시스템에 전원 손실이나 기타 중대한 고장이 발생하면 데이터가 비휘발성 저장소에 도달하기 전에 캐시에서 영구적으로 손실될 수 있다. 이러한 이유로 우수한 후행 쓰기 캐시 구현은 시스템 고장(전원 고장 포함) 시에도 캐시 내용을 보존하고 시스템 재시작 시 캐시를 비우기 위해 중복 배터리 전원과 같은 메커니즘을 포함한다.[99]
같이 보기
[원본 편집]각주
[원본 편집]- 1 2 3 Patterson, David; Gibson, Garth A.; Katz, Randy (1988). 《A Case for Redundant Arrays of Inexpensive Disks (RAID)》 (PDF). SIGMOD Conferences. 2024년 1월 3일에 확인함.
- 1 2 3 Gupta, Meeta (2002). 〈RAID Technology and Fibre Channel Vendors〉. 《Storage Area Network Fundamentals》. Cisco Press Networking Technology. Indianapolis: Cisco Press. 261쪽. ISBN 978-1-58705-065-7. OCLC 52356423. 2026년 1월 27일에 확인함 – Google Books 경유.
Originally referred to as Redundant Array of Inexpensive Disks, the term RAID was first published in the late 1980s by Patterson, Gibson, and Katz of the University of California at Berkeley. (The RAID Advisory Board has since substituted the term Inexpensive with Independent.)
- 1 2 Katz, Randy H. (October 2010). “RAID: A Personal Recollection of How Storage Became a System” (PDF). 《eecs.umich.edu》. IEEE Computer Society. 2015년 1월 18일에 확인함.
We were not the first to think of the idea of replacing what Patterson described as a slow large expensive disk (SLED) with an array of inexpensive disks. For example, the concept of disk mirroring, pioneered by Tandem, was well known, and some storage products had already been constructed around arrays of small disks.
- ↑ Hayes, Frank (2003년 11월 17일). “The Story So Far”. 《Computerworld》. 2016년 11월 18일에 확인함.
Patterson recalled the beginnings of his RAID project in 1987. [...] 1988: David A. Patterson leads a team that defines RAID standards for improved performance, reliability and scalability.
- ↑ US patent 4092732, Norman Ken Ouchi, "System for Recovering Data Stored in Failed Memory Unit", issued 1978-05-30
- ↑ “HSC50/70 Hardware Technical Manual” (PDF). DEC. July 1986. 29, 32쪽. 2016년 3월 4일에 원본 문서 (PDF)에서 보존된 문서. 2014년 1월 3일에 확인함.
- ↑ US patent 4761785, Brian E. Clark, et al., "Parity Spreading to Enhance Storage Access", issued 1988-08-02
- ↑ US patent 4899342, David Potter et al., "Method and Apparatus for Operating Multi-Unit Array of Memories", issued 1990-02-06 See also The Connection Machine (1988)
- ↑ “IBM 7030 Data Processing System: Reference Manual” (PDF). 《bitsavers.trailing-edge.com》. IBM. 1960. 157쪽. 2015년 1월 17일에 확인함.
Since a large number of bits are handled in parallel, it is practical to use error checking and correction (ECC) bits, and each 39 bit byte is composed of 32 data bits and seven ECC bits. The ECC bits accompany all data transferred to or from the high-speed disks, and, on reading, are used to correct a single bit error in a byte and detect double and most multiple errors in a byte.
- ↑ “IBM Stretch (aka IBM 7030 Data Processing System)”. 《brouhaha.com》. 2009년 6월 18일. 2015년 1월 17일에 확인함.
A typical IBM 7030 Data Processing System might have been comprised of the following units: [...] IBM 353 Disk Storage Unit – similar to IBM 1301 Disk File, but much faster. 2,097,152 (2^21) 72-bit words (64 data bits and 8 ECC bits), 125,000 words per second
- 1 2 3 4 5 6 7 8 9 Chen, Peter; Lee, Edward; Gibson, Garth; Katz, Randy; Patterson, David (1994). “RAID: High-Performance, Reliable Secondary Storage”. 《ACM Computing Surveys》 26 (2): 145–185. CiteSeerX 10.1.1.41.3889. doi:10.1145/176979.176981. S2CID 207178693.
- ↑ Donald, L. (2003). 《MCSA/MCSE 2006 JumpStart Computer and Network Basics》 2판. Glasgow: SYBEX.
- ↑ Howe, Denis (편집). “Redundant Arrays of Independent Disk”. 《Free On-line Dictionary of Computing (FOLDOC)》. Imperial College Department of Computing. 2011년 11월 10일에 확인함.
- ↑ Dawkins, Bill and Jones, Arnold. "Common RAID Disk Data Format Specification" 보관됨 2009-08-24 - 웨이백 머신 [Storage Networking Industry Association] Colorado Springs, 28 July 2006. Retrieved on 22 February 2011.
- ↑ “Adaptec Hybrid RAID Solutions” (PDF). 《Adaptec.com》. Adaptec. 2012. 2013년 9월 7일에 확인함.
- ↑ “Common RAID Disk Drive Format (DDF) standard”. 《SNIA.org》. SNIA. 2012년 8월 26일에 확인함.
- ↑ “SNIA Dictionary”. 《SNIA.org》. SNIA. 2010년 1월 9일에 원본 문서에서 보존된 문서. 2010년 8월 24일에 확인함.
- ↑ Tanenbaum, Andrew S. 《Structured Computer Organization 6th ed.》. 95쪽.
- ↑ Hennessy, John; Patterson, David (2006). 《Computer Architecture: A Quantitative Approach, 4th ed》. Morgan Kaufmann. 362쪽. ISBN 978-0123704900.
- ↑ “FreeBSD Handbook, Chapter 20.5 GEOM: Modular Disk Transformation Framework”. 2012년 12월 20일에 확인함.
- ↑ White, Jay; Lueth, Chris (May 2010). “RAID-DP:NetApp Implementation of Double Parity RAID for Data Protection. NetApp Technical Report TR-3298”. 2013년 3월 2일에 확인함.
- 1 2 3 Newman, Henry (2009년 9월 17일). “RAID's Days May Be Numbered”. 《EnterpriseStorageForum》. 2010년 9월 7일에 확인함.
- ↑ “Why RAID 6 stops working in 2019”. 《ZDNet》. 2010년 2월 22일. 2010년 8월 15일에 원본 문서에서 보존된 문서.
- 1 2 Lowe, Scott (2009년 11월 16일). “How to protect yourself from RAID-related Unrecoverable Read Errors (UREs). Techrepublic.”. 2012년 12월 1일에 확인함.
- ↑ Vijayan, S.; Selvamani, S.; Vijayan, S (1995). 〈Dual-Crosshatch Disk Array: A Highly Reliable Hybrid-RAID Architecture〉. 《Proceedings of the 1995 International Conference on Parallel Processing: Volume 1》. CRC Press. I–146ff쪽. ISBN 978-0-8493-2615-8 – Google Books 경유.
- ↑ “Why is RAID 1+0 better than RAID 0+1?”. 《aput.net》. 2016년 5월 23일에 확인함.
- ↑ “RAID 10 Vs RAID 01 (RAID 1+0 Vs RAID 0+1) Explained with Diagram”. 《www.thegeekstuff.com》. 2016년 5월 23일에 확인함.
- ↑ “Comparing RAID 10 and RAID 01 | SMB IT Journal”. 《www.smbitjournal.com》. 2014년 7월 30일. 2016년 5월 23일에 확인함.
- 1 2 Jeffrey B. Layton: "Intro to Nested-RAID: RAID-01 and RAID-10", Linux Magazine, January 6, 2011
- ↑ “Performance, Tools & General Bone-Headed Questions”. tldp.org. 2013년 12월 25일에 확인함.
- ↑ “Main Page – Linux-raid”. osdl.org. 2010년 8월 20일. 2008년 7월 5일에 원본 문서에서 보존된 문서. 2010년 8월 24일에 확인함.
- ↑ “Hdfs Raid”. Hadoopblog.blogspot.com. 2009년 8월 28일. 2010년 8월 24일에 확인함.
- 1 2 “3.8: "Hackers of the Lost RAID"”. 《OpenBSD Release Songs》. OpenBSD. 2005년 11월 1일. 2019년 3월 23일에 확인함.
- ↑ Long, Scott; Adaptec, Inc (2000). “aac(4) — Adaptec AdvancedRAID Controller driver”. 《BSD Cross Reference》. FreeBSD., 〈aac -- Adaptec AdvancedRAID Controller driver〉. 《FreeBSD Manual Pages》. FreeBSD.
- ↑ Raadt, Theo de (2005년 9월 9일). “RAID management support coming in OpenBSD 3.8” (메일링 리스트). 《misc@》 (OpenBSD).
- ↑ Murenin, Constantine A. (2010년 5월 21일). 〈1.1. Motivation; 4. Sensor Drivers; 7.1. NetBSD envsys / sysmon〉 (학위논문). 《OpenBSD Hardware Sensors — Environmental Monitoring and Fan Control.》. 워털루 대학교: UWSpace. hdl:10012/5234. Document ID: ab71498b6b1a60ff817b29d56997a418.
- ↑ “RAID over File System”. 2013년 11월 9일에 원본 문서에서 보존된 문서. 2014년 7월 22일에 확인함.
- ↑ “ZFS Raidz Performance, Capacity and Integrity”. 《calomel.org》. 2017년 6월 26일에 확인함.
- ↑ “ZFS -illumos”. illumos.org. 2014년 9월 15일. 2019년 3월 15일에 원본 문서에서 보존된 문서. 2016년 5월 23일에 확인함.
- ↑ “Creating and Destroying ZFS Storage Pools – Oracle Solaris ZFS Administration Guide”. Oracle Corporation. 2012년 4월 1일. 2014년 7월 27일에 확인함.
- ↑ “20.2. The Z File System (ZFS)”. 《freebsd.org》. 2014년 7월 3일에 원본 문서에서 보존된 문서. 2014년 7월 27일에 확인함.
- ↑ “Double Parity RAID-Z (raidz2) (Solaris ZFS Administration Guide)”. Oracle Corporation. 2014년 7월 27일에 확인함.
- ↑ “Triple Parity RAIDZ (raidz3) (Solaris ZFS Administration Guide)”. Oracle Corporation. 2014년 7월 27일에 확인함.
- ↑ Deenadhayalan, Veera (2011). “General Parallel File System (GPFS) Native RAID” (PDF). 《UseNix.org》. IBM. 2014년 9월 28일에 확인함.
- ↑ “Btrfs Wiki: Feature List”. 2012년 11월 7일. 2012년 11월 16일에 확인함.
- ↑ “Btrfs Wiki: Changelog”. 2012년 10월 1일. 2012년 11월 14일에 확인함.
- ↑ Trautman, Philip; Mostek, Jim. “Scalability and Performance in Modern File Systems”. 《linux-xfs.sgi.com》. 2015년 4월 22일에 원본 문서에서 보존된 문서. 2015년 8월 17일에 확인함.
- ↑ “Linux RAID Setup – XFS”. 《kernel.org》. 2013년 10월 5일. 2015년 8월 17일에 확인함.
- ↑ Hewlett Packard Enterprise. “HPE Support document - HPE Support Center”. 《support.hpe.com》.
- ↑ “Mac OS X: How to combine RAID sets in Disk Utility”. 2010년 1월 4일에 확인함.
- ↑ “Apple Mac OS X Server File Systems”. 2008년 4월 23일에 확인함.
- ↑ “FreeBSD System Manager's Manual page for GEOM(8)”. 2009년 3월 19일에 확인함.
- ↑ “freebsd-geom mailing list – new class / geom_raid5”. 2006년 7월 6일. 2009년 3월 19일에 확인함.
- ↑ “FreeBSD Kernel Interfaces Manual for CCD(4)”. 2009년 3월 19일에 확인함.
- ↑ “The Software-RAID HowTo”. 2008년 11월 10일에 확인함.
- ↑ “mdadm(8) – Linux man page”. 《Linux.Die.net》. 2014년 11월 20일에 확인함.
- ↑ “Windows Vista support for large-sector hard disk drives”. 《Microsoft》. 2007년 5월 29일. 2007년 7월 3일에 원본 문서에서 보존된 문서. 2007년 10월 8일에 확인함.
- ↑ “You cannot select or format a hard disk partition when you try to install Windows Vista, Windows 7 or Windows Server 2008 R2”. Microsoft. 2011년 9월 14일. 2011년 3월 3일에 원본 문서에서 보존된 문서. 2009년 12월 17일에 확인함.
- ↑ “Using Windows XP to Make RAID 5 Happen”. Tom's Hardware. 2004년 11월 19일. 2010년 8월 24일에 확인함.
- ↑ Sinofsky, Steven (2012년 1월 5일). “Virtualizing storage for scale, resiliency, and efficiency”. Building Windows 8 blog. 2013년 5월 9일에 원본 문서에서 보존된 문서. 2012년 1월 6일에 확인함.
- ↑ Metzger, Perry (1999년 5월 12일). “NetBSD 1.4 Release Announcement”. 《NetBSD.org》. The NetBSD Foundation. 2013년 1월 30일에 확인함.
- ↑ “OpenBSD softraid man page”. 《OpenBSD.org》. 2018년 2월 3일에 확인함.
- ↑ “FreeBSD Handbook”. 《Chapter 19 GEOM: Modular Disk Transformation Framework》. 2009년 3월 19일에 확인함.
- ↑ “SATA RAID FAQ”. Ata.wiki.kernel.org. 2011년 4월 8일. 2012년 8월 26일에 확인함.
- ↑ “Red Hat Enterprise Linux – Storage Administrator Guide – RAID Types”. 《redhat.com》.
- ↑ Russel, Charlie; Crawford, Sharon; Edney, Andrew (2011). 《Working with Windows Small Business Server 2011 Essentials》. O'Reilly Media, Inc. 90쪽. ISBN 978-0-7356-5670-3 – Google Books 경유.
- ↑ Block, Warren. “19.5. Software RAID Devices”. 《freebsd.org》. 2014년 7월 27일에 확인함.
- 1 2 “Hardware RAID vs. Software RAID: Which Implementation is Best for my Application? Adaptec Whitepaper” (PDF). 《adaptec.com》.
- ↑ Smith, Gregory (2010). 《PostgreSQL 9.0: High Performance》. Packt Publishing Ltd. 31쪽. ISBN 978-1-84951-031-8 – Google Books 경유.
- ↑ Ulf Troppens, Wolfgang Mueller-Friedt, Rainer Erkens, Rainer Wolafka, Nils Haustein. Storage Networks Explained: Basics and Application of Fibre Channel SAN, NAS, ISCSI, InfiniBand and FCoE. John Wiley and Sons, 2009. p.39
- ↑ Dell Computers, Background Patrol Read for Dell PowerEdge RAID Controllers, By Drew Habas and John Sieber, Reprinted from Dell Power Solutions, February 2006 http://www.dell.com/downloads/global/power/ps1q06-20050212-Habas.pdf
- 1 2 3 “Error Recovery Control with Smartmontools”. 2009. 2011년 9월 28일에 원본 문서에서 보존된 문서. 2017년 9월 29일에 확인함.
- ↑ Gray, Jim (Oct 1990). “A census of Tandem system availability between 1985 and 1990” (PDF). 《IEEE Transactions on Reliability》 (IEEE) 39 (4): 409–418. Bibcode:1990ITR....39..409G. doi:10.1109/24.58719. S2CID 2955525. 2019년 2월 20일에 원본 문서 (PDF)에서 보존된 문서.
- ↑ Murphy, Brendan; Gent, Ted (1995). “Measuring system and software reliability using an automated data collection process”. 《Quality and Reliability Engineering International》 11 (5): 341–353. doi:10.1002/qre.4680110505.
- ↑ “The RAID Migration Adventure”. 2007년 7월 10일. 2010년 3월 10일에 확인함.
- ↑ Disk Failures in the Real World: What Does an MTTF of 1,000,000 Hours Mean to You? Bianca Schroeder and Garth A. Gibson
- ↑ Pâris, Jehan-François; Long, Darrell D. E. (2006년 10월 30일). 〈Using device diversity to protect data against batch-correlated disk failures〉. 《Proceedings of the second ACM workshop on Storage security and survivability》. 47–52쪽. doi:10.1145/1179559.1179568. ISBN 1-59593-552-5.
- ↑ Han, Shujie; Lee, Patrick P. C.; Xu, Fan; Liu, Yi; He, Cheng; Liu, Jiongzhou (2021). 《An In-Depth Study of Correlated Failures in Production SSD-Based Data Centers》 (영어). FAST '21. 417–429쪽.
- ↑ Rosenthal, David. “Correlated Failures (summary of Shujie Han et al.'s paper FAST '21)” (영어).
- ↑ 《Are Disks the Dominant Contributor for Storage Failures? A Comprehensive Study of Storage Subsystem Failure Characteristics》. 6th USENIX Conference on File and Storage Technologies (FAST '08).
- ↑ Harris, Robin (2010년 2월 27일). “Does RAID 6 stop working in 2019?”. 《StorageMojo.com》. TechnoQWAN. 2013년 12월 17일에 확인함.
- ↑ J.L. Hafner, V. Dheenadhayalan, K. Rao, and J.A. Tomlin. "Matrix methods for lost data reconstruction in erasure codes. USENIX Conference on File and Storage Technologies, Dec. 13–16, 2005.
- ↑ Miller, Scott Alan (2016년 1월 5일). “Understanding RAID Performance at Various Levels”. 《Recovery Zone》. StorageCraft. 2016년 7월 22일에 확인함.
- ↑ Kagel, Art S. (2011년 3월 2일). “RAID 5 versus RAID 10 (or even RAID 3, or RAID 4)”. 《miracleas.com》. 2014년 11월 3일에 원본 문서에서 보존된 문서. 2014년 10월 30일에 확인함.
- ↑ Baker, M.; Shah, M.; Rosenthal, D.S.H.; Roussopoulos, M.; Maniatis, P.; Giuli, T.; Bungale, P (April 2006). 〈A fresh look at the reliability of long-term digital storage〉. 《Proceedings of the 1st ACM SIGOPS/EuroSys European Conference on Computer Systems 2006》. 221–234쪽. doi:10.1145/1217935.1217957. ISBN 1595933220. S2CID 7655425.
- ↑ Bairavasundaram, L.N.; Goodson, G.R.; Pasupathy, S.; Schindler, J. (June 12–16, 2007). 〈An analysis of latent sector errors in disk drives〉 (PDF). 《Proceedings of the 2007 ACM SIGMETRICS international conference on Measurement and modeling of computer systems》. 289–300쪽. doi:10.1145/1254882.1254917. ISBN 9781595936394. S2CID 14164251.
- ↑ Patterson, D., Hennessy, J. (2009). Computer Organization and Design. New York: Morgan Kaufmann Publishers. pp 604–605.
- 1 2 3 Leventhal, Adam (2009년 12월 1일). “Triple-Parity RAID and Beyond. ACM Queue, Association for Computing Machinery”. 2012년 11월 30일에 확인함.
- ↑ “"Write Hole" in RAID5, RAID6, RAID1, and Other Arrays”. ZAR team. 2012년 2월 15일에 확인함.
- 1 2 Danti, Gionatan. “write hole: which RAID levels are affected?” (영어). 《Server Fault》.
- ↑ “ANNOUNCE: mdadm 3.4 - A tool for managing md Soft RAID under Linux [LWN.net]”. 《lwn.net》.
- ↑ Brown, Neil (2015년 11월 24일). “A journal for MD/RAID5 [LWN.net]”. 《lwn.net》.
- ↑ “RAID 4/5/6 cache — The Linux Kernel documentation”. 《docs.kernel.org》.
- ↑ – 리눅스 프로그래머의 매뉴얼 – Special Files
- ↑ “Partial Parity Log”. 《The Linux Kernel documentation》.
- ↑ Bonwick, Jeff (2005년 11월 17일). “RAID-Z”. 《Jeff Bonwick's Blog》. Oracle Blogs. 2014년 12월 16일에 원본 문서에서 보존된 문서. 2015년 2월 1일에 확인함.
- 1 2 Overstreet, Kent (2021년 12월 18일). “bcachefs: Principles of Operation” (PDF). 2023년 5월 10일에 확인함.
- ↑ Gray, Jim (2008년 6월 11일). “The Transaction Concept: Virtues and Limitations (Invited Paper)”. VLDB [Very Large Data Bases] 1981. 144–154쪽. 2008년 6월 11일에 원본 문서에서 보존된 문서.
- ↑ “Definition of write-back cache at SNIA dictionary”. 《snia.org》.