RAID 1 + 6이 더 일반적인 레이아웃이 아닌 이유는 무엇입니까?


17

중첩 된 RAID 레벨 1 + 5 또는 1 + 6이 거의 알려지지 않은 이유는 무엇입니까? 중첩 RAID 레벨 위키 백과 문서는 현재 자신의 섹션이 없습니다. RAID 1 + 0 트리플 미러링과 비교할 때 RAID 1 + 0보다 일반적이지 않은 이유를 이해하지 못합니다.

드라이브 용량이 성능이나 안정성보다 빠르게 증가함에 따라 재 구축 시간이 점점 더 문제가되고있는 것은 분명합니다. RAID 1이 더 빨리 재구성되고 RAID 1 쌍의 RAID 0 배열이 문제를 피하지만 RAID 5 또는 6 배열의 RAID 1 쌍은 그렇지 않을 것이라고 들었습니다. 적어도 이들이 RAID 1 + 0의 일반적인 대안이 될 것으로 기대합니다.

1TB 드라이브 중 16 개 드라이브의 경우 백업에 의지 할 수있는 순진한 확률, 즉 드라이브가 확률과 무관하다는 가정을 단순화 한 것입니다.

RAID | storage | cumulative probabilities of resorting to backup /m
 1+0 |     8TB | 0, 67, 200, 385, 590, 776, 910, 980, 1000, 1000, 1000
 1+5 |     7TB | 0,  0,   0,  15,  77, 217, 441, 702,  910, 1000, 1000
 1+6 |     6TB | 0,  0,   0,   0,   0,   7,  49, 179,  441,  776, 1000
(m = 0.001, i.e. milli.)

이것이 맞다면 스토리지 용량을 25 % 만 줄이면 RAID 1 + 6이 RAID 1 + 0보다 훨씬 더 안정적이라는 것이 분명합니다. 일반적인 경우와 마찬가지로 이론적 인 쓰기 처리량 (탐색 시간을 계산하지 않음)은 스토리지 용량 / 배열 크기 × 드라이브 수 × 어레이에서 가장 느린 드라이브의 쓰기 처리량입니다 (중복이있는 RAID 레벨은 쓰기에 대한 쓰기 증폭이 높음). 스트라이프를 채우지 않지만 청크 크기에 따라 다름) 이론적 읽기 처리량은 어레이에있는 드라이브의 읽기 처리량의 합계입니다 (RAID 0, RAID 5 및 RAID 6은 여전히 ​​이론적으로 가장 느린 속도, 두 번째로 느린 속도 및 세 번째로 느린 드라이브 읽기 처리량). 즉, 동일한 드라이브를 가정하면 각각 8x, 7x,

또한, RAID 0 고려 쿼드 러플 (12 개) 드라이브의 RAID 1 트리플 즉, RAID 12 개 드라이브 1 + 0 트리플 미러링 및 RAID 1 쌍의 RAID 6 육배, 즉 RAID 1 + 6. 다시, 이들은 동일한 1TB 드라이브입니다. 두 레이아웃 모두 동일한 수의 드라이브 (12), 동일한 스토리지 용량 (4TB), 동일한 비율의 중복성 (2/3), 동일한 최대 쓰기 처리량 (4x) 및 동일한 최대 읽기 처리량 ( 12 ×). 여기 내 계산이 있습니다 (지금까지).

RAID      | cumulative probabilities of resorting to backup /m
1+0 (4×3) | 0, 0, 18,  ?,   ?,   ?,   ?,   ?, 1000
1+6 (6×2) | 0, 0,  0,  0,   0,  22, 152, 515, 1000

예, 이것은 과잉으로 보일 수 있지만 3 중 미러링을 사용하여 백업용 복제본을 분리하는 경우 RAID 1 + 6은 RAID 2 개를 제외한 모든 드라이브의 각 드라이브 1 개를 고정하고 제거하는 것만으로도 사용할 수 있습니다. 1 쌍이며, 그렇게하면서 성능이 저하 된 RAID 1 + 0 어레이보다 성능이 저하 될 때 여전히 안정성이 훨씬 뛰어납니다. 다음은이 방식으로 12 개 드라이브에 대한 계산이 4만큼 저하 된 것입니다.

RAID      | cumulative probabilities of resorting to backup /m
1+0 (4×3) | (0, 0, 0, 0), 0, 143, 429, 771, 1000
1+6 (6×2) | (0, 0, 0, 0), 0,   0,  71, 414, 1000

그러나 RAID 1 + 6의 경우이 시간 동안 읽기 처리량이 6 배로 저하 될 수 있지만 RAID 1 + 0은 8 배로 감소됩니다. 그럼에도 불구하고 어레이가이 성능 저하 상태에있는 동안 드라이브에 장애가 발생하면 RAID 1 + 6 어레이는 약 50 배의 확률로 약 6 배로 유지되거나 5 배로 제한 될 수 있지만 RAID 1 + 0 어레이는 병목 현상 이 4 배로 제한됩니다 . 쓰기 처리량은 거의 영향을받지 않아야합니다 (백업에 사용 된 드라이브가 가장 느린 드라이브 인 경우 증가 할 수도 있음).

