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

Przewodnik migracji Borg Backup dotyczący przenoszenia repozytorium na nową pamięć masową
Przenieś repozytorium Borg jako jeden spójny obiekt: zatrzymaj procesy zapisujące, zachowaj klucze i tożsamość, zweryfikuj przywracanie, a następnie zaktualizuj klientów, zachowując źródło.

Proces konserwacji repozytorium Restic: sprawdzanie, przycinanie, kompresowanie i testowanie przywracania
Restic nie ma osobnej komendy compact: prune wykonuje przepakowywanie. Chroń blokady i wolne miejsce, sprawdź ponownie po zakończeniu, a na koniec wykonaj odizolowane przywracanie.

Przewodnik odzyskiwania kopii zapasowej Time Machine z serwera NAS w przypadku uszkodzonej lub porzuconej historii kopii zapasowych
Zachowaj stary pakiet. Przed wyborem naprawy lub nowego łańcucha rozdziel dostęp do NAS, tożsamość miejsca docelowego, uszkodzenia obrazu i porzuconą historię.

