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
, Мой плохой, извини.
2 ответа
Возможно, какой-то процесс все еще удалил открытые файлы. Если это так, то они не появятся в 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
Если у вас есть какие-либо процессы с большими удаленными файлами, то остановка процесса должна быть достаточной для освобождения места на диске. В качестве альтернативы перезагрузка должна сделать то же самое.
Каждая файловая система имеет только определенное количество inode и блоков, которые могут быть сохранены в ней. Даже если есть достаточно места, вы не можете идти дальше.
Проверьте настройки с помощью
dumpe2fs /dev/sda5
(здесь важны только первые 50 строк).
Если у вас много маленьких файлов, которые меньше, чем размер блока, много места теряется.