사실, 성능이 저하 된 RAID 1 + 6 어레이가 추가 RAID 6 그룹 4 드라이브를 분리 할 수 ​​있기 때문에 둘 다 '트리플 미러링'으로 볼 수 있습니다. 다시 말해,이 12 드라이브 RAID 1 + 6 레이아웃은 성능이 저하 된 3 개의 RAID 6 어레이로 나눌 수 있습니다!

그렇다면 대부분의 사람들이 수학에 대해 자세히 설명하지 않은 것입니까? 앞으로 더 많은 RAID 1 + 6을 보게 될까요?


2
당신의 생각 계산기는 패리티를 만들기 위해 쓰기 증폭을 고려하지 않은 것 같습니다.
JamesRyan

1
@JamesRyan : 예, 나는 실제로 패리티가 글을 써야한다고 생각했습니다. 이것이 "스토리지 용량 / 어레이 크기"의 목적입니다. 이것의 역수는 쓰기 증폭 요소이며, 솔리드 스테이트 드라이브와 관련된 추가 쓰기 증폭은 포함하지 않습니다. 여기에는 RAID 1 이중화의 쓰기 증폭도 포함됩니다. 기본적으로 쓰기 증폭 계수는 1의 역수에서 중복 비율을 뺀 값과 같습니다. 따라서 50 %의 중복성은 쓰기 증폭 계수 2를 제공합니다. 62.5 % (10/16) 중복성은 쓰기 증폭 계수가 ~ 2.67 (16/6)입니다.
James Haigh

1
아니 그건 틀렸어 각 RAID6 쓰기에는 6 개의 IO가 필요하고 각 RAID1 쓰기에는 2 개의 IO가 필요하며 이는 곱셈입니다. 따라서 RAID 1 + 6에서 각 쓰기에는 12 IO가 필요합니다. RAID 10은 2 IO이기 때문입니다. 12 개 드라이브의 쓰기 처리량은 RAID1 + 6의 경우 1 배, RAID10의 경우 6 배입니다!
JamesRyan

@JamesRyan : 아, 지금 어디로 가고 있는지 알 수 있습니다. 전체 스트라이프보다 적은 쓰기의 경우 쓰기 증폭 계수가 RAID 1 + 6의 두 배가되어 최대 쓰기 처리량이 절반으로 줄어 듭니다. 전체 스트라이프의 경우, 6 × 2 예제에서 12 개의 쓰기가 있지만 이것은 4 개의 청크에 해당하는 데이터임을 기억하십시오. 4, 3, 2, 1 청크-가치 각각의 경우, 쓰기 증폭 계수는 (6 × 2) / 4 = 3, (5 × 2) / 3 = ~ 3.33, (4 × 2) / 2 = 4, ( 3 × 2) / 1 = 6, 4 ×, 3.6 ×, 3 ×, 2 ×의 최대 쓰기 처리량을 제공합니다. RAID 1 + 0 4 × 3의 경우 (4 × 3) / 4, (3 × 3) / 3, (2 × 3) / 2, (1 × 3) / 1이며 상수 4 ×를 제공합니다. ...
제임스 헤이그

2
계산에 따라 RAID1 + 6의 쓰기 처리량이 RAID10의 트리플 처리량과 동일하다고 언급했습니다. 실제로 RAID1 + 6은 원격으로 RAID10의 쓰기 처리량을 원격으로 계산하지 않았으므로 계산 이나 그에 기반한 가정 이 잘못되었습니다 . 나는 왜 당신이 듣기를 거부한다면 우리는 시간을 낭비하고 있지만 그것을 낭비하는 것은 당신이 이해하는 데 도움을 주려고 노력했다.
JamesRyan

답변:


17

일반적으로 RAID 1 + 0은 1 + 5 또는 1 + 6보다 널리 사용되는 경향이 있는데, 이는 RAID 1 + 0이 충분히 신뢰할 수 있고 약간 더 나은 성능과 더 유용한 스토리지를 제공하기 때문입니다.

나는 대부분의 사람들이 RAID 1 + 0 그룹 내에서 전체 RAID 1 쌍의 실패를 백업을 파괴 할 가치가있는 매우 드문 사건으로 생각할 것입니다. 아마도 물리적인의 50 % 미만을 얻는 것에 대해 너무 열성적이지 않을 것입니다 사용 가능한 공간으로 디스크.

RAID 1 + 0보다 더 나은 안정성이 필요하다면 바로 사용하십시오! .. 그러나 대부분의 사람들은 그럴 필요가 없습니다.


1
RAID 1 + 0에서 발생하는 문제는 스토리지에 대한 안정성의 비율이 좋지 않다는 것입니다. RAID 6 (N 아래 - 1) 패리티의 수를 임의로 확장했다 경우 같은 드라이브는 증가 된 스토리지를 모두 달성 할 수 RAID 1 + 0보다 더 나은 안정성을. 위의 예에서 4 개의 패리티를 가진 RAID 6을 사용할 수 있다면 RAID 1 + 0보다 50 % 더 많은 스토리지 및 최대 쓰기 처리량을 가지지 만 매우 높은 신뢰성을 갖습니다. 3 개 또는 4 개의 패리티가있는 RAID 6은 스토리지 안정성이 뛰어나 안정성이 뛰어납니다.
James Haigh

