suppression de fichiers mais l'espace disque est encore plein

26

En traitant l'ancienne boîte CentOS 5.6, sans configuration lvm, mon système de fichiers racine / est plein, j'ai effacé de nombreux anciens fichiers journaux et fichiers d'application dont je n'ai pas besoin, qui mesuraient plus de 2 à 5 Go, mais mon système signale toujours que le disque est plein.

[root@tornms1 ~]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda3             130G  124G     0 100% /
/dev/sdb1             264G  188M  250G   1% /data
/dev/sda1              99M   24M   71M  26% /boot
tmpfs                 2.0G     0  2.0G   0% /dev/shm



[root@tornms1 ~]# mount
/dev/sda3 on / type ext3 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
/dev/sdb1 on /data type ext3 (rw)
/dev/sda1 on /boot type ext3 (rw)
tmpfs on /dev/shm type tmpfs (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)

Une idée sur ce que je devrais essayer de faire ensuite? malheureusement, le redémarrage de la boîte n'est pas une option pour le moment.

user1007727
la source
1
Désolé d'avoir posé une question stupide, mais vous êtes-vous assuré que votre /.Trash/est vide? As-tu fait sudo rm -Rf ~/.Trash/*?
Art Gertner
Ceci est un serveur, je n'ai pas installé xwindow, donc je n'ai pas de dossier .trash dans mon compte root.
user1007727
Mon mauvais, je suppose que /.Trash/ existe sur tous les systèmes de type Unix.
Art Gertner
vous pouvez également essayer la commande sync ( linux.die.net/man/8/sync ), peut-être que toutes vos opérations sont toujours en cache.
weberik

Réponses:

38

Deux choses pourraient se produire ici.

Tout d'abord , votre système de fichiers a réservé un espace qui neroot peut écrire, afin que le processus système critique ne tombe pas lorsque les utilisateurs normaux manquent d'espace disque. C'est pourquoi vous voyez 124G sur 130G utilisés, mais aucun disponible. Peut-être que les fichiers que vous avez supprimés ont réduit l'utilisation à ce stade, mais pas en dessous du seuil pour les utilisateurs normaux.

Si tel est votre cas et que vous êtes désespéré, vous pourrez peut-être modifier la quantité d'espace réservé pour root. Pour le réduire à 1% (la valeur par défaut est 5%), votre commande serait

# tune2fs -m 1 /dev/sda3

Deuxièmement , le système d'exploitation ne libérera pas d'espace disque pour les fichiers supprimés qui sont toujours ouverts. Si vous avez supprimé (par exemple) l'un des fichiers journaux d'Apache, vous devrez redémarrer Apache afin de libérer de l'espace.

Flup
la source
1
oui, le deuxième devrait être le premier!
mulya
Ces questions et réponses ajoutent plus d'informations superuser.com/questions/444269/… .
luka5z
18

Si vous supprimez un fichier utilisé par un processus, vous ne pouvez plus afficher le fichier par ls. Le processus écrit toujours dans ce fichier jusqu'à ce que vous arrêtiez le processus.

Pour afficher ces fichiers supprimés, exécutez simplement lsof|grep delete

Tao Zhou
la source
1
C'était le problème dans mon cas. Merci, informations très utiles.
Dag Sondre Hansen
10

2 autres façons d'obtenir le disque sont un problème complet :

1) caché sous un point de montage: Linux affichera un disque complet avec des fichiers "cachés" sous un point de montage. Si vous avez des données écrites sur le lecteur et montez un autre système de fichiers dessus, linux note correctement l'utilisation du disque même si vous ne pouvez pas voir les fichiers sous le point de montage. Si vous avez des montages nfs, essayez de les démonter et de voir si quelque chose a été accidentellement écrit dans ces répertoires avant le montage.

