wyjaśnij raid md10, f2

14

Wiem, jak działa większość różnych macierzy RAID. Ale natknąłem się na zalecany tryb raid10, f2 podczas badania raidu dla oprogramowania linux. Naprawdę nie rozumiem, jak to działa na 2 lub 3 dyskach. czy ktoś mógłby mi to wyjaśnić? lub wskazać mi naprawdę dobry artykuł, który to wyjaśnia?

ksenoterracid
źródło

Odpowiedzi:

17

tak naprawdę myślę, że Wikipedia wyjaśnia to lepiej niż faktyczne dokumenty. Oto tekst z artykułu.

Sterownik RAID oprogramowania jądra Linux (zwany md, dla „wielu urządzeń”) może być wykorzystany do zbudowania klasycznej macierzy RAID 1 + 0, ale także (od wersji 2.6.9) jako jeden poziom [4] z kilkoma interesującymi rozszerzeniami [ 5]. Standardowy układ „bliski”, w którym każdy fragment jest powtarzany n razy w układzie pasków k-way, jest równoważny standardowemu układowi RAID-10, ale nie wymaga, aby n dzielił k. Na przykład układ n2 na dyskach 2, 3 i 4 wyglądałby następująco:

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
..  ..           ..  ..  ..        ..  ..  ..  ..

Przykład z 4 dyskami jest identyczny ze standardową macierzą RAID-1 + 0, natomiast przykład z 3 dyskami jest implementacją oprogramowania RAID-1E. Przykład z dwoma dyskami jest równoważny RAID 1. Sterownik obsługuje również układ „daleko”, w którym wszystkie dyski są podzielone na sekcje. Wszystkie części są powtarzane w każdej sekcji, ale są kompensowane przez jedno urządzenie. Na przykład układy f2 na tablicach 2- i 3-dyskowych wyglądałyby następująco:

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
..  ..               ..   ..   ..

Służy to do usuwania wydajności lustrzanej tablicy; sekwencyjne odczyty mogą być rozłożone, tak jak w RAID-0, losowe odczyty są nieco szybsze (może 10-20% z powodu użycia szybszych zewnętrznych sektorów dysków i krótszych średnich czasów wyszukiwania), a zapisy sekwencyjne i losowe są mniej więcej równe do innych lustrzanych nalotów. Układ działa dobrze w systemach, w których odczyty są częstsze niż w przypadku zapisu, co jest bardzo częstą sytuacją w wielu systemach. Pierwsze 1 / f każdego dysku to standardowa macierz RAID-0. W ten sposób można uzyskać wydajność rozkładania na dublowanym zestawie tylko 2 dysków. Z opcji bliskich i dalekich można korzystać jednocześnie. Fragmenty w każdej sekcji są przesunięte przez n urządzeń. Na przykład układ n2 f2 przechowuje 2 × 2 = 4 kopie każdego sektora, więc wymaga co najmniej 4 napędów:

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
..  ..  ..  ..        ..  ..  ..  ..  ..

Począwszy od Linuksa 2.6.18 sterownik obsługuje również układ przesunięcia, w którym każdy pasek jest powtarzany raz. Na przykład układy o2 na tablicach 2- i 3-dyskowych są określone jako:

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
..  ..         ..  ..  ..

Uwaga: k to liczba dysków, n #, f # i o # to parametry w opcji mdadm --layout. Linux może także tworzyć inne standardowe konfiguracje RAID za pomocą sterownika md (0, 1, 4, 5, 6).

ksenoterracid
źródło
6

Z tego, co przeczytałem, macierz RAID10 f2 przechowuje co najmniej 2 kopie każdego bloku i są przechowywane daleko od siebie.

Oto odpowiednie sekcje ze stron podręcznika man.

mdadm (8)

-p, --layout = Ta opcja konfiguruje dokładne szczegóły układu danych dla macierzy raid5 i raid10
...
Wreszcie opcje układu dla RAID10 to jedna z „n”, „o” lub „p”, po których następuje małe numer. Domyślna wartość to „n2”.

n sygnalizuje „bliskie” kopie. Wiele kopii jednego bloku danych ma podobne przesunięcia w różnych urządzeniach.

o sygnalizuje kopie „offsetowe”. Zamiast fragmentów powielanych w obrębie paska, całe paski są powielane, ale są obracane przez jedno urządzenie, więc zduplikowane bloki znajdują się na różnych urządzeniach. Zatem kolejne kopie bloku znajdują się w następnym napędzie i są o jeden kawałek dalej.