4
@JamesHaigh RAID 6 vs RAID 1 + 0은 RAID 1 + 6 vs RAID 1 + 0과는 매우 다른 토론입니다. ZFS의 raidz3가 당신의 골목에있는 것처럼 보입니까? 어쨌든 요컨대 RAID 1 + 0이 RAID 6보다 유지하는 몇 가지 성능 이점이 있습니다. 예를 들어 훨씬 적은 수의 드라이브를 터치해야하는 작은 단일 블록 쓰기 (및 raidz3으로 돌아 가기) 작은 쓰기를 위해 모든 디스크에 쓰는 대신 전체 복사본)
Shane Madden

미안합니다. 예, 이것이 제가 쫓고있는 것이라고 생각합니다. 마지막 의견 이후 3 개 이상의 패리티를 가진 RAID에 대한 새로운 질문을 작성했습니다 . 그것은 내가 생각하는 RAID 1 + 6보다 낫습니다. 또한 원하는 트레이드 오프를 얻는 것이 더 유연하고 간단합니다. 그 질문에 대해 이것을 계속하고 싶을 수도 있습니다.
James Haigh

3
RAID 6은 그렇게 작동하지 않기 때문에 선형으로 확장 할 수 없습니다. 두 번째 패리티에 대한 신드롬 계산은 사소하게 확장되지 않습니다. 그러나 더 작은 RAID 6 그룹을 쉽게 수행 할 수 있습니다. 실제로 14 + 2를 수행해야하는 이유가 없으며 대신 2 + 2 또는 4 + 2를 수행하고 많은 안정성을 얻을 수 있습니다.
Sobrique

1
@JamesHaigh 당신이 원하는 것 같습니다 12 웨이 raidz8입니다. 패리티 계산에 들어가는 논리에 따라 사소한 데이터로도 프로세서를 영구적으로 페깅 할 수 있습니다. 단일 패리티는 기본적으로 XOR (쉽게)입니다. 이중 패리티는 사각형과 관련이 있습니다 (단단하지는 않지만 쉽지는 않습니다). 트리플 패리티는 큐브 기반이거나 유사합니다 (하드). 4, 5, 6, 7 또는 8 패리티는 (더 큰 규모의) 지수 계산을 요구합니다 (지속적으로 양자 컴퓨터가 필요할 수 있음). 모양이 커짐에 따라 IOPS가 ZERO 증가한다는 것을 기억하십시오. 미디어의 경우 누가 신경 쓰나요? VM의 경우 죽입니다.
killermist

16

실질적인 대답은 하드웨어 RAID 컨트롤러 사양, 평균 디스크 크기, 드라이브 폼 팩터 및 서버 디자인의 교차점에 있습니다.

대부분의 하드웨어 RAID 컨트롤러는 지원하는 RAID 레벨로 제한됩니다. 다음은 HP ProLiant Smart Array 컨트롤러에 대한 RAID 옵션입니다.

[raid=0|1|1adm|1+0|1+0adm|5|50|6|60]

참고 : "adm"은 3 중 미러링입니다.

LSI RAID 컨트롤러는 다음을 지원합니다. 0, 1, 5, 6, 10, 50, and 60

따라서이 컨트롤러는 RAID 50 및 60 만 중첩 수준으로 사용할 수 있습니다. LSI (예 : Dell PERC ) 및 HP는 대부분의 엔터프라이즈 서버 스토리지 어댑터 시장을 구성합니다. 이것이 현장에서 RAID 1 + 6 또는 RAID 61과 같은 것이 보이지 않는 주요 이유입니다.

이러한 고려 사항 외에도 RAID 10 이상의 중첩 RAID 레벨에는 비교적 많은 수의 디스크가 필요합니다. 오늘날 사용 가능한 드라이브 용량 (3.5 인치 니어 라인 SAS 및 SATA 드라이브 사용)이 증가하고 많은 서버 섀시가 약 8 x 2.5 "드라이브 케이지로 설계되어 있다는 사실과 함께 RAID 1+를 물리적으로 구성 할 수있는 기회는 많지 않습니다. 6 또는 RAID 61.

RAID 1 + 6과 같은 영역은 대형 섀시 소프트웨어 RAID 솔루션입니다. Linux MD RAID 또는 ZFS는 확실히 가능합니다. 그러나 그때까지는 핫 또는 콜드 스페어 디스크로 드라이브 오류를 완화 할 수 있습니다. 유독 한 RAID 레벨과 하드웨어 조합 (예 : RAID 5 및 6TB 디스크)을 피한다면 RAID 안정성은 요즘 큰 문제가되지 않습니다. 또한 계층화 및 캐싱 계층을 통해 읽기 및 쓰기 성능이 추상화됩니다. 평균 스토리지 워크로드는 일반적으로 하나 이상의 이점을 얻습니다.

결국, 그것은 필요 / 수요가없는 것처럼 보입니다.


1
어레이 복제 형태가 필요합니다. 실제로 다중 사이트 DR을 수행하는 여러 사이트를 알고 있는데, 이는 실제로 원격 (RAID 10 또는 5 또는 6) 원격 사이트에 복제 된 RAID 10 또는 5 또는 6입니다. 프로세서, 컨트롤러, 네트워크, 전력, 에어컨, 데이터 센터 캐치-화재는 특정 수준의 디스크 안정성을 넘어서도 신뢰성에 더 큰 위협이됩니다.
Sobrique

