btrfs ERROR: błąd podczas równoważenia - Brak miejsca na urządzeniu

15

W moim systemie Kubuntu 12.04 zabrakło miejsca na partycji głównej i nie można go uruchomić. Polecenie df -hpokazuje dużo dostępnego miejsca (przy użyciu tylko 37%):

/dev/sda2        45G   17G   29G  37%

Następująca strona wskazuje, że powinienem uruchomić komendę balance:

https://btrfs.wiki.kernel.org/index.php/Problem_FAQ#I_get_.22Nie_space_left_on_device.22_errors.2C_but_df_says_I.27ve_got_lots_of_space

$ sudo btrfs fi balance start -dusage=5 /mount/point

Nie jestem do końca przekonany, że jest to najlepsze podejście, ale to jedyne, jakie znalazłem. Jednak po uruchomieniu tego polecenia pojawia się następujący błąd:

ERROR: error during balancing '/blah/blah/blah' - No space left on device

Otrzymuję ten sam błąd z:

$ sudo btrfs fi balance start -dusage=1 /mount/point

Jakie jest właściwe rozwiązanie?

MountainX-for-Monica
źródło
Jeśli masz dużo pamięci RAM i stabilne źródło zasilania, możesz użyć tymczasowego ramdysku, aby uzyskać dodatkowe miejsce. Na dole tego artykułu znajduje się przykładowa sesja . Jednak przyjęta poniżej odpowiedź jest znacznie prostszym podejściem.
joeytwiddle

Odpowiedzi:

15

Istnieją sposoby balancena uruchomienie się w tej sytuacji.

sudo btrfs fi show
sudo btrfs fi df /mount/point
sudo btrfs fi balance start -dusage=10 /mount/point

Jeśli polecenie wyważenia kończy się na „Gotowe, musiałeś przenieść 0 z XX porcji”, musisz zwiększyć parametr procentowy „dusage”, aż przynajmniej jedna porcja zostanie przeniesiona.

jeśli polecenie równowagi nie powiedzie się z:

ERROR: error during balancing '/blah/blah/blah' - No space left on device

Może być konieczne usunięcie plików z urządzenia, aby zrobić miejsce. Następnie ponownie uruchom komendę balance.

Jednak dzięki blogowi Marc'a: btrfs - naprawa pełnych problemów w systemie plików Btrfs tutaj jest inna opcja:

Jednym ze sposobów obejścia tego jest dodanie urządzenia (wystarczy klucz USB) do systemu plików btrfs. Powinno to pozwolić na uruchomienie salda, a następnie można usunąć urządzenie z usunięciem urządzenia btrfs po zakończeniu salda. Na liście powiedziano również, że jądro 3.14 może naprawić niektóre problemy z równoważeniem, których nie potrafią starsze jądra, więc daj szansę, jeśli twoje jądro jest stare.

MountainX-for-Monica
źródło
7
Odkryłem, że od czasu do czasu muszę również mount -oremount,clear_cache /mountpointnaprawić obliczenia wolnego miejsca. (Stają się skorumpowani ...)
rrauenza,
1
@rrauenza, dzięki! Powinieneś dodać to jako odpowiedź :)
mwfearnley
0

Próbowałem wszystkiego w zaakceptowanej odpowiedzi, a blog Marca, w tym zwiększanie -dusageparametru i dodawanie kolejnego urządzenia blokowego, wszystko bezskutecznie. Nawet po usunięciu niektórych plików i zwolnieniu miejsca na dysku, który był pełny, balancenie był w stanie ukończyć. Z jakiegoś powodu zawsze wydawało się, że przenosi dane na prawie pełny dysk. W końcu dla mnie zadziałało ograniczenie balansu do pełnego urządzenia:

btrfs balance start -ddevid=<dev_id> <path>

gdzie dev_idmożna znaleźć:

btrfs fi show 
z7sg
źródło
Żadne z nich nie zadziałało
spełnione
Spowodowało to awarię mojego systemu i wolumin stał się niedostępny, nawet po ponownym uruchomieniu systemu. Zainstalowałem wolumin z EXT4 i teraz mam nadzieję, że pozbędę się bardzo wrażliwego systemu BTRFS, który uważam za porażkę z wieloma problemami projektowymi.
Al Bundy
Raz też zepsułem wolumin btrfs, ponieważ przerwałem btrfs balanceproces. Aby tego uniknąć, zawsze zalecam stosowanie tego, -dusage=XXaby proces zakończył się w rozsądnym czasie. Najpierw zaczynaj od małych liczb, a następnie zwiększaj (5, 10, 20, ...). Można również monitorować postęp istniejącej długotrwały równowadze z btrfs balance statusjak wykazano tutaj . (Po zerwaniu woluminu udało mi się przynajmniej wyodrębnić pliki btrfs restore.)
joeytwiddle
0

sudo apt-btrfs-snapshot delete-old-than 3d Usuwa migawki starsze niż 3 dni. Podczas przenoszenia danych migawki stają się nie na miejscu i rzeczywiste dane muszą być zapisywane w wielu miejscach na dysku. To usuwa migawki starych danych w starych lokalizacjach i zwalnia te sektory do ponownego użycia. Polecam także duperemove do deduplikacji danych i zakresu w systemie plików btrfs.

D337z
źródło