Lista kontrolna odzyskiwania metadanych Btrfs dla niemal pełnego serwera domowego

Eva Wong jest Technicznym pisarzem i stałym majsterkowiczem w ZimaSpace. Całe życie geek z pasją do homelabów i oprogramowania open-source, specjalizuje się w tłumaczeniu skomplikowanych koncepcji technicznych na przystępne, praktyczne przewodniki. Eva wierzy, że samodzielne hostowanie powinno być zabawą, a nie czymś onieśmielającym. Poprzez swoje samouczki umożliwia społeczności rozwiewanie tajemnic konfiguracji sprzętu, od budowy pierwszego NAS po opanowanie kontenerów Docker.

Bezpieczne podejście polega na traktowaniu ustabilizowania zapisu, odzyskania przestrzeni roboczej, uruchomienia wyłącznie filtrowanego balansu i zweryfikowania danych przed przywróceniem normalnej pracy jako sekwencji obserwowalnych etapów, a nie jako pojedynczego polecenia.

W niemal pełnym systemie plików Btrfs na serwerze domowym praktyczne ryzyko polega na tym, że Btrfs zgłosi ENOSPC lub przełączy system plików w tryb tylko do odczytu po wyczerpaniu przestrzeni na metadane. Zapisz bieżącą identyfikację i punkt odzyskiwania, zacznij od najmniej inwazyjnego testu rozróżniającego, zinterpretuj wyniki pozytywne i negatywne przed zmianą kolejnej zmiennej oraz przerwij działanie, gdy pamięć masowa stanie się niestabilna lub jedyna możliwa do odzyskania kopia byłaby narażona. Poniższa procedura kończy się dopiero wtedy, gdy pierwotne obciążenie zakończy się powodzeniem albo dowody osiągną granicę wymagającą eskalacji.

Ustabilizuj system plików przed próbą naprawy

Zatrzymaj kontenery, pobieranie, migawki i zadania intensywnie zapisujące logi na systemie plików, którego dotyczy problem. Zapisz błędy jądra oraz dane wyjściowe polecenia btrfs device stats w innej lokalizacji. Jeśli system plików został ponownie zamontowany w trybie tylko do odczytu lub zgłasza błędy sum kontrolnych, parent transid albo wejścia/wyjścia, pozostaw go w trybie tylko do odczytu do czasu uzyskania kopii możliwej do odzyskania.

Nie zaczynaj od btrfs check --repair, pełnego balansu, defragmentacji ani masowego usuwania. Najważniejsze pytanie brzmi, czy prawidłowy stan systemu plików nie ma przestrzeni roboczej na alokację, czy też błędy pamięci masowej uszkadzają metadane; rozpoczęcie od naprawy może utrudnić rozróżnienie tych sytuacji i zużyć pozostałą przestrzeń.

Etap bezpieczeństwa jest zaliczony, gdy usługi intensywnie zapisujące dane są zatrzymane, ważne dane mają drugą kopię oraz wiesz, które urządzenie blokowe i który punkt montowania sprawdzasz. Przejdź do obrazowania na potrzeby odzyskiwania, jeśli urządzenie resetuje się, znika lub gromadzi błędy odczytu.

Odczytaj informacje o alokacji zamiast skupiać się na ogólnej liczbie wolnego miejsca

Uruchom btrfs filesystem usage -T /mount, btrfs filesystem df /mount, btrfs device usage /mount i sprawdź najnowsze komunikaty jądra. Porównaj przydzieloną i używaną przestrzeń na metadane oraz nieprzydzieloną przestrzeń dostępną na każdym urządzeniu; samo standardowe df nie pokazuje, czy Btrfs może przydzielić kolejny fragment metadanych.

Ukierunkowany balans wymaga całkowicie niewykorzystywanej przestrzeni roboczej. Szczegółowy przewodnik po ukierunkowanym balansie Btrfs wyjaśnia, że niefiltrowany balans przepisuje wszystkie kwalifikujące się grupy bloków, a celem jest utrzymanie nieprzydzielonej przestrzeni na poziomie urządzeń, a nie tylko usunięcie dużego pliku i założenie, że metadane będą mogły się rozrosnąć.

