web-dev-qa-db-fra.com

Pas plus d'espace sur le disque

J'utilise Ubuntu 14.04. Pendant un certain temps, je n'ai pas pu exécuter plus de programmes simultanément. Voici ce que df -h donne:

Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1        29G   25G  3.4G  88% /
none            4.0K     0  4.0K   0% /sys/fs/cgroup
udev             16G  4.0K   16G   1% /dev
tmpfs           3.2G  724K  3.2G   1% /run
none            5.0M     0  5.0M   0% /run/lock
none             16G   59M   16G   1% /run/shm
none            100M   40K  100M   1% /run/user
/dev/sda2       438G  138M  416G   1% /scratch
AFS             8.6G     0  8.6G   0% /afs

et de df -i:

Filesystem       Inodes   IUsed    IFree IUse% Mounted on
/dev/sda1       1875968 1875968        0  100% /
none            4106915      11  4106904    1% /sys/fs/cgroup
udev            4103190     499  4102691    1% /dev
tmpfs           4106915     524  4106391    1% /run
none            4106915       3  4106912    1% /run/lock
none            4106915     122  4106793    1% /run/shm
none            4106915      27  4106888    1% /run/user
/dev/sda2      29138944     709 29138235    1% /scratch
AFS             9000000       0  9000000    0% /afs

J'ai également essayé la suggestion ici: bash: echo: erreur d'écriture: il ne reste plus d'espace sur le périphérique , cela n'aide en rien, en fait, c'est pire. Maintenant, si j'entre dans le terminal et écris partiellement le nom d'un dossier, j'appuie sur Tab et obtenir:

cd Pybash: cannot create temp file for here-document: No space left on device

où je voulais juste écrire

cd Python

Edit: Le résultat de Sudo du -hxd1 / est:

1.5G    /var
22G /usr
18M /etc
16K /lost+found
36K /home
349M    /opt
68K /tmp
9.7M    /bin
4.2M    /libx32
12K /.config
2.5M    /root
4.0K    /mnt
4.0K    /lib64
13M /sbin
81M /boot
505M    /lib
3.5M    /lib32
12K /media
4.0K    /srv
25G /
2
Qubix

L'espace n'est pas le problème ici. Vous avez un répertoire avec beaucoup de fichiers vides (ou presque-vides). Chacune d'elles prend un inode et vous les avez toutes utilisées. Trouvez ce répertoire:

for i in /* ; do echo "$i" ; find "$i" | wc -l ; done

(Vous devriez le faire en tant que root). Cela listera probablement un répertoire avec un grand nombre de fichiers. Détaillez jusqu'à ce que vous trouviez les fichiers qui ont épuisé vos inodes. Supprimer tous ces fichiers. Ensuite, vous serez OK pour le moment. La provenance de ces fichiers est, bien sûr, une autre histoire.

3
Jos

Comme vous pouvez le voir sur df -h, il vous reste encore de la place sur votre partition racine. Cependant, df -i indique que vous n'avez plus d'inodes. Sur mon ordinateur, la version 7.3G est utilisée sur ma partition racine, mais seulement 320 000 inodes sont utilisés. Vous avez donc probablement beaucoup de très petits fichiers qui encombrent des objets quelque part.

Pour une discussion sur où, voir, par exemple: Stack Exchange - Trouvez où les inodes sont utilisés . Je voudrais essayer ce qui suit à partir de cette page:

Sudo find / -xdev -printf '%h\0' | sort -z | uniq -cz | sort -nrzk 1 | tr '\0' '\n' | head -n 50

Si vous utilisez une version plus récente d’Ubuntu (par exemple, 15.10), cette commande plus courte pourrait également être plus rapide:

Sudo du / --inodes -xS | sort -rh | head -n 50

L'un ou l'autre vous donnera une liste de répertoires classés par nombre d'inodes qu'ils utilisent. Vous en trouverez probablement un avec un nombre très élevé (susceptible d'être dans /var quelque part). Cela devrait vous donner une idée des fichiers que vous pouvez supprimer, mais si vous avez des questions, demandez d'abord ici.

En tant que référence pour ce qui pourrait être normal, sur mon ordinateur (exécutant Ubuntu 15.10), j'obtiens le résultat suivant à partir de cette commande:

3297    /usr/share/app-install/desktop
3022    /usr/share/man/man3
2325    /usr/bin
2149    /usr/share/man/man1
2104    /usr/share/app-install/icons
1816    /usr/lib/x86_64-linux-gnu
1089    /usr/src/linux-headers-4.2.0-19/include/linux
1089    /usr/src/linux-headers-4.2.0-18/include/linux
1089    /usr/src/linux-headers-4.2.0-16/include/linux
...

Voici une explication de la commande plus simple. Sudo est nécessaire pour exécuter la commande du en tant qu'utilisateur root afin de pouvoir rechercher les fichiers dans les dossiers que l'utilisateur normal ne pourrait pas lire. du / donne l'utilisation du disque du répertoire racine /; --inodes lui dit de répertorier les utilisations d'inode, -S ne répertorie que les fichiers du répertoire lui-même et non des sous-répertoires, et -x de ne pas dépasser les limites du système de fichiers (votre problème est définitivement lié à / et pas sur, par exemple, /scratch). Ensuite, nous transmettons la sortie de cette commande à sort pour rechercher les pires contrevenants; -r inverse le tri pour que les plus grands soient en haut, et -h effectue un tri numérique et non alphabétique. Enfin, head -n 50 ne renvoie que les 50 premières lignes (c’est-à-dire les 50 pires délinquants).


Voici une explication de la commande plus compliquée. Sudo est nécessaire pour exécuter la commande find en tant qu'utilisateur root. Nous pouvons donc rechercher les fichiers dans les dossiers que l'utilisateur normal ne peut pas lire. find / donne une liste de tous les fichiers du répertoire racine /; -xdev indique à find de ne pas dépasser les limites du système de fichiers (car le problème est sans aucun doute sur / et non sur, par exemple, /scratch); -printf '%h\0' imprime le nom du répertoire se terminant par un octet nul. Ensuite, nous transmettons le résultat de cette commande à sort -z, puis à uniq -cz pour compter le nombre de fois que chaque répertoire a été imprimé (c.-à-d. Combien de fichiers se trouvent dans chaque répertoire); sort est nécessaire ici car uniq nécessite une liste triée. Ensuite, nous trions pour trouver les pires délinquants; -r inverse le tri pour que les plus grands soient en haut, et -n effectue un tri numérique et non alphabétique. tr '\0' '\n' remplace zéro octet par de nouvelles lignes. Enfin, head -n 50 ne renvoie que les 50 premières lignes (c’est-à-dire les 50 pires délinquants).

1
Gsxr1k