1
OP가 복제 또는 다중 사이트 사용을 고려했다고 생각하지 않습니다.
ewwhite

1
아마 아닐 것입니다. 당신이 말했듯이-그것은 과잉이기 때문에 수요가 없습니다. 그것은 과잉이 아닌 곳을 생각할 수있는 유일한 유스 케이스입니다.)
Sobrique

Netapp 로컬 동기화 미러는 RAID 6 + 1과 같은 것을 (간결하게) 구성하여 쓰기를 미러링하면서 두 플렉스에 동일한 사본과 멀티 플렉스 읽기를 만듭니다. Netapp V-Series를 새로운 백엔드 LUN으로 마이그레이션하는 데 주로 사용되지만 안정성을 두 배로 높이려면이 방법으로 수행 할 수 있습니다.
Basil

12
  • 신뢰성에 대한 수익이 감소하고 있습니다. RAID 6은 10 ^ 14 UBER 비율의 1 인 불쾌한 SATA 드라이브에서도 복합 오류가 발생하지 않을 것입니다. FC / SAS 드라이브에서 UBER은 10 ^ 16의 1이며 성능도 상당히 향상됩니다.

  • RAID 그룹 안정성은 실수로 삭제되는 것을 방지하지 않습니다. (그래도 백업이 필요합니다)

  • 특정 수준의 RAID를 넘어 서면 디스크에서의 복합 장애 가능성은 인프라 (전력, 네트워크, 에어컨 누출 등)의 복합 장애보다 낮아집니다.

  • 페널티를 씁니다. RAID 61에서 들어오는 각 쓰기 작업은 12 개의 IO 작업을 시작합니다 (순진하게 완료). RAID 6은 TB 랜덤 쓰기 당 IOP와 관련하여 '낮은 계층'시나리오에서 이미 고통 스럽습니다. (더 높은 계층에서는 실패율이 100 배 더 좋습니다)

  • '25 % 감소 '가 아니라 추가 25 % 감소입니다. 16TB가 6TB로 바뀌고 있습니다. 따라서 사용 가능한 스토리지는 37.5 %입니다. 용량 당 3 배 많은 디스크와 3 배 많은 데이터 센터 공간이 필요합니다. 더 작은 RAID6 세트를 만들면 더 높은 안정성을 얻을 수 있습니다. 나는 숫자 크 런칭을하지 않았지만 예를 들어 3x 3 + 2 세트 (15 드라이브, RAID10보다 스토리지 오버 헤드가 적음)의 RAID 6 합계를 시도하십시오. 또는 대신 3 방향 미러를 수행하십시오.

다중 사이트 DR에 대해 생각하는 것보다 일반적입니다. DR5 사이트에 대해 비동기식 또는 동기식으로 RAID5 / 6 / DP RAID 그룹이있는 복제 된 스토리지 배열을 실행합니다. (피할 수 있으면 동기화하지 마십시오.보기에 좋지 않습니다. 실제로는 끔찍합니다).

내 NetApp의 경우 미러링 된 집계가있는 메트로 클러스터입니다. VMAX를 사용하면 SRDF (Symmetrix Remote Data Facility)가 있습니다. 그리고 내 3PAR은 원격 복사를 수행합니다.

비싸지 만 DR의 '데이터 센터 잡기 화재'수준을 제공합니다.

트리플 미러와 관련하여-직접 RAID 복원력 측정 방법이 아니라 백업 전략의 일부로 전체 복제본으로 사용했습니다. 세 번째 미러를 동기화하고 분할 한 후 별도의 서버에 마운트하고 완전히 다른 인프라를 사용하여 백업하십시오. 그리고 때로는 복구 옵션으로 세 번째 미러를 회전시킵니다.

내가하려고하는 요점은 스토리지 관리자로서의 직접 경험에서 ~ 40,000 개의 스핀들 영역에서 (예, 매일 수십 개의 드라이브를 교체하고 있음)-다양한 백업을 위해 백업을해야한다는 것입니다 지난 5 년 동안의 이유가 있지만 RAID 그룹 오류는 없었습니다. 우리는 상대적인 장점과 수용 가능한 복구 시간, 복구 지점 및 중단 기간에 대해 논의합니다. 그리고이 모든 것을 뒷받침하는 것은 항상 추가 탄력성의 비용입니다.

당사의 모든 미디어 스크럽 및 장애는 드라이브를 예측하고 적극적으로 예비 및 테스트합니다.

적절한 RAID 구현이 있었더라도 비용 편익은 존재하지 않습니다. 스토리지 공간에 소비되는 비용은 더 긴 보존 기간 또는 더 자주 백업주기에 더 잘 투자됩니다. 또는 더 빠른 통신. 또는 동일한 복원력 수를 가지더라도 스페어를 더 빨리 재구성하면 복합 고장 확률이 향상되므로 일반적으로 더 빠른 스핀들입니다.

따라서 귀하의 질문에 대한 답변을 제공 할 것이라고 생각합니다.

비용 이점이 단순히 누적되지 않기 때문에 RAID 1 + 6 및 1 + 5가 자주 표시되지 않습니다. 금액이 한정되어 있고 처음에 백업 솔루션을 구현해야하는 경우 중단 빈도를 줄이기 위해 비용을 지출하면됩니다. 그 돈을 쓰는 더 좋은 방법이 있습니다.