2) fichiers corrompus: je vois cela de temps en temps sur le transfert de fichiers Windows vers Linux via SMB. Un fichier ne parvient pas à fermer le descripteur de fichier et vous vous retrouvez avec un fichier de 4 Go de corbeille.

Cela peut être plus fastidieux à corriger, car vous devez trouver le sous-répertoire dans lequel se trouve le fichier, mais il est facile à résoudre car le fichier lui-même est facilement amovible. J'utilise la ducommande et fais une liste des sous-répertoires racine pour savoir où l'espace fichier est utilisé.

cd /
du -sh ./* 

Le nombre de répertoires de niveau supérieur est généralement limité, j'ai donc mis le drapeau lisible par l'homme-h pour voir quel sous-répertoire est le porc de l'espace.

Ensuite, vous entrez dans l'enfant à problème et répétez le processus pour tous les éléments qu'il contient. Pour faciliter la repérage des gros articles, nous changeons légèrement le du et le couplons avec une sorte.

cd /<suspiciously large dir>
du -s ./* | sort -n

qui produit une sortie du plus petit au plus grand par taille d'octet pour tous les fichiers et répertoires

4          ./bin 
462220     ./Documents
578899     ./Downloads
5788998769 ./Grocery List

Une fois que vous avez repéré le fichier surdimensionné, vous pouvez généralement le supprimer.

Dan L
la source
Grands conseils! J'ai tracé les dossiers sous / en utilisant du et j'ai trouvé plusieurs images système extrêmement grandes sous le SDK Android. Les a supprimés et tout est revenu à la normale :)
Pupper
4

Vous pouvez découvrir quels fichiers sont ouverts avec lsof. Cela peut produire beaucoup de sortie, donc je me suis limité dans l'exemple ci-dessous aux lignes se terminant par log:

# lsof | grep log$
rsyslogd   2109     syslog    0u     unix 0xffff88022fa230c0      0t0       8894      /dev/log
rsyslogd   2109     syslog    1w      REG              252,6    62393         26 /var/log/syslog
rsyslogd   2109     syslog    2w      REG              252,6   113725        122 /var/log/auth.log
rsyslogd   2109     syslog    3u     unix 0xffff88022fa23740      0t0       8921 /var/spool/postfix/dev/log
rsyslogd   2109     syslog    5w      REG              252,6    65624        106 /var/log/mail.log
/usr/sbin  2129       root    2w      REG              252,6    93602         38 /var/log/munin/munin-node.log
/usr/sbin  2129       root    4w      REG              252,6    93602         38 /var/log/munin/munin-node.log
...
jris198944
la source
1

Si certains fichiers sont supprimés mais toujours utilisés par un processus, l'espace ne sera pas libéré. Dans ce cas, redémarrez un processus qui utilise le fichier ou annulez le fichier. C'est toujours une bonne pratique d'annuler ces fichiers au lieu de les supprimer. Pour rechercher des fichiers supprimés mais toujours utilisés par certains processus

#lsof +L1

il donnera l'ID de processus et le descripteur de fichier. Pour annuler la suppression d'un fichier par un descripteur de fichier

#echo "" > /proc/$pid/fd/$fd 
Sagar Jagnade
la source
1

Tapez la commande

#lsof +L1

Qui affichera la liste des fichiers contenant de la mémoire avec un devis supprimé.

Notez le pid (Process id) du fichier

Tuez le processus

#kill <pid>

La mémoire sera libérée par le processus

Vérifiez-le par commande

#df -h
Javeed Shakeel
la source
0

En plus de ce qui a été expliqué, le problème pourrait être qu'il existe un autre point de montage du répertoire de fichiers supprimé sur un autre périphérique de disque connecté sur le même serveur. Vérifiez les montages actuels et les entrées fstab.

Laith Leo Alobaidy
la source
0

Problème réel observé dans la nature:

Assurez-vous de supprimer les fichiers réels et non les liens symboliques vers les fichiers. Cela peut être le cas notamment pour les fichiers journaux.

icc97
la source