Soluzione 1:
L'eliminazione del nome del file in realtà non elimina il file. Qualche altro processo tiene aperto il file, impedendone l'eliminazione; riavvia o termina il processo per rilasciare il file.
Usa
lsof +L1
per scoprire quale processo sta utilizzando un file eliminato (non collegato).
Soluzione 2:
come menziona Ignacio, l'eliminazione del file non libererà lo spazio fino a quando non eliminerai i processi che hanno handle aperti su quel file.
Tuttavia, puoi recuperare lo spazio senza interrompere i processi. Tutto quello che devi fare è rimuovere i descrittori di file.
Eseguire prima lsof | grep deleted per identificare il processo che contiene il file
[[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)
Quindi eseguire:
cd /proc/PID/fd
quindi
[[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)
Il "1" sarà il descrittore del file. Ora digita "> FD" per recuperare quello spazio
> 1
Potrebbe essere necessario ripetere l'operazione se ci sono altri processi che detengono il file.
Soluzione 3:
Una possibilità è che i file che hai eliminato abbiano più riferimenti nel filesystem. Se hai creato hardlink, diversi nomi di file punteranno agli stessi dati e i dati (i contenuti effettivi) non saranno contrassegnati come liberi/utilizzabili fino a quando tutti i riferimenti ad essi non saranno stati rimossi. Prima di eliminare i file, specificali (voce denominata Link) o esegui ls -l su di essi (dovrebbe essere la seconda colonna).
Se risulta che i file sono referenziati altrove, immagino che dovrai ls -i il file (s) per trovare il numero di inode, e poi fare una ricerca con -inum
Soluzione 4:
Se la partizione è stata configurata per riservare una certa porzione di spazio su disco solo per l'utilizzo da parte di root, df
non includerà questo spazio come disponibile.
[[email protected]]# df -h
Filesystem Size Used Avail Use% Mounted on
...
/dev/optvol 625G 607G 0 100% /opt
...
Anche dopo che lo spazio sarà stato recuperato eliminando file/directory, l'utente non root non sarà in grado di scrivere su una particolare partizione.
Puoi facilmente verificare se è il tuo caso provando a creare un file su un dispositivo come utente root e non root.
Inoltre puoi controllare la configurazione del filesystem eseguendo
tune2fs -l <device> | egrep "Block count|Reserved block count
e calcolando la percentuale effettiva da solo.
Per modificare la % del disco riservata per l'utilizzo solo da root, eseguire
tune2fs -m <percentage> <device>
Soluzione 5:
Il file è ancora bloccato dal processo che lo apre. Per liberare spazio, procedi come segue:
-
Esegui
sudo lsof | grep deleted
e vedere quale processo sta tenendo il file. Esempio di risultato:$ 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)
-
Uccidi il processo usando
sudo kill -9 {PID}
. Nell'esempio precedente, il PID è 1623.$ sudo kill -9 1623
-
Esegui
df
per verificare se lo spazio è già stato liberato. Se è ancora pieno, forse devi attendere qualche secondo e ricontrollare.