Lorsque je lance, df
cela montre que le périphérique racine est plein.
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 9.9G 9.4G 0 100% /
J'ai regardé l' inode
utilisation et il y a à peu près de l'espace disponible pour le périphérique racine
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/sda1 640K 103K 538K 16% /
Mais, lorsque j'exécute la du
commande, cela montre que je n'ai utilisé que 2G
sur 9.9G
.
ip-XXX-XXX-XXX-XXX:/$ du -xh --max-depth=1
14M ./etc
4.0K ./mnt
96K ./tmp
3.5M ./bin
0 ./sys
964K ./boot
4.0K ./srv
0 ./dev
55M ./lib
25M ./root
1.1G ./usr
4.0K ./opt
846M ./var
4.3M ./sbin
23M ./home
16K ./lost+found
0 ./proc
2.0G .
Cela me rend fou et intéressant aussi. C'est un gros problème pour nous car le disque racine /
est plein et une partie de la fonction de notre site échoue.
Veuillez m'aider à résoudre (comprendre également) ce problème.
Merci.
linux
debian
filesystems
disk-space
Rakesh Sankar
la source
la source
+df +du
questions sur Unix et Linux .du -x /
et je ne vois que 2G est utilisé et j'ai calculé la taille d'inode qui est160M
. Cela m'a aidé à comprendre les choses, mais je veux juste résoudre ce problème.du
tant que root? Sinon, il ne peut que rendre compte des fichiers auxquels vous pouvez accéder.root
ncdu
programme, qui permet de visualiser l'utilisation du disque.Réponses:
Lorsque les fichiers sont supprimés dans * nix, ils continuent de vivre sur le disque (et occupent de l'espace disque) aussi longtemps qu'un processus les a ouverts. Il est assez courant d'en profiter pour «sécuriser» les fichiers temporaires en les créant avec une petite taille, en les supprimant, puis en utilisant le fichier supprimé pour stocker les données sans avoir à se soucier des autres processus d'y accéder (facilement), donc la quantité d'espace dans les fichiers supprimés peut devenir assez importante si, par exemple, une base de données temporaire ou une session d'édition multimédia est gérée de cette manière. Une autre possibilité pour la façon dont vous pourriez avoir autant d'espace "perdu" serait si le système a été mis à niveau (plusieurs fois) sans redémarrer ou redémarrer les programmes, ce qui entraîne que toutes vos anciennes bibliothèques .so sont maintenues ouvertes par des programmes qui ont été lancés avant la mise à niveau et sont toujours en cours d'exécution.
df
voit l'espace utilisé par ces fichiers car il regarde simplement combien d'espace est alloué sur le périphérique, maisdu
ne les voit pas car il n'y a aucune entrée de répertoire correspondante.L'espace utilisé "caché" comme celui-ci ne peut être libéré que lorsque les processus qui ont supprimé des fichiers ouverts les ferment. Vous pouvez trouver ces processus avec la
fuser
commande et les terminer (ou, pour de nombreux démons, envoyer un signal leur disant de fermer et de rouvrir tous les fichiers ouverts).la source
hidden
espace utilisé, j'essaie d'exécuter lafuser
commande pour voir tous les fichiers qui sont utilisés par un processus mais non liés - je n'en ai pas trouvé. Avez-vous une commande ou une direction qui me mène à le trouver? Ceci est la commande que j'utilisefuser -v -a /
Il y a eu des moments où si le disque est plein, il peut ensuite être confondu jusqu'à redémarrer / remonter que le disque est toujours plein, même lorsque vous avez supprimé une charge de fichiers.
la source
De mon côté, j'ai simplement redémarré syslogd pour récupérer l'espace disque. Il me manquait 3 Go! Mon serveur était opérationnel depuis 250 jours.
la source
Il existe un moyen de nettoyer l'espace sans redémarrer l'application. Voici les détails:
Disons que vous avez un processus en
foo
cours d'exécution et que vous créez un fichier de 2 Go nommé abc.log. Supposons maintenant que abc.log soit supprimé par quelqu'un d'autre.Obtenez
foo
le pid (disons 123). Ainsi/proc/123/fd
, la liste des descripteurs de fichiers ouverts parfoo
. Un avec abc.log s'affichera comme supprimé. Disons quefd
abs.log est 111. Si vous exécutezless /proc/123/fd/111
, il vous montrera toujours tous ces 2 Go de données.Courez
echo " " > /proc/123/fd/111
. Cela écrasera le contenu avec une chaîne vide. Après cette commande, si vous essayez,df
elle affichera 2 Go supplémentaires récupérés en nettoyant abc.log.C'est ça. J'ai essayé cela sur CentOS et cela fonctionne.
la source