“RAID 그룹의 신뢰성은 우발적 인 삭제로부터 사용자를 보호하지 않습니다. (어쨌든 백업이 필요합니다.)”– 백업이 불필요하다는 것을 암시하지 않았습니다 ( RAID가 백업이 아님을 잘 알고 있습니다 ). 나는 실제로“백업에 의존하는 누적 확률”이라고 말함으로써 그 반대를 암시합니다. – 백업이 표준 관행이라는 점을 감안할 때이를 취하고 있습니다. 그러나 나는이 점에 동의하지만 RAID 1 + 6에 대한 나의 추론을 반박하는 것으로 제시되는데, 이는 이해가되지 않습니다.
James Haigh

“RAID 61”– RAID 6 + 1은 RAID 6 어레이의 RAID 1 어레이입니다. 그것은 반대의 중첩이며, 신뢰성이 훨씬 떨어질 것이라고 생각합니다. 즉, 동일한 중첩 RAID 6 어레이에서 3 개의 드라이브에 장애가 발생하면 어떻게됩니까? 전체 중첩 RAID 6 어레이를 재 구축 할 필요가 없습니까? RAID 1 + 6과 동일한 드라이브는 작동중인 드라이브를 오프라인으로 만들지 않고도 동일한 3 개의 드라이브 오류를 유지합니다.
James Haigh

"어떤 수준의 RAID를 넘어 서면 디스크에서의 복합 장애 가능성은 인프라 (전력, 네트워크, 에어컨 누출 등)의 복합 장애보다 낮아집니다"; “ 추가 25 % 감소”– 사실입니다. 이는 과도한 중첩 레이아웃입니다. 그렇다면 왜 하나의 지구에서 RAID 1 트리플의 RAID 0 어레이를 사용해야합니까? RAID 1 + 0 3 중 미러링에 대해 알려 주셔서 감사합니다! "난 숫자 처리를하지 않았습니다"; “또는 대신 3 방향 미러를 수행하십시오.”– 반대 사례로 지원 사례를 제공하기 전에 실제로 계산을 수행해야합니다. 이러한 계산은 탐구되어야한다…
James Haigh

1
저의 직접적인 경험은 이것입니다. 저는 다양한 구성으로 4,000 개의 스핀들을 보유하고 있습니다. 우리는 지난 5 년 동안 급습에 실패했습니다. 나는 트리플 미러를 사용했지만 복원력은 사용하지 않았습니다. 백업 이유로 복제본을 만들기위한 것입니다. DR 이유 때문에 멀티 사이트 복제본을 사용했지만,이 중 어느 것도 RG 장애에 필요하지 않았습니다.
소 브리 크

1
쓰기 패널티가 무엇인지 오해하고 있습니다. 단일 덮어 쓰기의 경우 두 패리티 장치에서 읽고 패리티를 계산하고 twp 패리티 장치와 대상 블록에 다시 써야합니다. 따라서 '쓰기'당 6 개의 IO가 있습니다. 이것은 소프트웨어 또는 구현 제한 사항이 아닙니다. 좋은 쓰기 캐싱으로 부분적으로 완화하지만 부분적으로 만 완화합니다.
Sobrique

3

현대식 시스템과 고급 시스템은 모양이 너무 복잡하고 완전히 불필요하며 효율성과 비슷하기 때문에 모양을 구현하지 않습니다.

다른 사람들이 지적했듯이 원시 공간과 사용 가능한 공간의 비율은 본질적으로 3 : 1입니다. 기본적으로 3 개의 사본 (2 개의 중복 사본)입니다. "raid6"의 계산 비용 (미러 된 경우 두 번 이상)과 그에 따른 IOPS 손실로 인해 이는 매우 비효율적입니다. 잘 설계되고 조정 된 ZFS에서 동등한 솔루션은 용량면에서 3 웨이 미러 스트라이프를 만드는 것입니다.

예를 들어, 6 웨이 raid6 / raidz2 모양의 미러 (총 12 개의 드라이브) 대신 매우 비효율적이며 (ZFS에 구현할 메커니즘이없는) 4 개의 3 웨이 미러 (12 개)도 있습니다 드라이브). 그리고 1 개의 드라이브 가치의 IOPS 대신 4 개의 드라이브 가치의 IOPS가 있습니다. 특히 가상 머신의 경우에는 큰 차이가 있습니다. 두 모양의 총 대역폭은 순차적 읽기 / 쓰기에서 매우 유사 할 수 있지만 3 방향 미러 스트라이프는 임의 읽기 / 쓰기로 더욱 응답 성이 좋습니다.

요약하면 : raid1 + 6은 일반적으로 비실용적이며 비효율적이며 당연히 스토리지에 대해 진지한 사람이 개발을 고려하지 않을 것입니다.

IOPS 불일치를 명확히하려면 : 각 쓰기마다 raid6 / raidz2 모양의 미러를 사용하여 12 개의 드라이브 모두 하나의 역할을해야합니다. 전체 모양이 활동을 여러 동작으로 분할하여 여러 모양이 독립적으로 수행 할 수있는 기능은 없습니다. 3 웨이 미러 스트라이프를 사용하는 경우 각 쓰기는 4 개의 미러 중 하나만 처리해야 할 수 있으므로 추가 쓰기 작업은 추가 작업을보기 전에 전체 옴니버스 모양이 처리 될 때까지 기다릴 필요가 없습니다. .


