Zamieszanie użycia dysku: brakuje 10G na domowej partycji Linux na SSD

15

Linux Mint mówi mi, że mam tylko 622 MB wolnego miejsca na dysku, ale powinno pozostać trochę gigabajtów.

Patrząc na partycje, powiedziano mi, że około dziesięciu gigabajtów jest niewykorzystanych. Poszukałem problemu i nie znalazłem rozwiązania, ale znalazłem wskazówkę, z którą powinienem sprawdzić użycie dysku df -h.

sudo df -h /home
Filesystem      Size  Used Avail Use% Mounted on
/dev/nvme0n1p8  189G  178G  622M 100% /home

Wyjście nie ma dla mnie żadnego sensu: różnica między Sizei Usedwynosi 11 GB, ale pokazuje tylko 622Mjako Dostępne.

Dysk SSD nie jest stary, więc nie spodziewałbym się takiej rozbieżności.

Co powinienem zrobić?

tbiornottobi
źródło
3
jak skomentował @Kusalananda, nie powinieneś po prostu pytać, dlaczego nie dostajesz tych 10 GB (mam nadzieję, że poprawnie odpowiedziałem w mojej odpowiedzi), ale także dlaczego używasz większości miejsca w / home. Jeśli wiesz, dlaczego (np. Przechowuj wiele plików multimedialnych itp.), To dobrze, jeśli nie, powinieneś się tym martwić, ponieważ potencjalne czyszczenie zwróci więcej niż 10 GB miejsca. Co by to było?
AB
„Patrząc na partycje, powiedziano mi, że około dziesięciu gigabajtów jest niewykorzystanych.” - gdzie to powiedziano?
ctrl-alt-delor
2
@ ctrl-alt-delor z dfwyjścia - Rozmiar: 189G, Używany: 178G
billyjmc
@ ctrl-alt delor, dostałem cyfrę 10 GB od gparted - a później 11G z wyjścia df, jak poprawnie wywnioskowałem billyjmc.
tytkownottobi

Odpowiedzi:

22

Jeśli systemem plików jest ext4, są zarezerwowane bloki, głównie w celu ułatwienia obsługi i uniknięcia fragmentacji i dostępne tylko dla użytkownika root. W przypadku tego ustawienia można je zmienić na żywo za pomocą tune2fs (nie wszystkie ustawienia można obsługiwać w ten sposób, gdy system plików jest zamontowany):

-m zarezerwowane-procentowe bloki

Ustaw procent systemu plików, który może być przydzielony tylko przez procesy uprzywilejowane. Zarezerwowanie pewnej liczby bloków systemu plików do wykorzystania przez procesy uprzywilejowane ma na celu uniknięcie fragmentacji systemu plików i umożliwienie demonom systemowym, takim jak syslogd (8), aby nadal działały poprawnie po tym, jak procesom nieuprzywilejowanym nie można zapisać do systemu plików. Zwykle domyślny procent zarezerwowanych bloków wynosi 5%.

Jeśli więc chcesz obniżyć rezerwację do 1% (~ 2 GB), uzyskując w ten sposób dostęp do ~ 8 GB więcej miejsca zarezerwowanego, możesz to zrobić:

sudo tune2fs -m 1 /dev/nvme0n1p8

Uwaga: -mopcja faktycznie przyjmuje liczbę dziesiętną jako parametr. Możesz użyć, -m 0.1aby zarezerwować tylko około ~ 200 MB (i uzyskać dostęp do większości wcześniej niedostępnych 10 GB). Możesz także użyć tej -ropcji, aby zarezerwować bezpośrednio według bloków. Prawdopodobnie nie zaleca się posiadania 0 zarezerwowanych bloków.

