Dlaczego RAID 1 + 6 nie jest bardziej powszechnym układem?


17

Dlaczego zagnieżdżone poziomy RAID 1 + 5 lub 1 + 6 są prawie niespotykane? W zagnieżdżonym artykule na temat poziomów RAID w Wikipedii brakuje obecnie ich sekcji. Nie rozumiem, dlaczego nie są one bardziej powszechne niż RAID 1 + 0, szczególnie w porównaniu z potrójnym dublowaniem RAID 1 + 0.

Oczywiste jest, że czas odbudowy staje się coraz bardziej problematyczny, ponieważ pojemności dysków rosną szybciej niż ich wydajność lub niezawodność. Powiedziano mi, że RAID 1 odbudowuje się szybciej i że macierz RAID 0 par macierzy RAID 1 pozwala uniknąć tego problemu, ale na pewno zrobi to macierz RAID 5 lub 6 macierzy RAID 1. Spodziewałbym się przynajmniej, że będą wspólną alternatywą dla RAID 1 + 0.

W przypadku 16 dysków o pojemności 1 TB oto moje obliczenia naiwnego prawdopodobieństwa skorzystania z kopii zapasowej, tj. Przy uproszczonym założeniu, że dyski są niezależne, a prawdopodobieństwo nawet:

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

Jeśli jest to poprawne, to jest całkiem jasne, że RAID 1 + 6 jest wyjątkowo bardziej niezawodny niż RAID 1 + 0, ponieważ zmniejsza pojemność pamięci tylko o 25%. Tak jak ma to miejsce w ogólności, teoretyczna przepustowość zapisu (nie licząc czasów wyszukiwania) to pojemność pamięci / rozmiar tablicy × liczba dysków × przepustowość zapisu najwolniejszego dysku w tablicy (poziomy RAID z redundancją mają większe wzmocnienie zapisu dla zapisów, które nie wypełniaj paska, ale zależy to od wielkości porcji), a teoretyczna przepustowość odczytu jest sumą przepustowości odczytu dysków w tablicy (z wyjątkiem tego, że RAID 0, RAID 5 i RAID 6 mogą być teoretycznie ograniczone przez odpowiednio najwolniejsze, 2. najwolniejsze i 3. najwolniejsze prędkości odczytu dysku). Tzn., Zakładając identyczne dyski, które wynosiłyby odpowiednio 8 ×, 7 ×,

Ponadto weź pod uwagę czterokrotność RAID 0 trzykrotnie RAID 1, tj. RAID 1 + 0 potrójne dublowanie 12 dysków, i sekwencję RAID 6 par RAID 1, tj. RAID 1 + 6 z 12 dysków. Ponownie są to identyczne dyski 1 TB. Oba układy mają tę samą liczbę dysków (12), taką samą pojemność pamięci (4 TB), taką samą proporcję redundancji (2/3), taką samą maksymalną przepustowość zapisu (4 ×) i tę samą maksymalną przepustowość odczytu ( 12 ×). Oto moje obliczenia (jak dotąd):

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

Tak, może to wyglądać na przesadę, ale w przypadku gdy potrójne dublowanie jest używane do rozdzielenia klonu do tworzenia kopii zapasowych, RAID 1 + 6 można równie dobrze wykorzystać, po prostu zamrażając i usuwając 1 z każdego dysku z wyjątkiem 2 RAID 1 pary, a przy tym nadal ma znacznie lepszą niezawodność, gdy jest zdegradowana niż zdegradowana macierz RAID 1 + 0. Oto moje obliczenia dla 12 dysków zdegradowanych o 4 w ten sposób:

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

Jednak przepustowość odczytu może być w tym czasie zmniejszona do 6 × dla RAID 1 + 6, podczas gdy RAID 1 + 0 jest zredukowany tylko do 8 ×. Niemniej jednak, jeśli dysk ulegnie awarii, gdy tablica jest w tym zdegradowanym stanie, macierz RAID 1 + 6 miałaby 50–50 szansę na pozostanie na poziomie około 6 × lub ograniczenie do 5 ×, podczas gdy macierz RAID 1 + 0 miałaby ograniczać się do czterokrotnie wąskiego gardła. Przepustowość zapisu powinna być niezmieniona (może nawet wzrosnąć, jeśli dyski wykorzystane do tworzenia kopii zapasowych były ograniczającymi najwolniejszymi dyskami).

