MD의 raid10, f2 설명 작동하는지 알고

다양한 RAID가 어떻게 작동하는지 알고 있습니다. 그러나
리눅스 소프트웨어 습격을 조사하는 동안 권장 raid10, f2 모드를 발견했습니다 . 나는 그것이 2 또는 3 디스크에서 어떻게 작동하는지 이해하지 못합니다. 누군가 나에게 설명 할 수 있습니까? 또는 그것을 설명하는 정말 좋은 기사를 알려주세요.



답변

실제로 Wikipedia 는 실제 문서보다 더 잘 설명 한다고 생각 합니다. 다음은 기사의 텍스트입니다.

Linux 커널 소프트웨어 RAID 드라이버 ( “다중 장치”의 경우 md라고 함)를 사용하여 클래식 RAID 1 + 0 어레이를 구축 할 수 있지만 (버전 2.6.9부터) 흥미로운 확장 기능을 가진 단일 레벨로 [4] [ 5]. 각 청크가 k-way 스트라이프 배열에서 n 번 반복되는 표준 “인근”레이아웃은 표준 RAID-10 배열과 동일하지만 n 나누기 k는 필요하지 않습니다. 예를 들어 2, 3 및 4 드라이브의 n2 레이아웃은 다음과 같습니다.

2 drives         3 drives            4 drives
--------         ----------        --------------
A1  A1           A1  A1  A2        A1  A1  A2  A2
A2  A2           A2  A3  A3        A3  A3  A4  A4
A3  A3           A4  A4  A5        A5  A5  A6  A6
A4  A4           A5  A6  A6        A7  A7  A8  A8
..  ..           ..  ..  ..        ..  ..  ..  ..

4 드라이브 예는 표준 RAID-1 + 0 어레이와 동일하지만 3 드라이브 예는 RAID-1E의 소프트웨어 구현입니다. 2- 드라이브 예제는 동등한 RAID 1입니다. 드라이버는 또한 모든 드라이브가 f 섹션으로 구분되는 “원거리”레이아웃을 지원합니다. 모든 청크는 각 섹션에서 반복되지만 하나의 장치로 오프셋됩니다. 예를 들어, 2 및 3 드라이브 어레이의 f2 레이아웃은 다음과 같습니다.

2 drives             3 drives
--------             --------------
A1  A2               A1   A2   A3
A3  A4               A4   A5   A6
A5  A6               A7   A8   A9
..  ..               ..   ..   ..
A2  A1               A3   A1   A2
A4  A3               A6   A4   A5
A6  A5               A9   A7   A8
..  ..               ..   ..   ..

이것은 미러링 된 어레이의 스트라이핑 성능을 위해 설계되었습니다. RAID-0에서와 같이 순차 읽기는 스트라이핑 될 수 있으며, 임의 읽기는 다소 빠릅니다 (디스크의 더 빠른 외부 섹터 사용 및 더 적은 평균 탐색 시간으로 인해 10-20 % 일 수 있음). 다른 미러링 된 공격대에. 레이아웃은 쓰기보다 읽기 빈도가 더 높은 시스템에 적합합니다. 이는 많은 시스템에서 매우 일반적인 상황입니다. 각 드라이브의 첫 번째 1 / f는 표준 RAID-0 어레이입니다. 따라서 미러 된 2 개의 드라이브 세트에서만 스트라이핑 성능을 얻을 수 있습니다. 근거리 및 원거리 옵션을 동시에 사용할 수 있습니다. 각 섹션의 청크는 n 개의 장치에 의해 상쇄됩니다. 예를 들어, n2 f2 레이아웃은 각 섹터의 2 × 2 = 4 복사본을 저장하므로 최소한 4 개의 드라이브가 필요합니다.

A1  A1  A2  A2        A1  A1  A2  A2  A3
A3  A3  A4  A4        A3  A4  A4  A5  A5
A5  A5  A6  A6        A6  A6  A7  A7  A8
A7  A7  A8  A8        A8  A9  A9  A10 A10
..  ..  ..  ..        ..  ..  ..  ..  ..
A2  A2  A1  A1        A2  A3  A1  A1  A2
A4  A4  A3  A3        A5  A5  A3  A4  A4
A6  A6  A5  A5        A7  A8  A6  A6  A7
A8  A8  A7  A7        A10 A10 A8  A9  A9
..  ..  ..  ..        ..  ..  ..  ..  ..

Linux 2.6.18부터 드라이버는 각 스트라이프가 여러 번 반복되는 오프셋 레이아웃도 지원합니다. 예를 들어, 2 및 3 드라이브 어레이의 o2 레이아웃은 다음과 같이 배치됩니다.

2 drives       3 drives
--------       --------
A1  A2         A1  A2  A3
A2  A1         A3  A1  A2
A3  A4         A4  A5  A6
A4  A3         A6  A4  A5
A5  A6         A7  A8  A9
A6  A5         A9  A7  A8
..  ..         ..  ..  ..