2

아무도 직접 언급하지 않았기 때문에 : Raid6 쓰기 성능은 그리 나쁘지 않습니다. 부하가 가해지면 설명을 넘어서는 끔찍한 일입니다.

순차적 쓰기는 가능하며 캐싱, 쓰기 병합 등이이를 수행 할 수있는 한 괜찮습니다. 부하가 높을 때 상황이 나빠 보이며 이것이 1 + 5 / 6 설정이 거의 사용되지 않는 주된 이유입니다.


나는 동의하지만, 그것은 주로 당신이 말한 것이 내가 말한 것의 슈퍼 요약 된 버전이기 때문입니다. 그리고 물론 나 자신도 동의합니다.
killermist

1

찾기 시간

문제는 쓰기 탐색 증폭이 쓰기 처리량 증폭 과 매우 다르게 작동한다는 것 입니다. 패리티를 사용하여 최소 쓰기 처리량 증폭은 전체 스트라이프가 한 번에 기록 될 때 발생하지만 (이 형용사를 '전체 스트라이프'라고 부름), 최소 쓰기 탐색 증폭은 반대로, 가상 장치에서 검색 후 전체 쓰기가 적합 할 때 발생합니다. 단일 덩어리. 자세히 설명하기 전에 관계를 표 형식으로 전달하기가 훨씬 쉽습니다.

RAID | write throughput amplification factor | write seek amplification factor
     | full-stripe (e.g.) | single-chunk     | full-stripe  | single-chunk
   0 | 1           ;  1   | 1           ;  1 | n       ; 12 | 1           ;  1
   1 | n           ; 12   | n           ; 12 | n       ; 12 | n           ; 12
   5 | n/(n - 1)   ; ~1.1 | min [3, n]  ;  3 | n       ; 12 | min [3, n]  ;  3
   6 | n/(n - 2)   ;  1.2 | min [5, n]  ;  5 | n       ; 12 | min [5, n]  ;  5
*1+0 | n₁          ;  3   | n₁          ;  3 | n       ; 12 | n₁          ;  3*
 1+5 | n/(n₅ - 1)  ;  2.4 | expr₁       ;  5 | n       ; 12 | expr₁       ;  5
*1+6 | n/(n₆ - 2)  ;  3   | expr₂       ;  8 | n       ; 12 | expr₂       ;  8*
expr₁ = 2n₁ + min [1, n₅ - 2]
expr₂ = 3n₁ + min [2, n₆ - 3]

여기서 n은 총 드라이브 수, n₁는 RAID 1 그룹의 드라이브 수, n₅ 및 n₅은 각각 RAID 5 또는 RAID 6 어레이의 그룹 수입니다. 예제는 문제의 12 개 드라이브 예제와 관련이 있습니다 (관련 행은 ' *bolded*'). RAID 레벨 1 + 0, 1 + 5, 1 + 6의 예는 각각 4x3, 6x2, 6x2입니다.

전체 스트라이프 쓰기 처리량 증폭 계수 만 중복 비율과 직접 관련이 있습니다. 단일 청크 경우는 패리티가있는 경우에 더 복잡합니다. 단일 청크를 작성하려면 새 데이터 청크와 함께 패리티 청크를 작성하기 전에 패리티 청크 또는 다른 데이터 청크 중에서 가장 쉬운 것을 읽어야하기 때문에 발생합니다. (유도 된 읽기에 RAID 1에 대한 각각의 읽기 처리량 / 탐색 증폭 계수를 곱해야하기 때문에 직접 곱셈은 아닙니다. 둘 다 1입니다. 아래를 참조하십시오.)

불행히도이 추가 쓰기 처리량 증폭을 최소화하는 청크 크기를 선택하면 실제로 최대화 하는 부작용이 있습니다. 쓰기 탐색 증폭 있습니다. 검색 시간과 비교하여 쓰기 시간이 무시할 수있는 작은 쓰기의 경우, 아주 작은 청크 크기 (전체 스트라이핑)를 가진 스트라이핑의 쓰기 성능은 모든 드라이브를 검색해야하기 때문에 미러링과 같은 1 배입니다. 각 쓰기에 대한 청크와 이러한 모든 드라이브를 동원하여 얻은 처리량은 관련이 없습니다. 탐색 시간의 쓰기 시간 비율을 어레이의 드라이브 수로 나누었지만 작은 쓰기의 경우 이미 무시할 수 있습니다. 작은 크기의 쓰기조차도 전체 스트라이프를 만들 정도로 작은 청크 크기를 사용하는 것은 이치에 맞지 않습니다. 탐색의 효과를 느낄 정도로 작 으면 쓰기는 단일 청크 내에 들어가는 것이 가장 좋습니다.

RAID | large contiguous write throughput    | concurrent tiny writes throughput
     | full-stripe    | single-chunk        | full-stripe | single-chunk
   0 | n×       ; 12× | n×          ; 12×   | 1×     ; 1× | n×          ; 12×
   1 | 1×       ;  1× | 1×          ;  1×   | 1×     ; 1× | 1×          ;  1×
   5 | (n - 1)× ; 11× | max[n/3, 1]×;  4×   | 1×     ; 1× | max[n/3, 1]×;  4×
   6 | (n - 2)× ; 10× | max[n/5, 1]×;  2.4× | 1×     ; 1× | max[n/5, 1]×;  2.4×