W rzeczywistości oba mogą być postrzegane jako „potrójne dublowanie”, ponieważ zdegradowana macierz RAID 1 + 6 jest w stanie oddzielić dodatkową grupę 4 dysków RAID 6. Innymi słowy, ten 12-dyskowy układ RAID 1 + 6 można podzielić na 3 zdegradowane (ale funkcjonalne) macierze RAID 6!

Czy więc większość ludzi nie zagłębiła się w matematykę? Czy w przyszłości zobaczymy więcej RAID 1 + 6?


2
Wygląda na to, że obliczenie thinkput nie uwzględnia wzmocnienia zapisu w celu stworzenia parzystości.
JamesRyan,

1
@JamesRyan: Tak, rzeczywiście uważałem, że parzystość wymaga napisania. Do tego właśnie służy „pojemność pamięci / rozmiar macierzy” - odwrotność tego stanowi współczynnik wzmocnienia zapisu, nie uwzględniając dalszego wzmocnienia zapisu związanego z dyskami półprzewodnikowymi. Należy zauważyć, że obejmuje to również wzmocnienie zapisu nadmiarowości RAID 1. Zasadniczo współczynnik wzmocnienia zapisu jest równy odwrotności 1 minus proporcja redundancji. Zatem 50% redundancja daje współczynnik wzmocnienia zapisu równy 2; Nadmiarowość 62,5% (10/16) daje współczynnik wzmocnienia zapisu ~ 2,67 (16/6).
James Haigh,

1
nie, to jest nieprawidłowe. Każdy zapis RAID6 zajmuje 6 IO, a każdy zapis RAID1 wymaga 2 IO, są one multiplikatywne. Tak więc w RAID 1 + 6 każdy zapis zajmie 12 IO, dla RAID 10 to 2 IO. Przepustowość zapisu na 12 dyskach będzie 1x dla RAID1 + 6 i 6x dla RAID10!
JamesRyan,

@JamesRyan: Oh, rozumiem, dokąd teraz zmierzasz - w przypadku zapisów, które są mniejsze niż pełny pasek, współczynnik wzmocnienia zapisu może podwoić się w przypadku RAID 1 + 6, zmniejszając o połowę maksymalną przepustowość zapisu. Dla pełnego paska tak w przykładzie 6 × 2 jest 12 zapisów, ale zapominasz, że dotyczy to danych o 4 porcjach. Dla odpowiednio 4, 3, 2, 1 fragmentów współczynniki wzmocnienia zapisu wynoszą (6 × 2) / 4 = 3, (5 × 2) / 3 = ~ 3,33, (4 × 2) / 2 = 4, ( 3 × 2) / 1 = 6, co daje maksymalną przepustowość zapisu 4 ×, 3,6 ×, 3 ×, 2 ×. Dla RAID 1 + 0 4 × 3 jest to (4 × 3) / 4, (3 × 3) / 3, (2 × 3) / 2, (1 × 3) / 1, co daje stałą 4 ×. …
James Haigh,

2
Na podstawie obliczeń stwierdziłeś, że RAID1 + 6 ma taką samą przepustowość zapisu jak RAID10 z potrójnymi wartościami. W rzeczywistości RAID1 + 6 nie ma nawet zdalnej przepustowości zapisu RAID10, więc twoje obliczenia lub założenia, na których się opierają, są błędne . Próbowałem ci pomóc zrozumieć, dlaczego, jeśli nie chcesz słuchać, możemy marnować nasz czas, ale to ty go marnujesz.
JamesRyan

Odpowiedzi:


17

Ogólnie powiedziałbym, że RAID 1 + 0 będzie częściej używany niż 1 + 5 lub 1 + 6, ponieważ RAID 1 + 0 jest wystarczająco niezawodny i zapewnia nieznacznie lepszą wydajność i więcej użytecznej pamięci.

Myślę, że większość ludzi uznałaby porażkę pełnej pary RAID 1 w grupie RAID 1 + 0 za dość niewiarygodnie rzadkie wydarzenie, w którym warto przełamać kopie zapasowe - i prawdopodobnie nie są zbyt entuzjastycznie nastawieni do uzyskania mniej niż 50% swojej fizycznej sprawności dysk jako przestrzeń użytkowa.

Jeśli potrzebujesz lepszej niezawodności niż RAID 1 + 0, to idź! .. ale większość ludzi prawdopodobnie tego nie potrzebuje.


