Czy istnieje sposób, aby powiedzieć jądrze, aby zwróciło teraz wolne miejsce na dysku? Jak napisać do czegoś w / proc /? Używanie Ubuntu 11.10 z ext4.
Jest to prawdopodobnie stary i bardzo powtarzany motyw. Po uderzeniu w 0 spostrzegłem tylko, że mój edytor nie mógł zapisać plików kodu źródłowego, które otworzyłem, które ku mojemu przerażeniu mają teraz 0 bajtów na liście folderów, zacząłem kasować.
Usunąłem 100 MB dużych plików zarówno od użytkownika, jak i od roota, i zrobiłem też hardlinkowanie.
Tuż przedtem apt-get clean
w / var / cache / apt / archives było ponad 900 MB, teraz jest tylko 108 KB:
# du
108 /var/cache/apt/archives
Godzinę później nadal nie ma wolnego miejsca i nie mogę zapisać moich cennych plików otwartych w edytorze, ale zauważ różnicę poniżej:
# sync; df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda4 13915072 13304004 0 100% /
Jakieś sugestie? Wyłączam niektóre usługi / procesy, ale nie jestem pewien, jak sprawdzić, kto może aktywnie jeść miejsce na dysku.
Więcej informacji
# dumpe2fs /dev/sda4
Filesystem state: clean
Errors behavior: Continue
Filesystem OS type: Linux
Inode count: 884736
Block count: 3534300
Reserved block count: 176715
Free blocks: 422679
Free inodes: 520239
First block: 0
Block size: 4096
Fragment size: 4096
Odpowiedzi:
Sprawdź za pomocą,
lsof
aby sprawdzić, czy pliki są otwarte. Przestrzeń nie zostanie zwolniona, dopóki nie zostaną zamknięte.powie Ci, które usunięte pliki są nadal utrzymywane otwarte.
źródło
mysqld
blokad w / tmp, ale wieleapport-gt
zastosowań wymarłych plików w / var / lib / apt / list / częściowo /, które najwyraźniej się kumulują. Więc mogę,killall apport-gt
ale najpierw to zbadam.lsof +L1
(wybierz otwarte pliki, które zostały rozłączone).Użyj,
lsof
aby znaleźć usunięty, ale otwarty plik, który wciąż zajmuje miejsce:Znajdź wpis w
/proc/<pid>/fd/
tym coondondondach uchwytu pliku:Teraz tylko
cat /dev/null
do fd:Zauważ, że i-węzeł jest nadal otwarty, ale teraz ma długość 0
źródło
cat
do obcinania. W powłoce Bourne'a wystarczy> /proc/3446/fd/128
.df
nie pokaże miejsca zarezerwowanego dlaroot
(nawet gdy działa jakoroot
):Jak zmienić „zarezerwowany procent bloku”
Zmniejsz zarezerwowane miejsce do 4%
# tune2fs -m4 /dev/sda4
df -h
teraz pokazał 45 mln za darmo.Przywróć to do 5%
# tune2fs -m5 /dev/sda4
źródło
df
wyświetla normalną powierzchnię użytkową dla użytkownika. Ponieważ apt działa jako root, zarezerwowane miejsce jest użyteczne tylko w celu ochrony przed uzupełnieniami spowodowanymi przez użytkowników innych niż root (= zwykli użytkownicy i usługi, które mają własnego użytkownika).mkfs
te dni należy zarezerwować np. 5% lub 300 MB, w zależności od tego, która wartość jest mniejsza . Właśnie dostroiłem niektóre z moich serwerów do 2% i uwolniłem GB!W Ubuntu, jeśli pliki zostały usunięte za pomocą kosza na śmieci, najprawdopodobniej nie zostały całkowicie usunięte.
Nawet po opróżnieniu kosza pliki pozostaną w nim
~/.local/share/Trash/expunged
do momentu ponownego uruchomienia komputera, a może nawet dłużej.Nie znalazłem dobrego powodu, ale jeśli zabraknie mi miejsca, zawsze ręcznie
rm
usuwam pliki śmieci.źródło
Objaśnienie: Wyjście
Grep,
lsof
aby wyodrębnić tylko usunięte pliki. Sed wyodrębnia identyfikator procesu i identyfikator filedescriptor z każdej linii i tworzy ciąg w formacie{pid}/fd/{fid}
. Podczas pętli i wyprowadzaj nic do każdego pliku, ustawiając je na puste.źródło
Zastanawiam się, czy
sync
jest tu jakaś pomoc - ale nie powinno tak być, ponieważ IIRC w większości („wielu”?) Systemów, systemy plików są synchronizowane co 30 sekund.Sprawdziłbym dziennik jądra (tak
dmesg
), aby sprawdzić, czy dzieje się coś nieprzyjemnego, i uruchomiłem,lsof
aby sprawdzić, czy jakiś duży, usunięty plik jest nadal otwarty (tak naprawdę myślę, że usunięte pliki zostaną oznaczone jako tak nalsof
wyjściu).Są dwa powody (jeden z tych wskazanych w łączonym pytaniu), które mogą powodować, że usunięte pliki nie zwalniają miejsca
unlink()
edytujesz plik z więcej niż jednym linkiem)Ale nie znam konkretnego powodu, dla którego może się tak zdarzyć w przypadku tak wielu plików ...
źródło
sync
nigdy nie pomogłem. Jeśli chodzi o logi, jest to system Ubuntu, więc jest dość wadliwy, więc tak, są zazwyczaj głośne.apport
wdraża się często, ponieważ co noc następuje awaria apt-get, chociaż / var / crash ma tylko 77 MB. Zauważyłem równieżatd
zalanie / var / log / syslog powtarzającymi się liniami,atd[8892]: File a0015c0152ab76 is in wrong format - aborting
prawdopodobnie dlatego, że kilka plików w / var / spool / cron / atspool miało rozmiar 0, co sprawia, że problem jest oczywiście okrągłyCentOS 6.3 wykonuje także czynności polegające na tym, że nie opróżniasz kosza na śmieci, kiedy go opróżnisz. Nie mogłem znaleźć sposobu na odzyskanie przestrzeni, dopóki nie pobiegłem
rm -rf ~/.local/share/Trash/expunged/
. Spowodowało to porysowanie głowy.źródło