Jeśli wykorzystanie metadanych jest wysokie, ale pozostała nieprzydzielona przestrzeń, niewielki filtrowany balans może odzyskać puste lub słabo wykorzystane fragmenty. Jeśli żadne urządzenie nie ma przestrzeni roboczej, najpierw bezpiecznie usuń zbędne dane lub migawki w małych partiach albo dodaj tymczasowe urządzenie odpowiednie dla profilu systemu plików; nie uruchamiaj relokacji, która nie będzie mogła się zakończyć.

Odzyskaj przestrzeń roboczą za pomocą najmniej inwazyjnego działania

Zacznij od usunięcia plików tymczasowych, które nie są zachowywane przez migawki, a następnie usuwaj wyłącznie potwierdzone, niepotrzebne migawki. Po każdej małej zmianie wykonaj synchronizację i ponownie sprawdź wykorzystanie. Jeśli balans jest uzasadniony, zacznij od btrfs balance start -dusage=0 -musage=0 /mount lub innego wąskiego filtra dobranego na podstawie zaobserwowanej alokacji, a nie od pełnego balansu.

Opis działania filtrowanego balansu w podręczniku Linuksa wskazuje, że filtry ograniczają relokację oraz że ENOSPC może wystąpić, gdy sam balans nie ma wystarczającej przestrzeni roboczej. Obserwuj btrfs balance status i logi jądra. Jeśli relokacja zwiększa liczbę błędów, zatrzymuje się z powodu usterek urządzenia lub zużywa ostatni margines bezpieczeństwa, anuluj ją i wróć do odzyskiwania w trybie tylko do odczytu.

Nie nakładaj filtrów i usuwania bez wykonywania pomiarów między kolejnymi krokami. Gałąź odzyskiwania kończy się powodzeniem, gdy metadane mają zapas, na wymaganych urządzeniach istnieje nieprzydzielona przestrzeń, a niewielki zapis kończy się bez nowego ENOSPC lub wymuszonego przełączenia w tryb tylko do odczytu.

Zweryfikuj dane i zapobiegaj natychmiastowemu nawrotowi problemu

Uruchom ponownie tylko jedną usługę niskiego ryzyka i odtwórz obciążenie, które pierwotnie zapełniło metadane, na przykład tworzenie migawki lub wiele zmian małych plików. Ponownie sprawdź wykorzystanie i logi jądra po wykonaniu obciążenia oraz po ponownym uruchomieniu systemu. Montowanie, które działa raz, ale przy normalnych zmianach ponownie przełącza się w tryb tylko do odczytu, nie oznacza odzyskania sprawności.

Skorzystaj z metody ZimaSpace, aby rozróżnić, czy migawki czy aktywne pliki zajmują przestrzeń NAS, zanim zmienisz zasady przechowywania. Migawki mogą utrzymywać zajęte zakresy, przez co usuwanie wydaje się nieskuteczne, a częste operacje na małych aktywnych plikach mogą utrzymywać wysokie obciążenie metadanych; właściwa zasada zależy od tego, który stan potwierdzą pomiary.

Przywróć normalną pracę dopiero wtedy, gdy system plików pozostaje zapisywalny, statystyki urządzenia przestają rosnąć, reprezentatywny plik można poprawnie odtworzyć lub zweryfikować za pomocą skrótu, a monitoring ostrzega, zanim ten sam margines ponownie zniknie. Uporczywe błędy strukturalne przekaż specjaliście ds. odzyskiwania Btrfs i pracuj na klonie zamiast powtarzać polecenia naprawcze na jedynej kopii.

Wsparcie i wskazówki

Więcej do przeczytania

Get More Builds Like This

Stay in the Loop

Get updates from Zima - new products, exclusive deals, and real builds from the community.

Stay in the Loop preferences

We respect your inbox. Unsubscribe anytime.