Я использую большой экземпляр на серверах Amazon EC2. Запускаю команду df и получаю:
root@db:~# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 9.9G 9.1G 284M 98% /
tmpfs 3.8G 0 3.8G 0% /lib/init/rw
varrun 3.8G 116K 3.8G 1% /var/run
varlock 3.8G 0 3.8G 0% /var/lock
udev 3.8G 80K 3.8G 1% /dev
tmpfs 3.8G 0 3.8G 0% /dev/shm
/dev/sdb 414G 957M 392G 1% /mnt
/dev/sdf 50G 12G 35G 26% /byp
/dev/sdk 99G 31G 63G 33% /backups
Затем я запускаю команду du и получаю:
root@db:/# du -s -h /*
31G /backups
5.5M /bin
136K /boot
12G /byp
80K /dev
5.8M /etc
12K /home
70M /lib
11M /lib32
0 /lib64
16K /lost+found
759M /mnt
4.0K /opt
du: cannot access `/proc/6917/task/6917/fd/4': No such file or directory
du: cannot access `/proc/6917/fd/4': No such file or directory
0 /proc
31M /root
7.7M /sbin
4.0K /selinux
4.0K /srv
0 /sys
11M /tmp
1.1G /usr
114M /var
Если вы заметили, когда вы складываете все размеры в выводе команды du для не смонтированных каталогов, вы не приблизитесь к 9.1G, как показано в команде df.
Означает ли это, что у меня плохой диск? Если да, то как это исправить?
Вполне возможно, что у вас есть очень большой удаленный файл (или много маленьких), в котором процесс все еще имеет дескриптор открытого файла. Способ найти их - бежать
# lsof | grep "deleted"
Если вы видите много строк, заканчивающихся на «(удалено)», то вы можете найти идентификатор процесса, в котором они открыты, и перезапустить его. Как только это произойдет, ваше дисковое пространство должно вернуться.
Если это не поможет, я бы порекомендовал fsck.
Есть множество причин, по которым du не равно df. Смотрите ответы на этот вопрос.
Некоторые из них - это наложение, множество маленьких файлов и блоков большего размера, а также удаленные файлы, которые все еще используются. Оверлейное монтирование - это когда вы монтируете файловую систему в точку монтирования, в которой были файлы, поэтому du их не видит.
Основное различие между ними заключается в том, что df просто проверяет суперблок и доверяет ему, тогда как du сканирует все файлы, которые он может видеть, и складывает их. Посмотри это Ссылка IBM для информации о суперблоке.
Всегда используйте опцию -x с du, когда преследуете подобные проблемы. Это предотвращает пересечение файловых систем du.