J'ai récemment reçu un avertissement, que ma partition home est pleine. C'est une partition Ext4 montée sur /home
, /dev/sda
est un SSD de 240 Go:
hannes@XFLR6 ~> df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 19G 5.2G 13G 30% /
none 3.9G 792K 3.9G 1% /dev
none 3.9G 2.4M 3.9G 1% /dev/shm
none 3.9G 712K 3.9G 1% /var/run
none 3.9G 0 3.9G 0% /var/lock
/dev/sda5 193G 175G 7.9G 96% /home
/dev/sdb5 357G 92G 264G 26% /mnt/schacht
comme vous pouvez le constater, df -h
(et gparted) indique que /dev/sda5
est plein à 96%. Cependant, Ubuntu Disk Usage Analyzer et du -h
ne trouvent que 89 Go environ de données. ~/.gvfs
est vide et il n'y a pas d'autres systèmes de fichiers montés sous /home
. Comment cela peut-il être? J'ai déjà essayé de lancer du
en tant que root, mais cela ne change rien.
root@XFLR6 ~# Sudo fdisk -l /dev/sda
Disk /dev/sda: 240.1 GB, 240057409536 bytes
255 heads, 63 sectors/track, 29185 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0003e4c5
Device Boot Start End Blocks Id System
/dev/sda1 * 1 2432 19530752 83 Linux
/dev/sda2 2432 28450 208984065 5 Extended
/dev/sda5 2432 27963 205077504 83 Linux
/dev/sda6 27963 28450 3905536 82 Linux swap / Solaris
Edit: whoops - Je n'ai exécuté que du
sur ~
pas sur /home
- de nombreuses données ont été copiées par inadvertance sur /home
. Mon mauvais, désolé.
Il se peut qu'un processus ait encore des fichiers supprimés ouverts. Si tel est le cas, ils n'apparaîtront pas dans la sortie du
mais seront tout de même comptés dans la sortie df
.
Un moyen rapide de vérifier ceci est de lister /proc
comme utilisateur root
(indice Sudo su
devrait vous fournir un shell racine). Tous les fichiers ouverts, mais supprimés, auront (deleted)
à la fin du nom de la cible du lien symbolique.
ls -l /proc/*/fd/* | grep deleted | grep /home
devrait vous donner une liste de tous les fichiers ouverts. Une fois que vous avez cela, un ls -lL
du fichier spécifique devrait vous donner la taille du fichier.
Par exemple (en utilisant /tmp
sur mon système car il n'y a pas d'exemple sur /home
ici), je vois quelques fichiers appartenant à l'utilisateur mysql
.
richm@viking:/$ Sudo su
root@viking:/# ls -l /proc/*/fd/* | grep deleted | grep /tmp
lrwx------ 1 root root 64 Oct 13 06:30 /proc/1489/fd/11 -> /tmp/ibwmCqpg (deleted)
lrwx------ 1 root root 64 Oct 13 06:30 /proc/1491/fd/12 -> /tmp/ib9MTMQi (deleted)
root@viking:/# ls -lL /proc/1489/fd/11
-rw------- 0 mysql2 mysql2 0 Aug 24 14:09 /proc/1489/fd/11
root@viking:/# ls -lL /proc/1491/fd/12
-rw------- 0 mysql mysql 1320 Oct 15 13:40 /proc/1491/fd/12
Si des processus contenant des fichiers supprimés volumineux sont ouverts, l’arrêt du processus devrait suffire à récupérer l’espace disque. Sinon, un redémarrage devrait faire la même chose.
Chaque système de fichiers ne contient qu'une certaine quantité d'inodes et de blocs pouvant être stockés. Même s'il y a suffisamment d'espace, vous ne pouvez pas aller plus loin.
Vérifiez vos paramètres avec
dumpe2fs /dev/sda5
(seules les 50 premières lignes sont importantes ici).
Si vous avez beaucoup de petits fichiers plus petits que la taille de bloc, vous perdez beaucoup d’espace.