Dlaczego równoważenie Btrfs zatrzymuje się po przeniesieniu danych na większy dysk?

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.

Równoważenie Btrfs może sprawiać wrażenie zatrzymanego po dodaniu większego dysku, ponieważ relokacja nadal potrzebuje wolnego obszaru roboczego dla bloków i może przenosić cały system plików.

Zastąpienie urządzenia większym lub skopiowanie na nie danych nie powoduje automatycznego zagęszczenia, równomiernego rozłożenia ani zakwalifikowania wszystkich grup bloków Btrfs do relokacji. Równoważenie działa na poziomie grup bloków, tworzy tymczasowy obszar roboczy, aktualizuje metadane i może być ograniczane przez najwolniejsze urządzenie, migawki, sumy kontrolne lub inną operację wymagającą wyłącznego dostępu. Pierwszym zadaniem jest odróżnienie rzeczywiście zablokowanej relokacji od powolnego pełnego równoważenia, które nadal robi postępy.

Sprawdź, czy równoważenie działa, jest wstrzymane czy oczekuje

Sprawdź stan równoważenia, liczbę przetworzonych fragmentów, dziennik jądra, przepustowość dysków i opóźnienia poszczególnych urządzeń. Zanotuj, czy polecenie działa na pierwszym planie, w tle, jest wstrzymane, anulowane lub automatycznie wznowione po ponownym uruchomieniu.

Równoważenie może przez długi czas relokować jedną intensywnie używaną grupę bloków, zanim widoczny licznik się zmieni. Wskazówki ArchWiki dotyczące Btrfs pokazują użycie stanu równoważenia i wykorzystania systemu plików, aby odróżnić trwającą pracę od polecenia, które już się zatrzymało.

Jeśli nie ma operacji wejścia-wyjścia, stan się nie zmienia, a dziennik jądra zgłasza błąd, uznaj operację za zatrzymaną, a nie powolną. Zachowaj pierwszy komunikat o błędzie przed ponownym uruchomieniem równoważenia z innymi filtrami.

Sprawdź, czy większe urządzenie i system plików zostały powiększone

Porównaj rozmiar fizycznego urządzenia, rozmiar partycji, rozmiar urządzenia Btrfs i przydział systemu plików. Większy dysk zastępczy może nadal udostępniać starą granicę partycji lub stary rozmiar urządzenia Btrfs.

Potwierdź kolejno każdą warstwę: pojemność sprzętową, tablicę partycji, urządzenie blokowe, spis urządzeń Btrfs i przydział systemu plików. SUSE wyjaśnia, że najpierw trzeba powiększyć urządzenie, dlatego równoważenie nie może wykorzystać pojemności, której Btrfs jeszcze nie widzi.

Artykuł ZimaSpace o braku wzrostu pojemności po wymianie dysku zawiera powiązaną kontrolę warstw, którą należy wykonać, zanim winą za problem obarczy się relokację.

Odróżnij wolne bajty od wolnego obszaru roboczego dla grup bloków

Porównaj całkowity rozmiar urządzenia z ilością miejsca już przydzielonego do grup bloków Btrfs. System plików może pokazywać użytkownikom wolne bajty, a jednocześnie nie mieć całkowicie nieprzydzielonego obszaru wystarczającego do utworzenia tymczasowej grupy bloków potrzebnej do relokacji.

Dokumentacja równoważenia Btrfs wyjaśnia, że relokacja wymaga całkowicie nieużywanego obszaru roboczego grup bloków; różni się on od zwykłego wolnego miejsca na poziomie plików i może powodować błąd ENOSPC podczas równoważenia.

Jeśli obszar roboczy jest ograniczony, najpierw odzyskaj całkowicie nieużywane grupy bloków za pomocą wąskiego filtra wykorzystania, zamiast uruchamiać kolejne pełne równoważenie. Nie usuwaj migawek bez zastanowienia, dopóki nie zmierzysz ich wpływu na przydział fragmentów.

-15% OFF

Sprawdź, czy pełne równoważenie uruchomiono bez filtrów

Przejrzyj pierwotne polecenie. Równoważenie bez filtrów danych lub metadanych próbuje relokować cały system plików, nawet jeśli rzeczywistym celem jest tylko zagęszczenie słabo używanych fragmentów lub przeniesienie przydziałów z jednego urządzenia.