f sygnalizuje „ dalekie ” kopie (wiele kopii ma bardzo różne przesunięcia). Zobacz md (4), aby uzyskać więcej informacji na temat „blisko” i „daleko”.

md (4)

RAID10 zapewnia kombinację RAID1 i RAID0, a czasami znany jako RAID1 + 0. Każdy blok danych jest duplikowany kilka razy, a wynikowy zbiór bloków danych jest dystrybuowany na wielu dyskach. Podczas konfigurowania macierzy RAID10 konieczne jest określenie liczby wymaganych replik każdego bloku danych (zwykle będzie to 2) i określenie, czy repliki powinny znajdować się „blisko”, „przesunąć” czy „daleko”. (Uwaga: układ „przesunięcia” jest dostępny tylko od wersji 2.6.18).

Po wybraniu repliki „ near ”, wiele kopii danego fragmentu zostanie ułożonych kolejno na paskach tablicy, więc dwie kopie bloku danych prawdopodobnie będą w tym samym przesunięciu na dwóch sąsiednich urządzeniach.

Po wybraniu „ dalekich ” replik wielokrotne kopie danego fragmentu są ułożone dość daleko od siebie. Pierwsza kopia wszystkich bloków danych zostanie rozłożona na wczesnej części wszystkich dysków w stylu RAID0, a następnie następna kopia wszystkich bloków zostanie rozłożona na późniejszej części wszystkich dysków, zawsze zapewniając, że wszystkie kopie danego bloku są na różnych dyskach.

Układ „ daleki ” może zapewnić sekwencyjną wydajność odczytu równą wydajności macierzy RAID0, ale kosztem obniżonej wydajności zapisu.

Po wybraniu replik „offsetowych” wiele kopii danego fragmentu jest umieszczanych na kolejnych dyskach i na kolejnych odsunięciach. W efekcie każdy pasek jest powielany, a kopie są kompensowane przez jedno urządzenie. Powinno to nadać charakterystykę odczytu podobną do „dalekiej”, jeśli zostanie użyty odpowiednio duży rozmiar fragmentu, ale bez konieczności szukania zapisu.

Należy zauważyć, że liczba urządzeń w macierzy RAID10 nie musi być wielokrotnością liczby replik każdego bloku danych, muszą one mieć co najmniej tyle samo urządzeń, co repliki.

Jeśli na przykład tworzona jest tablica z 5 urządzeniami i 2 replikami, dostępna będzie przestrzeń odpowiadająca 2,5 urządzeń, a każdy blok będzie przechowywany na dwóch różnych urządzeniach.

Zoredache
źródło
wygląda na to, że offset jest
właściwą
Myślę, że bardziej wizualne wyjaśnienia Wikipedii są jaśniejsze ... więc opublikowałem je tutaj.
ksenoterrakid
2

To interesujące i dobrze wyjaśnione. Jednak zwykła macierz RAID1 ma również tę funkcję, przynajmniej w oprogramowaniu RAID dla systemu Linux, aby móc utrzymywać wiele czytników równolegle przy bardzo dobrej wydajności:

Dane są odczytywane z dowolnego urządzenia. Sterownik próbuje rozdzielić żądania odczytu na wszystkie urządzenia, aby zmaksymalizować wydajność.
[...] Teoretycznie posiadanie N-dyskowego RAID1 pozwoli N na odczyt sekwencyjnych wątków ze wszystkich dysków. (man 4 md, sekcja RAID1)

Wygląda na to, że RAID10, w swoim bliskim układzie, jest bardziej odpowiedni do tego zachowania (przyspieszenie nie jednowątkowego we / wy, takiego jak RAID0, ale wielowątkowe we / wy). n2f2 z 4 dyskami podobnymi do RAID1 z 4 dyskami.

Układ n2 z 4 dyskami wykona obie czynności: podwoi wydajność odczytu dla pojedynczego wątku i czterokrotnie zwiększy wydajność odczytu dla dwóch wątków (jeśli planer Linux md RAID10 jest dobrze zaimplementowany, jeden wątek powinien czytać na parze, a drugi na druga para).

Wszystko zależy od tego, czego potrzebujesz! Nie robiłem jeszcze testów porównawczych.

alphanet
źródło