1
Problem z RAID 1 + 0 polega na tym, że ma zły stosunek niezawodności do pamięci. Jeśli RAID 6 można dowolnie rozszerzyć na dowolną liczbę parzystości (poniżej n - 1), to dla tych samych dysków można uzyskać zarówno zwiększoną pamięć, jak i lepszą niezawodność niż RAID 1 + 0. W powyższym przykładzie, gdyby możliwe było posiadanie RAID 6 z 4 parzystościami, miałbyś 50% więcej pamięci i maksymalną przepustowość zapisu niż RAID 1 + 0, a jednocześnie miałbyś wyjątkowo wyższą niezawodność. RAID 6 z 3 lub 4 parzystościami miałby dobry kompromis między niezawodnością a pamięcią masową.
James Haigh,

4
@JamesHaigh RAID 6 vs RAID 1 + 0 to znacznie inna dyskusja niż RAID 1 + 6 vs RAID 1 + 0, nieco zmieniłeś temat. Wydaje się, że Zdzdz3 ZFS byłby na twojej drodze? W każdym razie, macie rację, istnieją pewne zalety w zakresie wydajności, które RAID 1 + 0 utrzymuje w porównaniu z RAID 6, takie jak małe zapisy w jednym bloku, które muszą dotykać znacznie mniejszej liczby dysków (i wracając do raidz3, ZFS obsługuje to inteligentnie, pisząc wiele pełne kopie zamiast pisać na wszystkich dyskach w przypadku małych zapisów)
Shane Madden

Przepraszam, tak, myślę, że tak naprawdę ścigam. Od tego ostatniego komentarza piszę nowe pytanie dotyczące RAID z 3 lub więcej parzystościami . To byłoby lepsze niż RAID 1 + 6. Uzyskiwanie pożądanego kompromisu byłoby również bardziej elastyczne i prostsze. Możesz kontynuować tę kwestię w tym pytaniu.
James Haigh,

3
RAID 6 nie może być rozszerzany liniowo, ponieważ nie działa w ten sposób. Obliczenie syndromu dla drugiej parzystości nie będzie w prosty sposób skalowane do strony trzeciej. Ale możesz dość łatwo robić mniejsze grupy RAID 6 - nie ma prawdziwego powodu, aby robić 14 + 2, a zamiast tego możesz zrobić 2 + 2 lub 4 + 2 i zyskać dużą niezawodność.
Sobrique

1
@JamesHaigh To, czego wydajesz się chcieć, to 12-drożne przebdz8. Oparty na logice obliczania parzystości, która na stałe określa procesory nawet przy trywialnych danych. Pojedyncza parzystość jest zasadniczo XOR (łatwa). Podwójna parzystość ma coś wspólnego z kwadratami (nie jest to trudne, ale nie łatwe). Potrójna parzystość jest oparta na kostkach lub podobna (twarda). 4, 5, 6, 7 lub 8 parzystości wymaga jeszcze większych (w skali wykładniczej) obliczeń (które mogą wymagać komputerów kwantowych, aby nadążyć). Pamiętaj tylko, że wraz ze wzrostem kształtu Zero wzrasta w IOPS. Dla mediów, kogo to obchodzi? W przypadku maszyn wirtualnych zabija.
killermist

16

Praktyczna odpowiedź leży gdzieś na skrzyżowaniu specyfikacji sprzętowych kontrolerów RAID, średnich rozmiarów dysków, współczynników kształtu i konstrukcji serwera.

Większość sprzętowych kontrolerów RAID ma ograniczoną liczbę obsługiwanych poziomów RAID. Oto opcje RAID dla kontrolera HP ProLiant Smart Array:

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

Uwaga: „adm” to tylko potrójne odbicie

Obsługa kontrolerów LSI RAID: 0, 1, 5, 6, 10, 50, and 60

Dlatego te kontrolery są w stanie RAID 50 i 60 tylko jako poziomy zagnieżdżone. LSI (z domu Dell PERC ) i HP stanowią większość rynku adapterów pamięci masowej dla przedsiębiorstw. To główny powód, dla którego nie widzisz czegoś takiego jak RAID 1 + 6 lub RAID 61 w terenie.

Poza tym zagnieżdżone poziomy RAID poza RAID 10 wymagają stosunkowo dużej liczby dysków. Biorąc pod uwagę rosnące obecnie dostępne pojemności dysków (z 3,5-calowymi dyskami nearline SAS i SATA), w połączeniu z faktem, że wiele obudów serwerów zaprojektowano wokół klatek dysków 8 x 2,5 ”, nie ma wielkiej szansy na fizyczną konfigurację RAID 1+ 6 lub RAID 61.

