On m'a posé cette question dans deux entretiens consécutifs, mais après quelques recherches et vérifiant avec divers administrateurs de systèmes, je n'ai pas reçu de bonne réponse. Je me demande si quelqu'un peut m'aider ici.
Un serveur est hors de l'espace disque. Vous remarquez un très gros fichier journal et déterminez-le, il est prudent de supprimer. Vous supprimez le fichier mais le disque indique toujours qu'il est complet. Qu'est-ce qui causerait cela et comment le remèderiez-vous? Et comment constateriez-vous quel processus écrit ce fichier journal énorme?
Je ne suis pas un sysadmin, mais de ce que j'ai rassemblé sur Unix.se, un système Linux ne supprimera pas réellement un fichier (marquer l'espace comme libre/réutilisable) après sa libération jusqu'à ce que tous les descripteurs de fichier pointant leur indiquent été fermé. Donc, pour répondre à la première partie, l'espace n'est pas encore libre, car un processus le lit toujours. Pour répondre au second, vous pouvez voir quel processus utilise le fichier avec lsof
.
Une réponse alternative Outre la réponse évidente du lien dur/Open File Réponse: Ce fichier est un fichier (très) rare, tel que /var/log/lastlog
sur Rhel qui ne prenait pas réellement tout ce que beaucoup d'espace. Supprimer Cela avait très peu d'impact, vous devez donc regarder le prochain fichier le plus grand.
Outre le fichier étant ouvert par un processus, un 2e cas est lorsque vous avez un système de fichiers prenant en charge les instantanés tels que btrfs
ou ZFS
.
Par exemple, vous prenez un instantané avec cet énorme fichier journal existant. Si vous supprimez le fichier maintenant, vous ne supprimerez que le delta. Et le delta est supprimé uniquement lorsque le fichier n'est pas utilisé.
Voir également:
Un 3ème cas est lorsque vous avez un système de fichiers prenant en charge le niveau de duplication de niveau de bloc et la plupart du fichier est identique à un autre fichier. Je ne m'attends pas à ce que cela se produise pour un journal à moins que vous n'ayez un conteneur ou VM======== J'envoie les journaux à un conteneur syslog ou VM qui partage la même chose FS= Pour que le contenu du journal soit identique.