Pasek ZFS na sprzętowej macierzy RAID 6. Co może pójść nie tak?

9

Mam 36 * 4 TB HDD SAN Rack. Kontroler RAID nie obsługiwał RAID60 i nie więcej niż 16 dysków twardych w jednej grupie RAID. Postanowiłem więc utworzyć 2 grupy RAID6 z 16 dyskami twardymi lub 4 z 8 dysków twardych. Chcę uzyskać całą pamięć jako jedną partycję.

Co więc może pójść nie tak, jeśli użyję puli ZFS na sprzętowym RAID6? Tak, wiem, że zdecydowanie zaleca się używanie natywnych dysków twardych lub trybu tranzytowego. Ale nie mam tej opcji.

Czy powinienem trzymać się z daleka od ZFS i nalotów na oprogramowanie w tej sytuacji? (Najbardziej interesuje mnie kompresja i migawki)

Severgun
źródło
2
Jeśli zamierzasz korzystać z ZFS, to po prostu odsłoń wszystkie dyski osobno (czasami nazywane trybem HBA) i pozwól ZFS sobie z tym poradzić - to robi najlepiej. Mamy na to kilku prawdziwych ekspertów (na początek), którzy ci w tym pomogą - jakiego dokładnie kontrolera dysku używasz?
Chopper3
1
Metodą tą będziesz podważać wiele funkcji ZFS, ale ogólnie nie zaszkodzi to zrobić w ten sposób. W tej konfiguracji sumowanie kontrolne jest nieco bardziej bezużyteczne, ponieważ kontroler RAID będzie wyodrębniał wszystkie szczegóły dysku. Bardziej interesuje mnie, dlaczego mówisz, że nie możesz używać JBOD. assuredsan 3530 są urządzeniami obsługującymi JBOD.
Spooler
2
Czekałbym na ewwhite - jest w środkowej części USA, więc śpi, ale zna ZFS lepiej niż ktokolwiek, kogo znam
Chopper3,
1
@Severgun Również 4 dyski twarde pozostają bezużyteczne, ponieważ nie ma potrzeby korzystania z hotspare Naprawdę uważasz, że lepiej jest, jeśli macierz RAID z uszkodzonym dyskiem będzie utykać w trybie awaryjnym, niż automatycznie odbierać zapasowy dysk, przebudowywać i wracać do pełnego- status funkcjonalny?
Andrew Henle,
1
@ Chopper3 Odpowiem ... niechętnie.
ewwhite

Odpowiedzi:

5

Postanowiłem więc utworzyć 2 grupy RAID6 z 16 dyskami twardymi lub 4 z 8 dysków twardych.

To nie jest najlepszy sposób na robienie rzeczy. Może działać wystarczająco dobrze, ale w zależności od wymagań dotyczących wydajności może nie działać.

Idealny rozmiar macierzy RAID5 / 6 będzie taki, że dokładna wielokrotność ilości danych „obejmujących” macierz odpowiada rozmiarowi bloku systemu plików zbudowanego na niej.

Macierze RAID5 / 6 działają jako urządzenia blokowe - pojedynczy blok danych obejmuje dyski w macierzy, a ten blok zawiera również dane parzystości. Większość kontrolerów RAID zapisuje porcję danych o wielkości dwóch wielkości na każdym dysku w macierzy - której dokładną wartość można skonfigurować w lepszych systemach RAID - a twoja jednostka Dot Hill jest jednym z tych „lepszych systemów RAID”. To jest ważne.

Tak więc potrzeba N x (ilość danych przechowywanych na porcję dysku), aby objąć macierz, gdzie N jest liczbą dysków z danymi. 5-dyskowa macierz RAID5 ma 4 dyski „z danymi”, a 10-dyskowa macierz RAID6 ma 8 dysków z danymi.

Ponieważ gdy dane są zapisywane w macierzy RAID5 / 6, jeśli blok danych jest taki, że jest wystarczająco duży, aby objąć całą tablicę, parzystość jest obliczana dla tych danych - zwykle w pamięci kontrolera - wtedy cały pasek jest zapisywany w dysk. Prosty i szybki.

Ale jeśli część zapisywanych danych nie jest wystarczająco duża, aby objąć całą tablicę, co kontroler RAID musi zrobić, aby obliczyć nowe dane parzystości? Pomyśl o tym - potrzebuje wszystkich danych w całym pasku, aby ponownie obliczyć nowe dane parzystości.

