df сообщает, что раздел ext4 заполнен, но данных нет

Недавно я получил предупреждение, что мой домашний раздел заполнен. Это Ext4-раздел, установленный на /home, /dev/sda это SSD на 240 ГБ:

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

, как вы можете видеть, df -h (и gparted) сообщает, что /dev/sda5 составляет 96% полный. Тем не менее, Ubuntu Disk Usage Analyzer и du -h находят только около 89 ГБ данных. ~/.gvfs пусто, и нет других файловых систем, смонтированных ниже /home. Как это может быть? Я уже пытался запустить du от имени root, но это ничего не меняет.

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

Редактировать: упс - я только du запустил ~, а не /home - было много данных, непреднамеренно скопированных в /home. Мой плохой, извини.

6
задан 6 July 2011 в 11:08

2 ответа

Каждая файловая система только имеет определенное количество inodes и блоков, которые могут быть сохранены на нем. Даже в случае, если существует достаточно пространства, Вы не можете пойти далее.

Проверьте свои настройки с

dumpe2fs /dev/sda5

(только лучшие 50 строк важны здесь).

Если у Вас есть много маленьких файлов, которые меньше, чем blocksize, много пространства потрачено впустую.

1
ответ дан 23 November 2019 в 07:27

Могло случиться так, что некоторый процесс все еще удалил открытые файлы. Если это верно, затем они не появятся в du вывод, но был бы все еще включен df вывод.

Один быстрый способ проверить на них состоит в том, чтобы перечислить /proc как пользователь root (подсказка sudo su должен получить Вас корневая оболочка). Любой открывается, но удаленные файлы будут иметь (deleted) в конце символьной ссылки предназначаются для имени.

ls -l /proc/*/fd/* | grep deleted | grep /home

должен дать Вам список любых открытых файлов. После того как у Вас есть это затем ls -lL из определенного файла должен дать Вам размер файла.

Как пример (использование /tmp в моей системе, потому что нет никаких примеров на /home здесь), я вижу несколько файлов, принадлежавших пользователю 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

Если у Вас есть какие-либо процессы с большими удаленными файлами, открытыми, затем останавливания процесса должно быть достаточно для исправления дискового пространства. Кроме того, перезагрузка должна сделать то же самое.

11
ответ дан 23 November 2019 в 07:27

Другие вопросы по тегам:

Похожие вопросы: