Řešení 1:
Odstraněním názvu souboru se soubor ve skutečnosti neodstraní. Nějaký jiný proces drží soubor otevřený, což způsobuje, že nebude odstraněn; restartujte nebo ukončete tento proces, aby se soubor uvolnil.
Použijte
lsof +L1
abyste zjistili, který proces používá smazaný (nepropojený) soubor.
Řešení 2:
jak zmiňuje Ignacio, smazáním souboru se místo neuvolní, dokud neodstraníte procesy, které mají proti tomuto souboru otevřené popisovače.
Přesto můžete získat zpět prostor, aniž byste zabili procesy. Vše, co musíte udělat, je odstranit deskriptory souborů.
Nejprve spusťte lsof | grep odstraněn, aby bylo možné identifikovat proces, ve kterém je soubor uložen
[[email protected] log]$ /usr/sbin/lsof |grep deleted
java 8859 hudson 1w REG 253,0 3662503356 7578206 /crucible/data/current/var/log/fisheye.out (deleted)
Poté proveďte:
cd /proc/PID/fd
pak
[[email protected] fd]$ ls -l |grep deleted
total 0
l-wx------ 1 hudson devel 64 Feb 7 11:48 1 -> /crucible/data/current/var/log/fisheye.out (deleted)
"1" bude deskriptor souboru. Nyní zadejte "> FD", abyste získali zpět toto místo
> 1
Možná budete muset operaci zopakovat, pokud soubor drží jiné procesy.
Řešení 3:
Jednou z možností je, že soubory, které jste smazali, mají v souborovém systému více odkazů. Pokud jste vytvořili pevné odkazy, několik názvů souborů bude ukazovat na stejná data a data (skutečný obsah) nebudou označena jako volná/použitelná, dokud na ně nebudou odstraněny všechny odkazy. Než soubory smažete, buď je uveďte (položka s názvem Odkazy) nebo na ně proveďte ls -l (měl by být druhý sloupec).
Pokud se ukáže, že se na soubory odkazuje jinde, myslím, že budete muset ls -i soubor(y) najít číslo-inodu a poté provést hledání pomocí -inum <číslo-inodu>, abyste našli další odkazy na tento soubor (pravděpodobně také budete chtít použít -mount, abyste také zůstali ve stejném souborovém systému).
Řešení 4:
Pokud byl oddíl nakonfigurován tak, aby vyhradil určitou část místa na disku pouze pro použití root, df
nezahrne tento prostor jako dostupný.
[[email protected]]# df -h
Filesystem Size Used Avail Use% Mounted on
...
/dev/optvol 625G 607G 0 100% /opt
...
I poté, co bude místo znovu získáno smazáním souborů/adresářů, uživatel bez oprávnění root nebude moci zapisovat do konkrétního oddílu.
Můžete snadno zkontrolovat, zda je to váš případ, pokusem o vytvoření souboru na zařízení jako uživatel root a uživatel bez tohoto oprávnění.
Navíc můžete zkontrolovat konfiguraci souborového systému spuštěním
tune2fs -l <device> | egrep "Block count|Reserved block count
a vlastní výpočet skutečných %.
Chcete-li změnit % disku vyhrazené pro použití pouze root, spusťte
tune2fs -m <percentage> <device>
Řešení 5:
Soubor je stále uzamčen procesem, který jej otevírá. Chcete-li uvolnit místo, postupujte takto:
-
Spusťte
sudo lsof | grep deleted
a podívejte se, který proces uchovává soubor. Příklad výsledku:$ sudo lsof | grep deleted COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME cron 1623 root 5u REG 0,21 0 395919638 /tmp/tmpfPagTZ4 (deleted)
-
Zabijte proces pomocí
sudo kill -9 {PID}
. Ve výše uvedeném vzorku je PID 1623.$ sudo kill -9 1623
-
Spusťte
df
zkontrolovat, zda je místo již uvolněno. Pokud je stále plný, možná budete muset počkat několik sekund a znovu zkontrolovat.