AB
źródło
3
Użytkownik nie „odzyskuje” 8 GB. Dostają 8 GB więcej do wydania. Lepiej byłoby wyśledzić, co zajmuje całe miejsce na dysku, a następnie ewentualnie wyczyścić to, w razie potrzeby, lub w inny sposób przenieść w inne miejsce lub rozbudować partycję.
Kusalananda
1
@Kusalananda Zmienię słownictwo. Jeśli chodzi o użycie, potrzebuję opinii OP. Pytanie nigdy nie sugerowało, że nie było nieznanego wysokiego poziomu wykorzystania, brakuje tylko 10 GB.
AB
1
Bardzo dobra i pomocna odpowiedź, dziękuję. 5% wydaje się bardzo dobrze pasować do brakujących 10 gigabajtów. Nie martwię się o użycie tak dużej ilości miejsca na dysku i nadal mogę powiększać partycję. :)
tytkownottobi
4
Twoja odpowiedź jest z pewnością poprawna, ale warto zauważyć, że w tym przypadku wartość miejsca zarezerwowanego na rootowanie nie jest duża. To jest /home, a rezerwowanie miejsca dla roota nie jest tak ważne, jak dla innych części systemu plików (np. Dla zapewnienia, że ​​dzienniki systemowe mogą być nadal zapisywane). Ponieważ jest to dysk SSD, zapobieganie fragmentacji może nie mieć pierwszeństwa w przypadku wirujących dysków metalowych.
marcelm
@marcelm To ma dla mnie sens. Ale czy nadal jest przydatny na partycji / home na dysku SSD, czy to tylko marnowanie miejsca? Czy zaleciłbyś obniżenie zarezerwowanej przestrzeni głównej do 1%?
tytkownottobi
8

Usunięte pliki mogą również przyczyniać się do „brakującego miejsca”

lsof | grep deleted | grep /home

zwraca mi ten wynik

chrome    11181           criggie   15u      REG              254,0   
4194304  50651663 /home/criggie/.config/google-chrome/BrowserMetrics/BrowserMetrics-5D0236AF-2BAD.pma (deleted)

Co pokazuje, że Chrome działający jako PID 11181 otworzył ten plik BrowserMetrics, a następnie go usunął i nadal ma otwarty uchwyt pliku. Oznacza to, że plik jest niewidoczny na liście katalogów, ale nadal zajmuje miejsce na dysku.

Dlaczego programy to robią? Kiedy działający plik binarny zakończy działanie, system operacyjny zwolni otwarty uchwyt pliku, a plik na dysku zniknie, bez ryzyka pozostawienia nieaktualnego pliku tymczasowego.

Nie widzę, jak duże jest użycie dysku przez ten plik.

Criggie
źródło
2
Większość dobrze napisanych programów nie powinna tego robić. Jest to błąd, który należy zgłosić, po prostu większość z tych niejasnych błędów tak naprawdę się nie pojawia, dopóki nie przejdziesz do fazy optymalizacji, a jeśli jest to jeden przypadek, może nawet nie zostać wykryty podczas testowania. Zauważ, że może istnieć konkretny powód, dla którego to robią, może istnieć uzasadnienie, którego nie jestem świadomy, aby utrzymać uchwyt tak długo otwarty.
Drunken Code Monkey
4
@DrunkenCodeMonkey Dude - jego Chrome ... masz całkowitą rację.
Criggie
4
@DrunkenCodeMonkey, robi to wiele dobrze napisanych programów. Wzorzec „otwórz-usuń-zamknij” do tworzenia plików tymczasowych w * nix jest prawie uniwersalny, ponieważ gwarantuje, że plik zostanie usunięty po wyjściu z programu, niezależnie od tego , jak się kończy: normalne zakończenie, awaria, zabity przez brak pamięci, zabity przez awarię zasilania itp.
Mark
3
@DrunkenCodeMonkey, a co jeśli program nigdy się z tym nie skończy?
leftaroundabout
3
@DrunkenCodeMonkey: Wzorzec to open-delete- work -close. Jeśli program nadal coś robi z zawartością pliku tymczasowego (np. Używa go jako pamięci podręcznej na dysku lub rejestruje w nim dane telemetryczne), to oczywiście musi go otwierać. (Oczywiście jest również możliwe, że jest to rzeczywiście nieaktualny uchwyt pliku, który program powinien był zamknąć, ale go nie zamknął. Ale biorąc pod uwagę, że istnieje tylko jeden taki plik i że nie ma innych oczywistych oznak wycieku zasobów, Zacznę od założenia, że ​​plik prawdopodobnie jest celowo utrzymywany w stanie otwartym.)
Ilmari Karonen