Jak zapobiegać wyczerpaniu metadanych Btrfs podczas intensywnych obciążeń domowego serwera związanych z migawkami

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.

Serwery Btrfs z dużą liczbą migawek unikają wyczerpania metadanych, chroniąc zapas nieprzydzielonego miejsca na fragmenty i ograniczając intensywność zmian metadanych, zanim pojawi się ENOSPC.

Ten artykuł prewencyjny zakłada, że system plików jest nadal sprawny i umożliwia zapis. Celem jest odpowiednio wczesne monitorowanie alokacji metadanych, nieprzydzielonego miejsca na urządzeniu, liczby migawek i intensywności zmian obiektów, aby serwer nigdy nie osiągnął stanu odzyskiwania opisanego w poradniku naprawy ENOSPC. Sama częstotliwość tworzenia migawek nie stanowi problemu; o tym, jak szybko rośnie presja na metadane, decydują łącznie czas przechowywania, wzorce aktualizacji, zapisy atime, miliony obiektów systemu plików oraz konserwacja przeprowadzana w niewłaściwym momencie.

Śledź metadane i nieprzydzielone miejsce jednocześnie

Rejestruj wynik polecenia btrfs filesystem usage w zwykły dzień oraz po najbardziej obciążonym oknie migawek lub kopii zapasowych. Monitoruj przydzielone i wykorzystane metadane, alokację danych oraz nieprzydzielone miejsce na urządzeniu, zamiast polegać wyłącznie na df.

Opis pamięci masowej Btrfs wyjaśnia, że nieprzydzielone miejsce finansuje nowe fragmenty, gdy system plików potrzebuje dodatkowej pojemności na metadane.

Utwórz alert na podstawie ostrożnie ustalonego minimalnego zapasu, dopasowanego do obciążenia, a nie uniwersalnego procentu. Istotnym sygnałem nie jest po prostu informacja „wykorzystano 70% metadanych”, lecz to, czy Btrfs nadal ma wystarczająco dużo nieprzydzielonego miejsca, aby utworzyć kolejną wymaganą grupę bloków metadanych.

Utwórz alert, zanim ENOSPC zacznie się samoczynnie nasilać

Wyczerpanie metadanych może utrudnić czyszczenie, ponieważ usuwanie migawek i plików również wymaga aktualizacji metadanych. Traktuj zmniejszające się nieprzydzielone miejsce jako wczesne ostrzeżenie i działaj, póki zwykłe polecenia konserwacyjne mają jeszcze przestrzeń do pracy.

Specjalistyczne opracowanie dotyczące ENOSPC wyjaśnia, że ENOSPC zaczyna się od braku zapasu, a nie dopiero wtedy, gdy każda pozornie dostępna jednostka miejsca w systemie plików zostanie zajęta.

Po przekroczeniu minimalnego poziomu w pierwszej kolejności wstrzymaj tworzenie nowych migawek i zadania intensywnie korzystające z metadanych. Nie rozpoczynaj szerokiego równoważenia tylko dlatego, że zadziałał alert; potwierdź, która klasa miejsca jest przeciążona, i zachowaj wystarczającą przestrzeń roboczą na najmniejsze działanie naprawcze.

Ogranicz czas przechowywania migawek, nie tylko ich częstotliwość

Godzinowe migawki mogą być praktyczne, gdy stare migawki są regularnie usuwane, a intensywność zmian danych jest umiarkowana. Niebezpieczny jest stale rosnący harmonogram, który zachowuje wiele generacji często zmienianych plików.

Praktyczna konfiguracja Snapper pokazuje, że limity przechowywania ograniczają historię migawek, zamiast pozwalać automatyzacji na nieograniczone gromadzenie punktów przywracania.

Dobieraj czas przechowywania według wartości odzyskiwania: więcej krótkoterminowych punktów dla aktywnie zmienianej konfiguracji, mniej długoterminowych punktów dla intensywnie modyfikowanych obrazów maszyn wirtualnych lub danych kontenerów oraz niezależne kopie zapasowe dla wszystkiego, czego horyzont odzyskiwania wykracza poza możliwości lokalnych migawek.

Ogranicz intensywność zmian metadanych w oknach migawek

Szukaj obciążeń, które przepisują metadane bez zmiany użytecznej zawartości plików: częstych aktualizacji czasów dostępu, drzew pakietów lub kontenerów z ogromną liczbą obiektów, rotujących pamięci podręcznych oraz aplikacji, które podczas każdego skanowania modyfikują wiele katalogów.

Analiza migawek Btrfs opublikowana przez LWN zauważa, że aktualizacje atime nasilają intensywność zmian w migawkach, mimo że zwykłe migawki początkowo współdzielą istniejące dane i metadane.

Stosuj ustawienia montowania i aplikacji odpowiednie dla danego obciążenia, na przykład ograniczając zbędne zmiany atime, gdy jest to bezpieczne. Nie wyłączaj globalnie funkcji metadanych bez zrozumienia wymagań aplikacji; najpierw ograniczaj zapisy, które nie mają wartości z punktu widzenia odzyskiwania.

Monitoruj wzrost metadanych jako trend

Gromadź informacje o wykorzystaniu metadanych i statystyki błędów Btrfs na tym samym pulpicie co pojemność puli. Porównuj wzrost dzień do dnia i tydzień do tygodnia z liczbą migawek, wdrożeniami kontenerów, zadaniami tworzenia kopii zapasowych oraz dużymi zmianami w drzewach plików.

Aktualny kolektor Btrfs w Netdata udostępnia monitorowanie wykorzystania metadanych, dzięki czemu presja na metadane nie jest widoczna wyłącznie podczas interaktywnej sesji rozwiązywania problemów.

Utwórz alert zarówno na podstawie trendu, jak i bezwzględnego progu. Serwer, który po wprowadzeniu nowych zasad tworzenia kopii zapasowych zyskuje kilka gigabajtów metadanych dziennie, wymaga zbadania na długo przed osiągnięciem krytycznego poziomu pozostałego zapasu.

Testuj obciążenia intensywnie korzystające z migawek przed wydłużeniem czasu przechowywania

Przed zwiększeniem częstotliwości migawek lub dodaniem nowego kontenera, narzędzia do tworzenia kopii zapasowych albo obciążenia z dużą liczbą małych plików zmierz wzrost metadanych w jednym reprezentatywnym cyklu, zanim rozszerzysz zasadę na cały serwer.

Niedawny artykuł o wewnętrznym działaniu Btrfs wyjaśnia, że metadane odzwierciedlają strukturę systemu plików, a nie stanowią stałego narzutu określanego wyłącznie przez łączny rozmiar plików.

Zasady zapobiegania działają wtedy, gdy wzrost metadanych jest przewidywalny, przechowywanie jest porządkowane zgodnie z harmonogramem, a nieprzydzielony zapas odzyskuje część pojemności po zwykłej konserwacji. Powiązany artykuł ZimaSpace dotyczący odzyskiwania po ENOSPC metadanych Btrfs jest właściwą ścieżką dalszego postępowania, gdy zapisy zaczynają kończyć się niepowodzeniem lub system plików wyczerpał już przestrzeń roboczą alokacji.

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.