Obszary, w których możesz zobaczyć coś takiego jak RAID 1 + 6, to rozwiązania RAID dla dużych obudów. Linux MD RAID lub ZFS są do tego zdecydowanie zdolne. Ale do tego czasu awarię dysku można złagodzić za pomocą dysków twardych lub zapasowych. Niezawodność RAID nie stanowi obecnie większego problemu, pod warunkiem, że unikniesz toksycznego poziomu RAID i kombinacji sprzętowych (np. RAID 5 i 6 TB). Ponadto wydajność odczytu i zapisu zostałaby wyodrębniona przez warstwy warstw i buforowania. Średnie obciążenia pamięci zwykle korzystają z jednego lub drugiego.

W końcu wydaje się, że potrzeba / popyt po prostu nie istnieje.


1
Istnieje zapotrzebowanie w postaci replikacji tablic. Znam kilka witryn, które wykonują DR dla wielu witryn, czyli praktycznie mówiąc RAID 10 lub 5 lub 6 replikowane na zdalnej stronie (RAID 10 lub 5 lub 6). W niemałej części - poza pewnym poziomem niezawodności dysku, twoje procesory, kontrolery, sieci, moc, klimatyzacja, pożar centrów danych stanowią większe zagrożenie dla Twojej niezawodności.
Sobrique

1
Nie sądzę, aby OP rozważał nawet replikację lub użycie w wielu lokalizacjach.
ewwhite

1
Nie, prawdopodobnie nie. Jak mówisz - po prostu nie ma popytu, ponieważ to przesada. To jedyny przypadek użycia, w którym mogę wymyślić, gdzie nie jest przesada :)
Sobrique,

(Krótko) skonfigurowałem coś w rodzaju raidu 6 + 1 - lokalny syncmirror Netapp stworzy identyczną kopię siebie i multipleksuje odczyty w obu pleksach, jednocześnie dublując zapisy. Jest on głównie używany do migracji Netapp V-Series do nowych jednostek wewnętrznych LUN, jednak jeśli chciałbym podwoić moją niezawodność, mógłbym to zrobić.
Basil,

12
  • Masz malejący zwrot z niezawodności. RAID 6 raczej nie spowoduje awarii nawet na nieprzyjemnych dyskach SATA o współczynniku UBER 1 na 10 ^ 14. Na dyskach FC / SAS Twój UBER wynosi 1 na 10 ^ 16 i zyskujesz znacznie większą wydajność.

  • Niezawodność grupy RAID nie chroni przed przypadkowym usunięciem. (więc i tak potrzebujesz kopii zapasowych)

  • poza pewnymi poziomami RAID, prawdopodobieństwo awarii złożonej na dyskach staje się niższe niż złożonej awarii infrastruktury wspierającej (zasilanie, sieć, wyciek z klimatyzacji itp.)

  • Napisz karę. Każdy przychodzący zapis na macierzy RAID 61 spowoduje 12 operacji IO (naiwnie wykonane). RAID 6 jest już bolesny w scenariuszach „niższego poziomu” pod względem liczby procesorów IOP przypadających na zapis TB. (a na wyższym poziomie wskaźnik awarii i tak jest 100 razy lepszy)

  • to nie jest „25% redukcja”, to kolejne 25% redukcja. Twój 16 TB zmienia się w 6 TB. Otrzymujesz 37,5% dostępnej przestrzeni dyskowej. Potrzebujesz 3x więcej dysków na pojemność i 3x tyle miejsca w centrach danych. Prawdopodobnie uzyskałbyś większą niezawodność, po prostu tworząc mniejsze zestawy RAID6. Nie przeprowadzałem obliczania liczb, ale próbuję - na przykład sumy RAID 6 w zestawach 3x 3 + 2 (15 dysków, mniej narzutu pamięci niż RAID10). Lub zamiast tego wykonuj lustra trójdrożne.

Powiedziawszy to - jest to bardziej powszechne niż myślisz, aby to zrobić w przypadku DR dla wielu witryn. Prowadzę replikowane macierze pamięci, w których mam grupy RAID5 / 6 / DP RAID asynchronicznie lub synchronicznie z witryną DR. (Nie synchronizuj, jeśli możesz tego uniknąć - wygląda dobrze, w rzeczywistości jest okropny).

W przypadku mojej aplikacji NetApps jest to mikroklastra z niektórymi lustrzanymi agregacjami. W moich VMAX-ach mamy Symmetrix Remote Data Facility (SRDF). A moje 3PAR-y wykonują zdalne kopiowanie.