*1+0 | n₀×      ;  4× | n₀×         ;  4×   | 1×     ; 1× | n₀×         ;  4×  *
 1+5 | (n₅ - 1)×;  5× | expr₃×      ;  2.4× | 1×     ; 1× | expr₃×      ;  2.4×
*1+6 | (n₆ - 2)×;  4× | expr₄×      ;  1.5× | 1×     ; 1× | expr₄×      ;  1.5×*
expr₃ = n/(2n₁ + min [1, n₅ - 2]) = max [n/(2n₁ + 1), n/(2n₁ + n₅ - 2)]
expr₄ = n/(3n₁ + min [2, n₆ - 3]) = max [n/(3n₁ + 2), n/(3n₁ + n₆ - 3)]

참고 : 검색 시간이 중요한 쓰기보다 크지 만 큰 쓰기가 전체 스트라이핑 될 수있을 정도로 작은 적당한 청크 크기를 고려하면 중간 2 처리량 열을 무시할 수 있습니다. 2 차 처리량 열의 큰 청크 크기는 스팬 드라이브와 더 유사합니다. '작은'쓰기는 처리량의 영향을 무시할 수있는 곳입니다.

청크 크기가 부적절하면 읽기에 대한 탐색 증폭의 효과도 증가하지만 전체 스트라이프의 경우에만 그러하지는 않습니다.

RAID | read throughput amplification factor | read seek amplification factor
     | full-stripe      | single-chunk      | full-stripe (e.g.) | single-chunk
   0 | 1                | 1                 | n      to n;    12 | 1
   1 | 1                | 1                 | 1      to n;  1–12 | 1
   5 | 1                | 1                 | n - 1  to n; 11–12 | 1
   6 | 1                | 1                 | n - 2  to n; 10–12 | 1
*1+0 | 1                | 1                 | n₀     to n;  4–12 | 1           *
 1+5 | 1                | 1                 | n₅ - 1 to n;  5–12 | 1
*1+6 | 1                | 1                 | n₆ - 2 to n;  4–12 | 1           *

참고 : 'to n'은 동시에 발생하는 읽기가 하나 뿐인 경우 이론적으로 모든 드라이브를 동원하여 적절한 위치를 찾고 데이터를 전체적으로 읽을 수있어 최대 연속 읽기 처리량을 극대화 할 수 있기 때문입니다.

RAID | large contiguous read throughput | concurrent tiny reads throughput
     | full-stripe (e.g.)| single-chunk | full-stripe         | single-chunk
   0 | n×          ; 12× | n×     ; 12× | 1×          ;  1×   | n×     ; 12×
   1 | n×          ; 12× | n×     ; 12× | n×          ; 12×   | n×     ; 12×
   5 | n×          ; 12× | n×     ; 12× | n/(n - 1)×  ; ~1.1× | n×     ; 12×
   6 | n×          ; 12× | n×     ; 12× | n/(n - 2)×  ;  1.2× | n×     ; 12×
*1+0 | n×          ; 12× | n×     ; 12× | n₁×         ;  3×   | n×     ; 12×*
 1+5 | n×          ; 12× | n×     ; 12× | n/(n₅ - 1)× ;  2.4× | n×     ; 12×
*1+6 | n×          ; 12× | n×     ; 12× | n/(n₆ - 2)× ;  3×   | n×     ; 12×*

참고 : 적당한 청크 크기가 주어지면 중간 2 개의 처리량 열을 무시할 수 있습니다. 3 차 처리량 열은 중복 비율에 다시 밀접하게 연결됩니다.

그러나 청크 크기가 충분히 크면 작은 판독 값이 전체 스트라이핑되지 않습니다. 따라서 효율적인 구현과 적절한 청크 크기가 주어지면 읽기 성능이 저하되지 않을 때 동일한 드라이브 수에 비례해야합니다.

실제로 '증폭 계수'는 풀 스트라이프 처리량 증폭 만 고려 된 문제의 공식보다 훨씬 더 복잡합니다. 특히, 검색 바인딩 할 수있을 정도로 작은 동시 쓰기에 대한 6x2 RAID 1 + 6의 쓰기 성능은 4x3 RAID 1 + 0의 성능보다 떨어집니다. 그리고 모든 검색이 필요한 작은 쓰기의 경우 성능은 절대적으로 최고 4x3 RAID 1 + 0의 3 분의 1에 불과합니다 (즉, 완벽한 구현).

이 문제를 해결 한 12 드라이브 비교에는 완벽한 승자가 없습니다.

                                  | 4×3 RAID 1+0 | 6×2 RAID 1+6
   number of identical 1TB drives | 12           | 12
                 storage capacity | 4TB          | 4TB
            redundancy proportion | 2/3          | 2/3
large contiguous write throughput | 4×           | 4×
 large contiguous read throughput | 12×          | 12×
concurrent tiny writes throughput |*4×           | 1.5×
 concurrent tiny reads throughput | 12×          | 12×
