btrfs: Przydzielono OGROMNE metadane

14

Mam dysk SSD 256 GB, na którym przekonwertowałem główny system plików ext4 root na btrfs. Usunąłem podwolumnę kopii zapasowej ext4, włączyłem kompresję i defragmentowałem rekurencyjnie, aby włączyć ją we wszystkich plikach.

btrfs fi df / ma wyjście, które mnie martwi:

Data: total=148.00GB, used=106.11GB
System: total=32.00MB, used=16.00KB
Metadata: total=65.00GB, used=2.04GB

Jeśli dobrze rozumiem dane wyjściowe, 65 GB (1/4 mojego dysku!) Jest zarezerwowane na metadane i nie jest dostępne do przechowywania plików. Jeśli to prawda, byłoby to ogromne marnotrawstwo miejsca na dysku. Czy rozumiem poprawnie? Czy można zmienić rozmiar części dysku przydzielonej do metadanych?

Gnurou
źródło

Odpowiedzi:

16

Po pierwsze, upewnij się, że twoje jądro i przestrzeń użytkownika BTRFS są aktualne.

Zgodnie z Btrfs FAQ , nie można zmienić rozmiar rozmiar bloku metadanych. Możesz jednak spróbować uruchomić btrfs balance start -m <punkt zamontowania>, który przeniesie metadane na cały dysk i, jako efekt uboczny, prawdopodobnie zwolni nieprzydzielone miejsce.

Jeśli to nie zadziała, być może trzeba będzie wykonać kopię zapasową danych i ponownie utworzyć system plików. (Spójrz na to, aby uzyskać więcej informacji.)

hololeap
źródło
Dziękuję za odpowiedź. Jądro to 3.11.2, narzędzia btrfs mają wersję v.20.20-rc, więc nie sądzę, żebym był tu nieaktualny. Próbowałem uruchomić saldo, ale potem napotkałem następujący błąd: spinics.net/lists/linux-btrfs/msg26977.html i nie mam ochoty na kompilowanie nowszego jądra tylko w tym celu. : P Zastanawiam się, czy te 65 GB to blok metadanych, których nie można zmienić rozmiaru, czy też ten termin odnosi się do czegoś innego. W przeciwnym razie naprawdę nie rozumiem, w jaki sposób utworzono blok metadanych o takim rozmiarze.
Gnurou
Niestety jestem tylko użytkownikiem btrfs, a nie ekspertem, więc moja pomoc jest ograniczona. W każdym razie możliwe jest, że w procesie konwersji z ext4 występuje usterka.
hololeap
11
Tak więc potrzebna łatka dostała się do stabilnego jądra i próbowałem tego, co zasugerowałeś. Równoważenie rzeczywiście zmniejszyło ilość zarezerwowanego obszaru dla metadanych do 3 GB, a zajęte miejsce jest teraz wyświetlane jako wolne miejsce w „df”. Zauważ, że nie musisz ponownie balansować całego dysku, możesz zrobić btrfs balance start -m <punkt montowania>, aby ponownie balansować metadane, co jest znacznie szybsze. Dzięki za wnikliwą odpowiedź!
Gnurou,
Cieszę się, że mogłem pomóc!
hololeap
„nie można zmienić rozmiaru bloku metadanych”. Nie ma to znaczenia dla tego pytania - FAQ mówi o wielkości jednostki alokacji, a nie o ilości miejsca przydzielonego na metadane.
Vladimir Panteleev
1

Spowoduje to zmniejszenie rozmiaru metadanych.

sudo btrfs balance start -v -musage=0 /path
Benzoes
źródło