Mise à jour de la taille libre du disque sans redémarrer l'hôte

23

J'utilise RHEL4 avec LVM2 dessus. Parfois, même après avoir supprimé des fichiers volumineux de plus d'un Go, la taille de la partition n'est pas mise à jour lors de l'utilisation de la dfcommande.

-bash-3.00$ df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/sys-root  3.9G  1.4G  2.3G  39% /
/dev/cciss/c0d0p1     251M   19M  219M   8% /boot
/dev/mapper/sys-home  250G  125G  113G  53% /home
/dev/mapper/sys-tmp   3.9G   41M  3.7G   2% /tmp
/dev/mapper/sys-var   3.9G  3.6G   98M  98% /var

Mais quand je vérifie en utilisant du, cela montre la bonne taille

-bash-3.00$ sudo du -sh /var/
 179M   /var/

vous pouvez voir là que la sortie df indique que la partition / var doit être de 3,6 Go, mais le du montre que ce n'est que 179 Mo.

Maintenant, le problème est que ni la synchronisation ni la sonde de partie ne mettent à jour les informations. Mais le redémarrage de l'hôte résoudra certainement le problème. Mais comme il s'agit d'un serveur de production, je ne peux pas le redémarrer. Existe-t-il un moyen de mettre à jour les informations du disque manuellement sans redémarrer l'hôte?

Kannan Mohan
la source
1
Vous avez probablement ouvert des fichiers supprimés (c'est-à-dire des processus qui s'accrochent aux fichiers supprimés). Essayez quelque chose comme lsofpour le découvrir. Used / avail n'est pas stocké dans la table de partition, partprobe (ou tout type de partition relue) n'aidera pas du tout.
Mat

Réponses:

28

Lorsqu'un fichier est supprimé / supprimé / non lié, s'il est toujours maintenu ouvert par n'importe quel processus, seule l'entrée de répertoire du fichier est effacée, pas les données du fichier. Lorsque le fichier est complètement fermé par tous les processus, les données sont renvoyées au pool d'espace libre. C'est une fonctionnalité car vous pouvez avoir des fichiers anonymes de cette façon.

Pour voir si vous avez un fichier supprimé ouvert sur un système de fichiers, exécutez l'une de ces commandes, où /mount/pointest le point de montage ( /vardans votre cas):

lsof +L1 /mount/point

Cet article sur les fichiers ouverts et non liés devrait aider à expliquer cela un peu plus.

Nuno Pereira
la source
2
Je supprimais les journaux mais je dfn'ai montré aucun espace libéré jusqu'à ce que je redémarre les processus du serveur. Merci!
fet
Mieux vaut appeler lsof avec 'lsof + L1' qui montre les fichiers supprimés. Faire une suggestion de modification
Nuno Pereira
Alors comment les fermer?
faressoft