safe number of random drive loses | 2            |*5
    12 - 1 large write throughput | 4×           | 4×
     12 - 1 large read throughput | 8×           |*11×
    12 - 1 tiny writes throughput |*4×           | ~1.42×
     12 - 1 tiny reads throughput | 8×           |*~9.33×
  can split-off a copy for backup | yes[1]       | yes[1]
                  2-site failover | yes          | yes
    2-copy large write throughput | 4×           | 4×
     2-copy large read throughput |*8×           | 6×
    2-copy tiny writes throughput |*4×           | ~1.28×
     2-copy tiny reads throughput |*8×           | 6×
   2-copy safe random drive loses | 1            |*2
2-copy - 1 large write throughput | 4×           | 4×
 2-copy - 1 large read throughput | 4×           |*5× or 6×[2]
2-copy - 1 tiny writes throughput |*4×           | ~1.46× or 1.2×[2]
 2-copy - 1 tiny reads throughput | 4×           |*3.6x or 6×[2]
can be divided into 3 full copies | yes          | yes
                  3-site failover | yes          | yes
    1-copy large write throughput | 4×           | 4×
     1-copy large read throughput | 4×           | 4×
    1-copy tiny writes throughput |*4×           | ~0.85×
     1-copy tiny reads throughput |*4×           | 2×
   1-copy safe random drive loses | 0            | 0
                       complexity |*simple       | more complex

참고 1 : 저장된 데이터의 전체 사본은 각각 RAID 0 4 배 또는 4/6 저하 된 RAID 6 어레이입니다. 참고 2 : 드라이브 장애가 4 개의 저하 된 RAID 1 쌍 중 하나를 오프라인으로 오프라인 상태로 만들거나 2 개의 정상 쌍 중 하나를 저하시킬 수있는 가능성이 있습니다.

그럼에도 불구하고, 6 개의 드라이브로 구성된 RAID 6 어레이의 읽기 성능은 두 배가되며 RAID 1 쌍간에 필요한 읽기가 나누어 져 있기 때문에 작은 쓰기 처리량은 25 % 향상 (1.5 / 1.2)해야합니다. 적절한 응용 프로그램이 있으므로 쓰기가 더 많거나 쓰기 성능보다 읽기 성능에 더 관심이있는 고 가용성 응용 프로그램 에서는 RAID 1 + 6에 대한 틈새 있을 수 있습니다 . 그러나 이것이 전부는 아닙니다 ...

복잡성

이것은 지금까지 이론에 불과하지만 (대개 조합론 ) 실제로는 복잡성으로 인해 RAID 1 + 6 구현에는 기회를 놓치고 이론적 결과를 달성하지 못하는 결함이있을 수 있습니다. RAID 6은 이미 더 복잡하며 중첩은 이보다 약간 더 복잡합니다.

예를 들어, 6 × 2 RAID 1 + 6은 4 × 3 RAID 1 + 0과 같이 각각 4 × 처리량으로 3 개의 연속 된 큰 판독 값을 동시에 읽을 수있는 3 개의 독립적 인 가상 판독 헤드를 갖는 것으로 추상화 될 수 있습니다. 소프트웨어 RAID를 사용하여 RAID 6 어레이에 6 개의 RAID 1 쌍을 중첩하는 것은 그렇게 우아하지 않을 수 있습니다. 구현은 어리 석고 스 래시 일 수 있습니다 (아직이 가설을 테스트하지는 않았습니다).

또한 복잡성으로 인해 구현 및 도구 개발 비용이 증가합니다. 이러한 중첩을 통해 이점을 얻을 수있는 응용 프로그램이있을 수 있지만 개선 비용으로 개발 비용이 들지 않을 수 있습니다.


이 정보에 대한 출처를 알려주십시오. 크거나 작은 쓰기에 대한 실제 테스트는 제안한 성능과 일치하지 않습니다.
JamesRyan

@JamesRyan : 이것은 간접적 인 정보가 아닙니다. 이론적 인 결과는 표준 RAID 레벨의 작동 원리에 기초합니다. 이론에 필요한 것은 RAID 작동 방식에 대한 이해와 논리 및 수학 파생에 대한 이해뿐입니다. 이 계산이 다른 사람에 의해 수행 된 경우 물론 이것을 진술하고 가능한 경우 참조 할 수있는 링크를 제공합니다. 실제 RAID 1 + 6 구현이 차선책 일 수있는 방법에는 여러 가지가 있지만 구현 방식에 따라 다릅니다. 내가 알고 싶은 것은 당신의 실제 시험이 일치하지 않는 이유 입니다.
James Haigh

@JamesRyan : 사용한 구현, 사용 된 드라이브, 구성, 벤치마킹 방법에 대한 자세한 정보를 제공 할 수 있습니까? 동일한 12 개의 드라이브와 청크 크기를 가진 6 개의 RAID 1 쌍의 RAID 6 어레이와 4 개의 RAID 1 3 배의 RAID 0 어레이를 모두 사용해 보셨습니까? 소프트웨어 RAID입니까?
James Haigh

기존의 지혜를 무시하는 검증되지 않은 이론을 제안하고 있기 때문에 설정이 작동하는 위치를 자세히 설명하지 않겠습니까? 당신의 수학은이 주제에 대한 다른 모든 출처와 다르기 때문에 실제 테스트는 작동하지 않는 이유는 수학이 잘못 되었기 때문입니다.
JamesRyan
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.