Jaka jest szansa, że ZFS jest w stanie spójnym (nawet jeśli niektóre dane zostały utracone), a pula jest użyteczna / czytelna, gdy się zrestartuje?
ZFS działa jak transakcja system zarządzania bazą danych w tym przypadku stare dane nie są zastępowane na miejscu podczas aktualizacji, jak w przypadku tradycyjnych systemów plików. Zamiast tego nowe dane są zapisywane w innym miejscu na dysku, a następnie struktury metadanych systemu plików są aktualizowane tak, aby wskazywały na nowe dane, i dopiero wtedy blok starych danych zostaje zwolniony do ponownego wykorzystania przez system plików. W ten sposób nagła utrata zasilania spowoduje pozostawienie starej kopii danych, jeśli nowe aktualizacje danych nie są w 100% zobowiązane do trwałego przechowywania. Nie zastąpisz połowy bloku lub czegoś podobnego, powodując uszkodzenie danych.
Do tego ZFS używa zaawansowany system sum kontrolnych który pozwala systemowi plików wykrywać błędne lub uszkodzone dane.
Jeśli używasz ZFS z nadmiarową pamięcią, ten sam schemat pozwala systemowi plików wybierać między dwiema lub więcej nadmiarowymi kopiami danych podczas naprawy systemu plików. Oznacza to, że jeśli masz dwie kopie danego bloku i tylko jedna z nich pasuje do przechowywanej sumy kontrolnej, system plików wie, że powinien naprawić uszkodzoną kopię / kopie za pomocą czystej.
Naprawy te mogą się zdarzyć w locie, gdy próbujesz odczytać lub zmodyfikować dane - wtedy system plików może zdać sobie sprawę, że żądane bloki nie są całkowicie koszerne - lub podczas zfs scrub
operacja. Powszechnie planuje się okresowe uruchamianie scrubu w pulach ZFS, które mają pliki rzadko dostępne, ponieważ system plików w przeciwnym razie nie wykryłby utraty danych sprzętowych w normalnym trybie działania. Powszechnie zdarza się, że pule ZFS działają na podejrzanym sprzęcie, aby po każdym zaroślach pokazać pewną liczbę stałych bloków.
Szorowanie jest trochę podobne fsck
dla innych systemów plików typu Unix, z wyjątkiem tego, że dzieje się on online, podczas gdy system plików jest zamontowany i użyteczny; dzieje się to w tle i tylko wtedy, gdy basen jest bezczynny. Również, fsck
implementacje zazwyczaj sprawdzają tylko metadane, a nie dane, ale zarówno sumy kontrolne ZFS, jak i mogą wykrywać błędy w obu. Jeśli te mechanizmy integralności zdecydują, że jeden z bloków wymaga wymiany, może użyć sum kontrolnych, aby zdecydować, która kopia zastąpić uszkodzone kopie.
zakładając, że nośniki pamięci, sprzęt i oprogramowanie nadal działają niezawodnie / poprawnie, co jeszcze musiało pójść nie tak, aby wynik był utratą puli?
O ile mi wiadomo, nie ma takiego przypadku. Albo jedna z trzech rzeczy, o których wspomniałeś, nie powiodła się, albo ZFS zamontuje pulę i odczyta z niej.
Niewątpliwie niedostateczna nadmiarowość + awaria dysku (lub inny poważny problem sprzętowy) to jedna sprawa
Tak, choć może się to zdarzyć w subtelniejszym przypadku niż myślę, że rozważasz.
Weź proste lustro dwukierunkowe. Myślę, że myślisz, że jeden z dysków został fizycznie usunięty z komputera lub przynajmniej z jakiegoś powodu niedostępny. Ale wyobraź sobie, że sektor 12345 jest uszkodzony na obu dyskach. Wtedy wszystkie sprytne sumy kontrolne i nadmiarowość w ZFS nie pomogą: obie kopie są uszkodzone, więc nie można odczytać całego bloku zawierającego ten sektor.
Ale tutaj jest sprytny bit: ponieważ ZFS jest zarówno systemem plików, jak i menedżerem woluminów - w przeciwieństwie do Lash-Up, takiego jak sprzętowy RAID + ext4 lub LVM2 + ext4 - a zpool status
polecenie powie Ci, który plik jest nieodwracalnie uszkodzony. Po usunięciu tego pliku pula natychmiast powraca do stanu nieuszkodzonego; problem został usunięty. Lash-upy, które oddzielają system plików od elementów RAID i LVM, nie mogą tego zrobić.
Które sytuacje muszą powstać, zanim się zdarzą i co musi się wydarzyć, aby je wywołać?
Jedyny znany mi przypadek to coś w rodzaju powyższego przykładu, w którym uszkodzenie danych spowodowało uszkodzenie wystarczającej liczby nadmiarowych kopii kluczowych metadanych systemu plików, których ZFS nie może odczytać.
Z tego powodu dzięki dzisiejszym niezwykle dużym dyskom - 100 bilionom bitów! - Zalecam skonfigurowanie ZFS (lub innego systemu RAID lub LVM) o co najmniej podwójnej redundancji. Oznacza to w kategoriach ZFS raidz2 , 3-kierunkowe lustra lub wyższe.
Mimo to ZFS zwykle przechowuje dodatkowe kopie wszystkich metadanych systemu plików poza normalnymi poziomami nadmiarowości używanymi w zwykłych danych pliku. Na przykład 2-kierunkowe lustro będzie przechowywać 2 kopie zwykłych danych użytkownika, ale 4 kopie wszystkich metadanych. Możesz wybrać ten numer, aby uzyskać wydajność, ale nie możesz go całkowicie wyłączyć.
W podręczniku ZFS znajduje się rozdział Tryby awarii ZFS które możesz znaleźć oświecające.