Jest drogi, ale zapewnia poziom DR w centrum danych.

Jeśli chodzi o potrójne lustra - użyłem ich, ale nie jako bezpośrednich miar odporności RAID, ale raczej jako pełnych klonów jako części strategii tworzenia kopii zapasowych. Zsynchronizuj trzecie dublowanie, podziel je, zamontuj na osobnym serwerze i wykonaj kopię zapasową, używając zupełnie innej infrastruktury. A czasami obracaj trzecie lustro jako opcję odzyskiwania.

Chodzi mi o to, że w moim bezpośrednim doświadczeniu jako administrator pamięci masowej - w około 40 000 nieruchomości wrzecionowych (tak, codziennie wymieniamy dziesiątki dysków) - musieliśmy iść na kopie zapasowe dla różnych powodów w ciągu ostatnich 5 lat, ale żadna z nich nie spowodowała awarii grupy RAID. Dyskutujemy o względnych zaletach i dopuszczalnym czasie odzyskiwania, punkcie odzyskiwania i oknach przestoju. U podstaw tego wszystkiego leży ZAWSZE koszt dodatkowej odporności.

Nasza tablica przewiduje wszystkie operacje odczytu i awarii nośników oraz agresywnie oszczędza i testuje dyski.

Nawet jeśli istnieje odpowiednia implementacja RAID, korzyści i kosztów po prostu nie ma. Pieniądze wydane na przestrzeń dyskową lepiej byłoby zainwestować w dłuższy okres przechowywania lub częstszy cykl tworzenia kopii zapasowych. Lub szybsze połączenia. Lub po prostu ogólnie szybsze wrzeciona, ponieważ nawet przy identycznych liczbach sprężystości, szybsza odbudowa części zamiennych zwiększa prawdopodobieństwo awarii złożonej.

Myślę więc, że dlatego udzieliłbym odpowiedzi na twoje pytanie:

Często nie widzisz RAID 1 + 6 i 1 + 5, ponieważ korzyści kosztowe po prostu się nie kumulują. Biorąc pod uwagę skończoną kwotę pieniędzy i biorąc pod uwagę potrzebę wdrożenia rozwiązania do tworzenia kopii zapasowych, wszystko, co robisz, to wydawanie pieniędzy na zmniejszenie częstotliwości przestojów. Są lepsze sposoby wydawania tych pieniędzy.


„Niezawodność grupy RAID nie chroni przed przypadkowym usunięciem. (więc i tak potrzebujesz kopii zapasowych) ”- nie sugerowałem, że powoduje to, że kopie zapasowe nie są konieczne (jestem świadom, że RAID nie jest kopią zapasową ). Właściwie sugeruję odwrotność mówiąc „skumulowane prawdopodobieństwo uciekania się do kopii zapasowej” - przyjmuję to, biorąc pod uwagę, że kopie zapasowe są standardową praktyką. Zgadzam się z tym punktem, ale jest to przedstawione jako przeciwstawienie się mojemu rozumowaniu na temat RAID 1 + 6, co nie ma sensu.
James Haigh,

„RAID 61” - RAID 6 + 1 to macierz RAID 1 macierzy RAID 6. To odwrócone zagnieżdżanie i myślę, że miałoby znacznie mniej niezawodności. To znaczy, co się stanie, jeśli 3 dyski ulegną awarii w tej samej zagnieżdżonej macierzy RAID 6? Czy cała zagnieżdżona macierz RAID 6 nie wymaga przebudowy? Te same dyski zagnieżdżone jako RAID 1 + 6 wytrzymają te same 3 awarie dysków bez przełączania w tryb offline żadnych działających dysków.
James Haigh,

„Poza pewnymi poziomami RAID, prawdopodobieństwo awarii złożonej na dyskach staje się niższe niż złożonej awarii infrastruktury wspierającej (zasilanie, sieć, wyciek z klimatyzacji itp.); „To kolejne 25% redukcji” - Prawda i prawda, to układ zagnieżdżania z nadmiarem umiejętności. Ale dlaczego jedna Ziemia miałaby używać macierzy RAID 0 trzykrotnie RAID 1? Dzięki za przypomnienie mi o potrójnym dublowaniu RAID 1 + 0! „Nie zrobiłem chrupania liczb”; „Lub zamiast tego wykonuj lustra trójdrożne.” - Naprawdę powinieneś wykonać kilka obliczeń, zanim podasz pomocniczy przypadek jako kontrprzykład. Obliczenia te należy zbadać…
James Haigh,