Jeśli więc utworzysz macierz RAID6 z 16 dyskami i domyślną porcją 512 kb na dysk, oznacza to, że potrzeba 7 MB, aby „rozszerzyć” macierz.

ZFS działa ogólnie w blokach 128kb.

Zatem ZFS zapisuje blok 128 kB - do 16-dyskowej macierzy RAID6. W proponowanej konfiguracji oznacza to, że kontroler RAID musi odczytać prawie 7 MB z tablicy i ponownie wyliczyć parzystość dla tych 7 MB. Następnie przepisz całe 7 MB z powrotem na dysk.

Jeśli masz szczęście, wszystko jest w pamięci podręcznej i nie bierzesz wielkiego przeboju wydajności. (Jest to jeden z głównych powodów, dla których pozycja „nie używaj RAID5 / 6” ma takie zdanie - RAID1 [0] nie cierpi z tego powodu.)

Jeśli masz pecha i nie wyrównyłeś poprawnie partycji systemu plików, blok 128 kB obejmuje dwa paski RAID, które nie są w pamięci podręcznej, a kontroler musi odczytać 14 MB, ponownie wyliczyć parzystość, a następnie zapisać 14 MB. Wszystko, aby napisać jeden blok 128kB.

To właśnie musi się wydarzyć logicznie . Istnieje wiele optymalizacji, które mogą podjąć dobre kontrolery RAID w celu zmniejszenia IO i obciążenia obliczeniowego takich wzorców IO, więc może nie być tak źle.

Ale przy dużym obciążeniu zapisywaniem bloków 128 kB w losowych lokalizacjach istnieje naprawdę duża szansa, że ​​wydajność 16-dyskowej macierzy RAID6 z paskiem o wielkości 7 MB będzie absolutnie straszna.

W przypadku ZFS „idealna” podstawowa jednostka LUN RAID5 / 6 dla systemu plików ogólnego przeznaczenia, w którym większość dostępów jest faktycznie losowa, miałaby rozmiar paska równy nawet dzielnikowi 128 kB, taki jak 32 kB, 64 kB lub 128 kB. W takim przypadku ogranicza to liczbę dysków z danymi w macierzy RAID5 / 6 do 1 (co jest nonsensowne - nawet jeśli jest to możliwe do skonfigurowania, lepiej jest po prostu użyć RAID1 [0]), 2, 4 lub 8. Najlepsza wydajność w najlepszym przypadku byłoby użycie paska 128 kB dla macierzy RAID5 / 6, ale najlepszy przypadek nie zdarza się często w systemach plików ogólnego przeznaczenia - często dlatego, że systemy plików nie przechowują metadanych tak samo jak przechowuj dane pliku.

Zalecam skonfigurowanie macierzy RAID5 z 5 dyskami lub macierzy RAID6 z 10 dyskami, przy czym wielkość porcji na dysk jest wystarczająco mała, aby ilość danych obejmująca cały pasek macierzy wynosiła 64 kB (tak, zrobiłem to wcześniej dla ZFS - wiele razy). Oznacza to, że w przypadku macierzy RAID z 4 dyskami danych wielkość porcji na dysk powinna wynosić 16 kB, natomiast w przypadku macierzy RAID z 8 dyskami wielkość porcji na dysk powinna wynosić 8 kB.

Następnie pozwól ZFS korzystać z całej tablicy - nie dziel jej na partycje. ZFS dopasuje się odpowiednio do całego dysku, niezależnie od tego, czy jest to zwykły pojedynczy dysk, czy macierz RAID prezentowana przez kontroler RAID.

W takim przypadku, nie znając dokładnych wymagań dotyczących miejsca i wydajności, zaleciłbym ustawienie trzech 10-dyskowych macierzy RAID6 lub sześciu 5-dyskowych macierzy RAID5 o rozmiarze paska 64 kB, skonfigurowanie kilku gorących części zapasowych i zapisanie czterech dyski do wszystkiego, co pojawi się w przyszłości. Ponieważ coś będzie.

Z pewnością nie używałbym tego systemu dyskowego w trybie JBOD - jest to urządzenie w pełni zgodne z poziomem NEBS 3, które zapewnia znaczną ochronę niezawodności i dostępności wbudowaną w sprzęt. Nie wyrzucaj tego tylko dlatego, że „ZFS !!!!”. Jeśli jest to tani towar, który składa się z części? Tak, tryb JBOD z ZFS obsługujący RAID jest najlepszy - ale to NIE jest sprzęt, który masz. UŻYWAJ funkcji zapewnianych przez sprzęt.