참고 : k는 드라이브 수이며, n #, f # 및 o #는 mdadm –layout 옵션의 매개 변수입니다. Linux는 md 드라이버 (0, 1, 4, 5, 6)를 사용하여 다른 표준 RAID 구성을 만들 수도 있습니다.


답변

f2 RAID10 어레이에서 읽은 내용 에서 각 블록의 사본을 2 개 이상 보관하고 서로 멀리 떨어져 보관합니다.

다음은 매뉴얼 페이지의 관련 섹션입니다.

mdadm (8)

-p, –layout =이 옵션은 raid5 및 raid10 어레이의 데이터 레이아웃에 대한 세부 정보를 구성합니다

마지막으로 RAID10의 레이아웃 옵션은 ‘n’, ‘o’또는 ‘p’중 하나입니다. 번호. 기본값은 ‘n2’입니다.

n은 ‘근처’사본에 신호를 보냅니다. 하나의 데이터 블록의 여러 사본이 다른 장치에서 유사한 오프셋에 있습니다.

o ‘오프셋’복사본 신호. 청크가 스트라이프 내에서 복제되는 대신 전체 스트라이프가 복제되지만 한 장치에서 회전하므로 중복 블록이 다른 장치에 있습니다. 따라서 블록의 후속 사본은 다음 드라이브에 있으며 한 청크가 더 내려갑니다.

f ‘ 원거리 ‘복사본 신호 (여러 복사본은 오프셋이 매우 다릅니다). ‘near’및 ‘far’에 대한 자세한 내용은 md (4)를 참조하십시오.

md (4)

RAID10은 RAID1과 RAID0의 조합을 제공하며 때로는 RAID1 + 0이라고도합니다. 모든 데이터 블록은 여러 번 복제되며 결과 데이터 블록 모음은 여러 드라이브에 분산됩니다. RAID10 어레이를 구성 할 때 필요한 각 데이터 블록의 복제본 수 (일반적으로 2 임)와 복제본이 ‘near’, ‘offset’또는 ‘far’여야하는지 지정해야합니다. ‘오프셋’레이아웃은 2.6.18에서만 사용할 수 있습니다.

근접 ‘복제본을 선택하면 주어진 청크의 여러 복사본이 어레이의 스트라이프에 연속적으로 배치되므로 데이터 블록의 두 복사본이 두 개의 인접한 장치에서 동일한 오프셋에있을 수 있습니다.

‘복제본을 선택하면 주어진 청크의 여러 복사본이 서로 아주 멀리 배치됩니다. 모든 데이터 블록의 첫 번째 사본은 RAID0 방식으로 모든 드라이브의 초기 부분에 걸쳐 스트라이핑 된 다음 모든 블록의 다음 사본이 모든 드라이브의 나중 섹션에 스트라이핑되어 항상 주어진 블록의 모든 사본이 다른 드라이브에.

‘배열은 RAID0 어레이와 동일한 순차 읽기 성능을 제공 할 수 있지만 쓰기 성능이 저하됩니다.

‘오프셋’복제본을 선택하면 주어진 청크의 여러 복사본이 연속 드라이브와 연속 오프셋에 배치됩니다. 효과적으로 각 스트라이프가 복제되고 하나의 장치로 사본이 오프셋됩니다. 이것은 적당한 청크 크기를 사용하지만 쓰기를 많이 요구하지 않으면 ‘far’와 유사한 읽기 특성을 제공해야합니다.

RAID10 어레이의 장치 수는 각 데이터 블록의 복제 수의 배수 일 필요는 없으며, 장치는 최소한 복제만큼 많은 장치가 있어야합니다.

예를 들어 5 개의 장치와 2 개의 복제본으로 어레이를 만들면 장치의 2.5와 동일한 공간을 사용할 수 있으며 모든 블록은 서로 다른 두 장치에 저장됩니다.


답변

흥미롭고 잘 설명되어 있습니다. 그러나 일반 RAID1에는 최소한 Linux 소프트웨어 RAID에서 여러 판독기를 병렬로 유지할 수있는 기능이 있습니다.

하나의 장치에서 데이터를 읽습니다. 드라이버는 성능을 최대화하기 위해 모든 장치에 읽기 요청을 분산하려고 시도합니다.
[…] 이론적으로 N- 디스크 RAID1을 사용하면 N 개의 순차 스레드가 모든 디스크에서 읽을 수 있습니다. (man 4 md, RAID1 섹션)

거의 레이아웃에서 RAID10이이 동작에 더 적합 해 보입니다 (RAID0과 같은 단일 스레드 I / O가 아니라 다중 스레드 I / O 가속화). 4 개의 디스크가있는 n2f2는 4 개의 디스크가있는 RAID1과 유사합니다.

디스크가 4 개인 n2 레이아웃은 단일 스레드의 읽기 성능을 두 배로 늘리고 두 스레드의 읽기 성능을 4 배로 만듭니다 (Linux md RAID10 스케줄러가 제대로 구현 된 경우 한 스레드는 한 쌍에서 읽고 다른 하나는 한 쌍에서 읽습니다). 다른 쌍).

모두 필요한 것에 달려 있습니다! 아직 벤치 마크를하지 않았습니다.