1
Moje bezpośrednie doświadczenie jest takie - mam 40 000 wrzecion w mojej posiadłości, w różnych konfiguracjach. W ciągu ostatnich 5 lat nie mieliśmy awarii grupy rajdowej. Użyłem potrójnych kopii lustrzanych, ale nie ze względu na odporność - służą one do tworzenia kopii klonowanych w celu wykonania kopii zapasowej. Użyłem replik wielu witryn z powodów DR - z których korzystałem - ale żadna z nich nie była potrzebna z powodu awarii RG.
Sobrique,

1
Nie rozumiesz, czym jest kara za pisanie. Chodzi o to, że w przypadku pojedynczego nadpisania musisz odczytać z dwóch urządzeń parzystości, obliczyć parzystość, odpisać ci urządzenia parzystości TWP i blok docelowy. Zatem 6 IO na „zapis”. Nie jest to ograniczenie oprogramowania ani implementacji. Częściowo łagodzisz za pomocą dobrego buforowania zapisu, ale tylko częściowo.
Sobrique,

3

Nowoczesne i zaawansowane systemy nie implementują takich kształtów, ponieważ są nadmiernie skomplikowane, całkowicie niepotrzebne i sprzeczne z jakimkolwiek pozorem wydajności.

Jak zauważyli inni, stosunek surowej przestrzeni do powierzchni użytkowej wynosi zasadniczo 3: 1. Są to zasadniczo trzy kopie (dwie zbędne). Ze względu na koszt obliczeniowy „raid6” (dwa razy więcej, jeśli jest dublowany) i wynikającą z tego utratę IOPS, jest to bardzo nieefektywne. W ZFS, który jest bardzo dobrze zaprojektowany i dostrojony, równoważnym rozwiązaniem pod względem pojemności byłoby utworzenie paska 3-kierunkowych lusterek.

Na przykład, zamiast lustra 6-kierunkowych kształtów raid6 / raidz2 (łącznie 12 dysków), co byłoby bardzo nieefektywne (również nie jest czymś, co ZFS ma do zaimplementowania), mielibyśmy 4 x 3-drożne lustra (także 12 dyski). I zamiast IOPS o wartości 1 dysku, masz IOPS o wartości 4 dysków. Jest to ogromna różnica, zwłaszcza w przypadku maszyn wirtualnych. Całkowita szerokość pasma dla tych dwóch kształtów może być bardzo podobna w sekwencyjnych odczytach / zapisach, ale pasek 3-kierunkowych zwierciadeł byłby zdecydowanie bardziej responsywny w przypadku losowego odczytu / zapisu.

Podsumowując: raid1 + 6 jest po prostu niepraktyczny, nieefektywny i nic dziwnego, że nikt poważny w kwestii pamięci masowej nie rozważyłby rozwoju.

Aby wyjaśnić rozbieżność IOPS: przy lustrze kształtów raid6 / raidz2 przy każdym zapisie wszystkie 12 dysków musi działać jako jeden. Całkowity kształt nie ma możliwości podzielenia działania na wiele działań, które wiele kształtów może wykonać niezależnie. Z paskiem 3-kierunkowych lusterek każdy zapis może być czymś, z czym musi sobie poradzić tylko jedno z 4 lusterek, więc kolejny zapis, który się pojawi, nie musi czekać na cały omnibus, zanim poradzi sobie z dalszymi działaniami .


2

Ponieważ nikt nie powiedział tego wprost: wydajność zapisu w Raid6 nie jest nieznacznie gorsza. Jest okropny poza opisem, jeśli jest obciążony.

Pisanie sekwencyjne jest w porządku i tak długo, jak buforowanie, scalanie zapisu itp. Jest w stanie to zatuszować, wygląda dobrze. Przy dużym obciążeniu rzeczy wyglądają źle i jest to główny powód, dla którego konfiguracja 1 + 5/6 prawie nigdy nie jest używana.


Zgadzam się, ale przede wszystkim dlatego, że to, co powiedziałeś, jest po prostu super podsumowaną wersją tego, co powiedziałem. I oczywiście się ze sobą zgadzam.
killermist

1

Szukaj razy

Problem polega na tym, że wzmocnienie wyszukiwania zapisu zachowuje się zupełnie inaczej niż wzmocnienie przepustowości zapisu . Minimalne wzmocnienie przepustowości zapisu z parzystością występuje, gdy cały pasek jest zapisywany jednocześnie (nazwijmy to przymiotnikiem „pełnym paskiem”), jednak minimalne wzmocnienie wyszukiwania zapisu występuje odwrotnie, gdy cały zapis po wyszukiwaniu w urządzeniu wirtualnym pasuje do pojedynczy kawałek. Zanim przejdziemy do szczegółów, relacje są znacznie łatwiejsze do przekazania w formie tabelarycznej:

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]