Andrew Henle
źródło
Oznacza to, że w przypadku macierzy RAID z 4 dyskami danych wielkość porcji na dysk powinna wynosić 16 kB, natomiast w przypadku macierzy RAID 8-dyskowej wielkość porcji na dysk powinna wynosić 32 kB. Jestem trochę zmieszany z tą matematyką. Dlaczego 8 dysków - fragment 32kB? Popraw mnie, jeśli się mylę: 128kB (blok ZFS) / 3 (macierze RAID) = 43 kB na macierz RAID. RAID6 z 10 dysków 43kB / 8 = 5kB (niedostępny fragment) najbliższy rozmiar 8kB również niedostępny sprzętowo. A więc najlepsza wydajność niedostępna?
Severgun,
@Severgun Odkładam rozmiary kawałków do tyłu. Problem z dążeniem do absolutnie najlepszej wydajności na RAID5 / 6 polega na tym, że stanie się to tylko wtedy, gdy prawie wszystkie operacje IO będą idealnie pasować do rozmiaru paska macierzy RAID. Znaczna liczba operacji IO mniejsza niż rozmiar paska może poważnie obniżyć wydajność. Zastosowanie mniejszego rozmiaru bloku pomaga ograniczyć wpływ losowych zapisów w małych blokach. Z mojego doświadczenia wynika, że ​​lepiej jest zrezygnować z 1-2% możliwej maksymalnej wydajności w zamian za ograniczenie wypadania w najgorszym przypadku. Systemy plików ogólnego przeznaczenia mają zwykle dużą liczbę małych zapisów.
Andrew Henle,
(ciąg dalszy) 8 dysków danych w macierzy RAID5 / 6 o wielkości porcji 16 kB na dysk daje rozmiar paska 128 kB w całej macierzy. Podobnie fragmenty 32kB dla macierzy 4-dyskowej. ZFS zapisuje blok danych pliku 128kB na jednym urządzeniu - nie jest podzielony na wszystkie zdevs. Znowu jednak w przypadku systemu plików ogólnego przeznaczenia będzie dużo zapisów poniżej 128 kB, więc mniejszy rozmiar paska (64 kB) pozwoli uniknąć pogorszenia wydajności lepiej przy dużym obciążeniu zapisu, ale w najlepszym przypadku niewielkim kosztem - wydajność skrzynki.
Andrew Henle,
4

Dobra, ugryzę ...

To niewłaściwy sprzęt dla aplikacji. Konfiguracja DotHill ma takie same ograniczenia jak HP StorageWorks MSA2000 / P2000, ponieważ tylko 16 dysków może być używanych w jednej grupie macierzy.

ZFS na sprzętowej macierzy RAID lub wyeksportowanej jednostce SAN LUN niekoniecznie stanowi problem.

Jednak rozłożenie jednostek ZFS LUN na nieznane interkonekty w różnych obudowach rozszerzeń może powodować pewne ryzyko.

  • Na przykład, czy korzystasz z wielu ścieżek SAS w topologii pierścieniowej z podwójnymi kontrolerami?
  • Czy masz nadmiarowe okablowanie z powrotem na serwer?
  • Czy dyski zostały rozmieszczone pionowo między obudowami w sposób, który złagodziłby awarię pojedynczej obudowy / kabla / kontrolera i zapobiegłby zniszczeniu części paska RAID0?

Poważnie, warto ocenić, czy potrzebujesz całej pamięci w jednym obszarze nazw ...

Jeśli potrzebujesz tego typu pojemności w jednym uchwycie, powinieneś używać dedykowanej obudowy JBOD dołączonej do HBA i ewentualnie wielu jednostek głównych z elastycznym okablowaniem i inteligentniejszym układem.

ewwhite
źródło
1

Powinieneś BEZPOŚREDNIO podłączyć wszystkie dyski do urządzenia z systemem ZFS. Zdobądź SAS HBA i podłącz dyski do urządzenia obsługującego ZFS (np. Z systemem OmniOS lub SmartOS). Następnie możesz udostępnić przestrzeń za pośrednictwem NFS, SMB, iScsi ...

