Solution 1 :
La suppression du nom de fichier ne supprime pas réellement le fichier. Un autre processus maintient le fichier ouvert, empêchant sa suppression ; redémarrez ou arrêtez ce processus pour libérer le fichier.
Utilisez
lsof +L1
pour savoir quel processus utilise un fichier supprimé (non lié).
Solution 2 :
comme le mentionne Ignacio, la suppression du fichier ne libérera pas d'espace tant que vous n'aurez pas supprimé les processus qui ont des descripteurs ouverts sur ce fichier.
Néanmoins, vous pouvez récupérer l'espace sans tuer les processus. Tout ce que vous avez à faire est de supprimer les descripteurs de fichiers.
Exécutez d'abord lsof | grep supprimé pour identifier le processus contenant le fichier
[[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)
Exécutez ensuite :
cd /proc/PID/fd
puis
[[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)
Le "1" sera le descripteur de fichier. Tapez maintenant "> FD" pour récupérer cet espace
> 1
Vous devrez peut-être répéter l'opération si d'autres processus contiennent le fichier.
Solution 3 :
Une possibilité est que le ou les fichiers que vous avez supprimés aient plus de références dans le système de fichiers. Si vous avez créé des liens physiques, plusieurs noms de fichiers pointeront vers les mêmes données, et les données (le contenu réel) ne seront pas marquées comme libres/utilisables tant que toutes les références à celles-ci n'auront pas été supprimées. Avant de supprimer des fichiers, notez-les (Entrée nommée Liens) ou faites ls -l dessus (devrait être la deuxième colonne).
S'il s'avère que les fichiers sont référencés ailleurs, je suppose que vous devrez ls -i le ou les fichiers pour trouver le numéro d'inode, puis effectuer une recherche avec -inum
Solution 4 :
Si la partition a été configurée pour réserver une certaine partie de l'espace disque uniquement à l'usage root, df
n'inclura pas cet espace comme disponible.
[[email protected]]# df -h
Filesystem Size Used Avail Use% Mounted on
...
/dev/optvol 625G 607G 0 100% /opt
...
Même après que l'espace aura été récupéré en supprimant des fichiers/répertoires, l'utilisateur non root ne pourra pas écrire sur une partition particulière.
Vous pouvez facilement vérifier si c'est votre cas en essayant de créer un fichier sur un appareil en tant qu'utilisateur root et non root.
De plus, vous pouvez vérifier la configuration du système de fichiers en exécutant
tune2fs -l <device> | egrep "Block count|Reserved block count
et en calculant vous-même le pourcentage réel.
Pour modifier le pourcentage de disque réservé à une utilisation root uniquement, exécutez
tune2fs -m <percentage> <device>
Solution 5 :
Le fichier est toujours verrouillé par le processus qui l'ouvre. Pour libérer de l'espace, procédez comme suit :
-
Exécutez
sudo lsof | grep deleted
et voir quel processus détient le fichier. Exemple de résultat :$ 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)
-
Tuez le processus en utilisant
sudo kill -9 {PID}
. Dans l'exemple ci-dessus, le PID est 1623.$ sudo kill -9 1623
-
Exécutez
df
pour vérifier si l'espace est déjà libéré. S'il est toujours plein, vous devrez peut-être attendre quelques secondes et vérifier à nouveau.