Uruchamianie OpenSuse 12.2.
Nagle główna parycja wydaje się pełna (99%), ale nie mogę już ręcznie usuwać plików.
„rm: nie można usunąć xxx: Brak miejsca na urządzeniu”, chociaż zgodnie z df 450 MB wciąż jest wolnych. System plików to BTRFS.
Próbowałem sprawdzić FS przy użyciu btrfsck, ale to nie pomogło.
Co robić?
Odpowiedzi:
Najprawdopodobniej masz problem z tym, że BTRFS musi przydzielić trochę metadanych, zanim będzie mógł usunąć plik. Jednym ze słabych punktów BTRFS jest obsługa warunków braku miejsca; poprawa zachowania w tym obszarze jest jednym z priorytetów projektu.
Jedną z sugestii na wiki btrfs jest zablokowanie pliku zamiast jego usuwania.
Spowoduje to usunięcie zawartości pliku bez zmiany pozycji katalogu. Po wyjściu z narożnika możesz usunąć pliki w normalny sposób. Jeśli sprawi ci to kłopot, możesz tymczasowo podłączyć ponownie z
nodatacow
opcją, która wyłącza zachowanie kopiowania przy zapisie. Ale ... nie jestem pewien, czy to pomoże, czy nie.Ogólnie jednak: nie uruchamiaj systemu plików BTRFS na sucho. To wciąż oprogramowanie przedprodukcyjne, a skrzynki narożne są trochę szorstkie.
źródło
Napotkałem ten sam komunikat o błędzie, ale w moim przypadku system plików nie został zgłoszony jako pełny:
Ale zapytanie BTRFS ujawniło, że rzeczywiście było pełne:
Nawet zastąpienie jakichkolwiek plików (jak sugerował Tylerl) było niemożliwe. Moje rozwiązanie zostało znalezione pod adresem http://marc.merlins.org/perso/btrfs/post_2014-05-04_Fixing-Btrfs-Filesystem-Full-Problems.html, który zaleca uruchomienie ręcznego równoważenia systemu plików przy użyciu
btrfs balance start -dusage=55 /path/to/filesystem
.źródło
Dla mnie, używając ZFS, stwierdziłem, że usunięcie innych plików zwolniło wystarczającą ilość miejsca na partycji ZFS, a następnie byłem w stanie usunąć te pliki.
źródło
W moim przypadku z systemem plików ZFS w systemie Linux nie mogłem nawet obciąć pliku. Zniszczenie starych migawek załatwiło sprawę (jeśli jest obecna).
zfs destroy /path/of/snapshot
źródło