gdzie n jest całkowitą liczbą dysków, n₁ jest liczbą dysków w grupach RAID 1, a n₅ i n₆ są liczbą grup odpowiednio w macierzach RAID 5 lub RAID 6. Przykłady dotyczą przykładu z 12 dyskami w pytaniu (odpowiednie wiersze to „ *bolded*”); przykładami poziomów RAID 1 + 0, 1 + 5, 1 + 6 są odpowiednio 4 × 3, 6 × 2, 6 × 2.

Należy zauważyć, że tylko współczynnik wzmocnienia przepustowości zapisu pełnego paska jest bezpośrednio związany z proporcją redundancji. Przypadki jednoczęściowe są bardziej skomplikowane dla osób z parzystością. Powstają, ponieważ napisanie pojedynczego fragmentu wymaga odczytu, który jest najłatwiejszy z fragmentów parzystości lub innych fragmentów danych, przed zapisaniem fragmentów parzystości wraz z nowym fragmentem danych. (Nie są one bezpośrednio zwielokrotniane, ponieważ indukowane odczyty należy zamiast tego pomnożyć przez odpowiedni współczynnik przepustowości odczytu / wzmocnienia amplifikacji dla RAID 1, oba równe 1; patrz poniżej.)

Niestety wybranie wielkości fragmentu, która minimalizuje to dodatkowe zwiększenie przepustowości zapisu, ma efekt uboczny polegający na maksymalizacjiwzmocnienie poszukiwania zapisu. W przypadku drobnych zapisów z pomijalnym czasem zapisu w porównaniu z czasem wyszukiwania wydajność zapisu w przypadku bardzo małych rozmiarów fragmentu (w celu uzyskania pełnego paska) wynosi tylko 1 ×, podobnie jak w przypadku kopii lustrzanej, ponieważ wymaga, aby wszystkie dyski próbowały części dla każdego zapisu i uzyskana przepustowość z mobilizacji wszystkich tych dysków są nieistotne. Dzielił stosunek czasu zapisu do szukania czasu przez liczbę dysków w macierzy, ale w przypadku małych zapisów było to już znikome. Nie ma sensu używać tak małego fragmentu, aby nawet najmniejsze zapisy były pełne. W przypadku pism wystarczająco małych, aby wyczuć efekty wyszukiwania, najlepiej pasować do jednego kawałka.

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)]

Uwaga: środkowe 2 kolumny przepustowości można zignorować, biorąc pod uwagę rozsądny rozmiar fragmentu, który jest większy niż zapisów, dla których czas wyszukiwania jest znaczący, ale wystarczająco mały, aby duże zapisy były pełne. Duży fragment drugiej kolumny przepustowości jest bardziej zbliżony do dysków łączonych. „Mały” zapis oznacza, że ​​efekt przepustowości jest znikomy.

Posiadanie nieodpowiednio małego fragmentu zwiększa również efekt wzmocnienia wyszukiwania dla odczytów, choć nie tak bardzo i tylko w przypadku pełnego paska.

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           *

Uwaga: „do n” jest spowodowane tym, że gdy jednocześnie odbywa się tylko jeden odczyt, teoretycznie możliwe jest zmobilizowanie wszystkich dysków w celu znalezienia odpowiednich miejsc i zbiorowego odczytu danych w celu uzyskania maksymalnej dużej ciągłej przepustowości odczytu.

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×*

Uwaga: Ponownie środkowe 2 kolumny przepustowości można zignorować, biorąc pod uwagę rozsądny rozmiar porcji. Trzecia kolumna przepustowości jest ponownie ściśle związana z proporcją redundancji.

Jednak wystarczająco duży rozmiar fragmentu oznacza, że ​​małe odczyty nigdy nie są pełne. Biorąc pod uwagę efektywną implementację i odpowiedni rozmiar porcji, wydajność odczytu powinna być proporcjonalna do liczby identycznych dysków, jeśli nie ulegnie pogorszeniu.