Pełne równoważenie może trwać wiele godzin lub dni, ponieważ każda wybrana grupa bloków jest zapisywana ponownie. Podręcznik btrfs-balance systemu Linux ostrzega, że uruchomienie bez filtrów przenosi dane i metadane w całym systemie plików oraz aktualizuje wszystkie wskaźniki bloków.

Użyj danych wyjściowych stanu i wcześniejszej historii powłoki, aby ustalić aktywne filtry. Nie anuluj i nie uruchamiaj ponownie operacji wielokrotnie, ponieważ przerwane równoważenie może pozostawić częściowo wypełnione grupy bloków, które nadal zużywają obszar roboczy.

Sprawdź wolne urządzenia, błędy i konkurujące operacje wymagające wyłącznego dostępu

Sprawdź dane SMART, błędy transmisji, resetowania połączenia, przekroczenia limitu czasu USB lub SATA oraz opóźnienia poszczególnych urządzeń. Szybkość równoważenia ograniczają odczyty ze starych lokalizacji, zapisy w nowych lokalizacjach, weryfikacja sum kontrolnych i aktualizacje metadanych.

Sprawdź również scrub, dodawanie lub usuwanie urządzenia, zmianę rozmiaru systemu plików, usuwanie migawek, wysyłanie lub odbieranie danych oraz inne operacje magazynowe. Podręcznik administracji Btrfs firmy Red Hat opisuje zmiany urządzeń i równoważenie jako operacje relokacji, dlatego nakładające się zadania konserwacyjne mogą powodować duże obciążenie, nawet gdy żaden dysk nie uległ awarii.

Jeśli jedno urządzenie wykazuje powtarzające się resety lub skrajnie wysokie opóźnienia, wstrzymaj równoważenie i zdiagnozuj tę ścieżkę przed wymuszeniem kolejnej relokacji. Kontynuowanie pracy z niestabilnym urządzeniem może zmienić problem z wydajnością w problem wymagający odzyskiwania danych.

Użyj wąskich filtrów i limitów przy kontrolowanym ponownym uruchomieniu

Po zachowaniu bieżącego stanu zacznij od filtra o najniższym ryzyku, który obejmuje puste lub słabo używane grupy bloków. Ogranicz liczbę fragmentów przetwarzanych podczas jednego uruchomienia, aby obserwować każdy rezultat przed zwiększeniem zakresu.

Stopniowo zwiększaj próg wykorzystania i traktuj dane oraz metadane osobno. Relokacja metadanych może generować wiele dodatkowych aktualizacji i nie musi być agresywnie zagęszczana tylko dlatego, że średnie wykorzystanie wygląda na niskie.

Wstrzymuj, wznawiaj lub anuluj operację za pomocą obsługiwanych mechanizmów sterowania równoważeniem, zamiast zabijać proces. Potwierdź, że bieżąca grupa bloków została ukończona, a zapisany stan równoważenia odpowiada następnemu działaniu.

Sprawdź rozkład i pojemność po równoważeniu

Porównaj przydział na poszczególnych urządzeniach, profile danych i metadanych, nieprzydzielony obszar roboczy, wykorzystanie systemu plików oraz liczbę przeniesionych fragmentów przed kontrolowanym równoważeniem i po nim.

Pomyślny rezultat nie musi oznaczać idealnie równego wykorzystania bajtów na każdym dysku. Przegląd jądra systemu Linux wymienia zintegrowaną obsługę wielu urządzeń i zmianę rozmiaru online, dlatego końcowa kontrola powinna koncentrować się na prawidłowych profilach, użytecznym przydziale, sprawnych urządzeniach i wystarczającym obszarze roboczym na potrzeby przyszłych zapisów.

Problem jest rozwiązany, gdy równoważenie zakończy się lub osiągnie zamierzony zakres określony filtrami, większe urządzenie otrzyma nowe przydziały, wolny obszar roboczy dla fragmentów zostanie przywrócony, a zwykłe zapisy, migawki, scrub i ponowne uruchamianie systemu będą działać bez nieoczekiwanego wznowienia równoważenia.

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.