J'ai des serveurs de fichiers qui sont utilisés pour stocker des fichiers. Les fichiers peuvent y résider pendant une semaine ou un an. Malheureusement, lorsque je supprime des fichiers du serveur, la df
commande ne reflète pas l'espace libéré. Donc, finalement, le serveur est plein ( df
affiche 99%) et mon script n'envoie plus de fichiers là-bas, sauf qu'il peut y avoir quelques dizaines de Go d'espace libre dessus.
J'ai le noatime
drapeau sur les partitions montées si cela fait une différence.
linux
filesystems
disk-space-utilization
Aminah Nuraini
la source
la source
Réponses:
La suppression du nom de fichier ne supprime pas réellement le fichier. Un autre processus maintient le fichier ouvert, ce qui empêche sa suppression. redémarrez ou tuez ce processus pour libérer le fichier.
Utilisation
pour savoir quel processus utilise un fichier supprimé (non lié).
la source
Comme Ignacio le mentionne, la suppression du fichier ne libèrera pas d'espace tant que vous n'avez pas supprimé les processus dont le descripteur est ouvert.
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 fichier.
Première exécution de lsof | grep supprimé pour identifier le processus contenant le fichier
Puis exécutez:
ensuite
Le "1" sera le descripteur de fichier. Maintenant, tapez "> FD" pour récupérer cet espace
Vous devrez peut-être répéter l'opération s'il existe d'autres processus contenant le fichier.
la source
> FD
fait?>
commande a-t-elle un nom? Je devais passer de zsh à bash pour pouvoir l'utiliser. Est-il possible de l'exécuter sur zsh?Une possibilité est que le ou les fichiers que vous avez supprimés aient davantage de références dans le système de fichiers. Si vous avez créé des liens durs, plusieurs noms de fichiers pointeront sur les mêmes données et les données (le contenu réel) ne seront pas marquées comme étant gratuites / utilisables tant que toutes les références ne seront pas supprimées. Avant de supprimer des fichiers, faites-les statuer (Entrée nommée Links) ou faites-leur ls -l (cela 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 (s) fichier (s) pour trouver le numéro d'inode, puis faire une recherche avec -inum <numéro_inode> pour trouver le d'autres références à ce fichier (vous voudrez probablement aussi utiliser -mount pour rester dans le même système de fichiers).
la source
Le fichier est toujours verrouillé par le processus qui l'ouvre. Pour libérer de l'espace, procédez comme suit:
Exécuter
sudo lsof | grep deleted
et voir quel processus contient le fichier. Exemple de résultat:Tuez le processus en utilisant
sudo kill -9 {PID}
. Dans l'échantillon ci-dessus, le PID est 1623.Exécuter
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.la source
Si la partition a été configurée pour réserver une partie de l’espace disque uniquement à l’usage de la racine,
df
n’incluez pas cet espace disponible.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 périphérique en tant qu'utilisateur root et non root.
De plus, vous pouvez vérifier la configuration du système de fichiers en exécutant
et en calculant le% réel par vous-même.
Pour changer le disque% réservé à l'usage de la racine seulement, exécutez
la source
Les autres réponses sont correctes: si vous supprimez un fichier et que l’espace n’est pas libéré, c’est généralement soit parce que le fichier est toujours ouvert, soit qu’il contient d’autres liens physiques.
Pour vous aider en cas de problème, utilisez un outil qui vous indique où l’espace disque est utilisé: vous pouvez utiliser
du
pour obtenir une vue d’ensemble de l’ utilisation de l’espace disque . Mieux encore, utilisez un outil graphique tel que xdiskusage (il y en a beaucoup comme celui-ci) pour traquer le coupable. xdiskusage et ses amis vous permettent d’explorer les plus gros porcs de l’espace pour savoir où va l’espace.De cette façon, vous trouverez rapidement les fichiers qui occupent encore de la place grâce à un deuxième lien permanent. Il montrera également l’espace occupé par les fichiers supprimés mais ouverts (en tant que (permission refusée), je crois, car il ne peut pas lire le nom du fichier).
la source
Étant donné que je sais que beaucoup d'entre vous le font pour redhat in
/var
et gzipping les fichiers s'attendant à ce que le système de fichiers diminue, mais au lieu de cela, sa taille augmente, assurez-vous simplement de prendre en charge le redémarrage de syslog. etvous montrerait cela de toute façon.
la source
Une autre option: le disque est peut-être saturé à cause d'un processus qui crée en permanence des données: journaux, cœurs, etc. Il est possible que l'espace soit réellement libéré mais qu'il soit immédiatement rempli. J'ai effectivement vu un tel cas.
df
dans ce cas, ne donne simplement pas l'image du trou. Utilisezdu
pour en savoir plus.la source
J'utilise EXT2, FSCK m'a aidé dans cette situation. Essayez shudown -F maintenant, après quelques redémarrages et fscks, je vois un espace à moitié utilisé.
la source
Pour vérifier quels fichiers supprimés ont occupé de la mémoire, entrez la commande
Il montrera les fichiers supprimés qui contiennent de la mémoire.
Puis tuez le processus avec pid ou name
vérifiez maintenant que vous aurez la même mémoire
Sinon tapez la commande ci-dessous pour voir quel fichier occupe de la mémoire
mentionner n'importe quelle taille, il montrera quels fichiers occupent au dessus de la taille seuil et efface le fichier que vous trouverez la mémoire conservée
la source
terminal ouvert essayez cette commande df -Th utilisez ensuite cette commande sudo du -h --max-depth = 1 / dans cette commande, vous trouverez le détail de l'utilisation du disque, puis l'ouvrir en tant qu'utilisateur root, supprime le fichier (root-local-share-trash). et supprimez votre fichier
la source