Tak naprawdę „współczynnik wzmocnienia” jest o wiele bardziej skomplikowany niż wzór w pytaniu, w którym rozważano jedynie pełne zwiększenie przepustowości. W szczególności wydajność zapisu 6 × 2 RAID 1 + 6 dla równoczesnych zapisów, które są na tyle małe, że można je wyszukać, będzie gorsza niż wydajność 4 × 3 RAID 1 + 0. A w przypadku niewielkich zapisów, które są poszukiwane, wydajność może wynosić tylko około 3 z 4 × 3 RAID 1 + 0 w najlepszym przypadku (tj. Przy doskonałej implementacji).

Po wyjaśnieniu tego problemu porównanie 12 dysków nie ma bezpośredniego zwycięzcy:

                                  | 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

Uwaga 1: Pełna kopia przechowywanych danych to odpowiednio czterokrotna macierz RAID 0 lub macierz RAID 6 zdegradowana o 4/6. Uwaga 2: Istnieje nawet szansa na to, czy awaria dysku obciąży jedną z 4 zdegradowanych par macierzy RAID 1, czy pogorszy jedną z 2 normalnych par.

Niemniej jednak podwoiłaby wydajność odczytu macierzy RAID 6 z 6 dyskami, a mała przepustowość zapisu powinna być o 25% lepsza (1,5 / 1,2) ze względu na to, że wymagane odczyty zostały podzielone pomiędzy pary macierzy RAID 1, a RAID 6 oczywiście robi mają odpowiednie wnioski, a więc w aplikacjach o wysokiej dostępności, które mają większe zapisy lub które są bardziej zaniepokojony wydajność odczytu niż wydajności zapisu, może tam jest nisza dla RAID 1 + 6 przecież. Ale to nie wszystko…

Złożoność

Jest to do tej pory tylko teoretycznie (głównie kombinatoryka ), w praktyce złożoność będzie oznaczać, że implementacje RAID 1 + 6 mogą mieć braki, które tracą szanse i nie osiągają teoretycznych rezultatów. RAID 6 jest już bardziej złożony, a zagnieżdżanie dodaje nieco więcej złożoności.

Na przykład nie jest od razu oczywiste, że 6 × 2 RAID 1 + 6 można wyodrębnić jako posiadające 3 niezależne wirtualne głowice odczytu zdolne do jednoczesnego odczytu 3 sąsiadujących dużych odczytów o przepustowości 4 × każdy, podobnie jak 4 × 3 RAID 1 + 0. Po prostu zagnieżdżanie 6 par RAID 1 w macierzy RAID 6 przy użyciu programowego RAID może nie być tak eleganckie; implementacja może być głupia i thrash (choć nie przetestowałem jeszcze tej hipotezy).

Złożoność wiąże się również ze zwiększonym kosztem rozwoju wdrożeń i narzędzi. Chociaż mogą istnieć aplikacje, które mogłyby skorzystać z takiego zagnieżdżenia, ulepszenia mogą nie być warte kosztów rozwoju.


Podaj źródło tych informacji. Praktyczny test z dużymi lub małymi zapisami nie zgadza się z sugerowaną wydajnością.
JamesRyan

@JamesRyan: To nie są informacje z drugiej ręki. Teoretyczne wyniki pochodzą z podstaw działania standardowych poziomów RAID. Wszystko, co jest potrzebne do teorii, to zrozumienie, jak działa RAID oraz zrozumienie logiki i pochodnych matematycznych. Jeśli te obliczenia zostały wykonane przez kogoś innego, to oczywiście podałbym to i w miarę możliwości podał linki w celach informacyjnych. Należy pamiętać, że istnieje wiele sposobów praktycznego wdrożenia RAID 1 + 6, ale różne wdrożenia mogą się różnić. Chciałbym wiedzieć, dlaczego Twój test praktyczny się nie zgadza.
James Haigh

@JamesRyan: Czy możesz podać więcej szczegółów na temat zastosowanej implementacji, używanych dysków, konfiguracji i metod testowania? Czy wypróbowałeś zarówno macierz RAID 6 składającą się z 6 par RAID 1, jak i macierz RAID 0 złożoną z 4 potrójnych macierzy RAID 1 z tymi samymi 12 dyskami i wielkością porcji? Czy to była programowa macierz RAID?
James Haigh,

Skoro proponujesz niesprawdzoną teorię, która przeczy konwencjonalnej mądrości, dlaczego nie wyszczególnisz swojej konfiguracji tam, gdzie wykazałeś, że działa? Domyślam się, że skoro matematyka różni się od wszystkich innych źródeł na ten temat, a także w testach w świecie rzeczywistym, powodem, dla którego nie działa, jest to, że matematyka jest błędna.
JamesRyan
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.