Tobi Oetiker
źródło
Powinieneś BEZPOŚREDNIO podłączyć wszystkie dyski do urządzenia z systemem ZFS. Niekoniecznie - wymiana uszkodzonych dysków w macierzy sprzętowej na niektórych kontrolerach jest łatwa : wyciągnij dysk twardy z zapaloną lampką awarii, a następnie włóż nowy. Nie trzeba administratora systemu uruchamiać poleceń ZFS w celu wymiany dysku. W konfiguracji korporacyjnej z setkami lub tysiącami serwerów i być może dziesiątkami tysięcy dysków twardych rozmieszczonych w wielu centrach danych, to jest problem. Napędy psują się o wiele bardziej niż zgnilizna bitów.
Andrew Henle,
@Tobi Oetiker powiedz mi, jak umieścić 36 dysków HDD 3,5 "w obudowie 2U
Severgun,
po prostu umieściliśmy je w dodatkowym pudełku ... użyj przedłużacza sas ... jak w przypadku dużych wdrożeń, może zapytaj, jak radosna jest obsługa.
Tobi Oetiker
@AndrewHenle Aby być uczciwym, możliwe jest osiągnięcie tej samej łatwej procedury wymiany i statusu LED z ZFS i odpowiednimi kartami HBA (może wymagać niewielkich skryptów, jeśli nie używa się rozwiązania w pakiecie).
user121391,
0

Przyczyną ZFS nad woluminami logicznymi HW RAID jest BARDZO ZŁA idea, ponieważ ZFS wymaga dostępu na poziomie bloku, aby właściwie funkcjonować. Tak, będzie można go używać, ale funkcjonalność nie będzie kompletna, dopóki dyski nie zostaną podłączone bezpośrednio do systemu operacyjnego za pośrednictwem karty HBA lub bezpośrednich połączeń SATA. Jednym z przykładów jest to, że w konfiguracji, którą proponujesz, ZFS nie może w rozsądny sposób chronić twoich danych przed zmianami poniższych danych (po drugiej stronie kontrolera HW RAID) i jako taki nie może zagwarantować bezpieczeństwa twoich danych . Jest to jeden z PIERWSZYCH powodów, dla których używany jest ZFS, a ponadto jest on bardzo szybki.

ZFS jest niesamowitą technologią i bardzo ją polecam. Ale musisz ponownie zajrzeć tutaj do swojej struktury, aby móc poprawnie z niej korzystać. Mianowicie ZFS tworzy bezpośrednio woluminy logiczne (vdevs) z dysków.

Wygląda na to, że musisz dokładnie przeczytać, jak działa ZFS, zanim dokładnie zrozumiesz, co zaproponowałeś, w przeciwieństwie do tego, co naprawdę należy zrobić.

Krwawy Żelazo
źródło
Tak, tak i tak. Rozumiem, jak ZFS działa tak bardzo, jak tylko mogę. Ale są pewne komplikacje: 1) Mam już obudowę SAN i muszę z niej korzystać. Nie buduję magazynu od podstaw. 2) To nie jest mój domowy serwer NAS, w którym mogę kupować i wyrzucać rzeczy. 3) Budżet na odbudowę konfiguracji pamięci wynosi zero . Z pamięci potrzebuję maksymalnej dostępnej prędkości zapisu z przestrzenią około 100 TB. Szukam ZFS głównie ze względu na kompresję i migawki. Mogę wypróbować btrfs, ale jest eksperymentalny. Hmm może być niestabilny ZoL? Nie wiem.
Severgun,
@Severgun Tak długo, jak wiesz, jakie są wady, moim zdaniem wszystko będzie dobrze. ZFS ma wiele fajnych funkcji (takich jak migawki), które działają niezależnie od innych. Większość porad w Internecie podkreśla znaczenie najlepszych praktyk we wszystkich obszarach, ale są to zalecenia, a nie surowe wymagania. Ten punkt stanie się mniej ważny w przyszłości, ponieważ coraz więcej dystrybucji LInux zmienia się na ZFS, a większość systemów Linux działa w wirtualizacji, więc będą one miały dokładnie taką sytuację.
user121391,
1
Przyczyną ZFS nad woluminami logicznymi HW RAID jest BARDZO ZŁA idea, ponieważ ZFS wymaga dostępu na poziomie bloku, aby właściwie funkcjonować. To takie złe, że nawet nie jest wystarczająco dobre, aby nazwać je złym. Najwyraźniej nie masz pojęcia, co oznacza urządzenie zgodne z NEBS 3, prawda? oprócz tego jest superduper szybki. ZFS to wiele dobrych rzeczy. „super duper fast” NIE jest jednym z nich. To szybki system plików. Tak też jest . W miarę upływu czasu systemy plików ZFS nie są szybkie.
Andrew Henle,