du-skh * in / возвращает значительно отличающийся размер от df на centos 5.5
У меня есть VPS slice под управлением centos 5.5 предполагается, что у меня есть 15 гигабайт дискового пространства, но согласно df это, кажется, удваивает мое использование дискового пространства.
Когда я запускаю du -skh *
в / as root, я получаю:
[root@yardvps1 /]# du -skh *
0 aquota.group
0 aquota.user
5.2M bin
4.0K boot
4.0K dev
4.9M etc
2.5G home
12M lib
14M lib64
4.0K media
4.0K mnt
299M opt
0 proc
692K root
23M sbin
4.0K selinux
4.0K srv
0 sys
48K tmp
2.0G usr
121M var
Это согласуется с тем, что я загрузил в машину, и составляет около 5gigs.
Но когда я бегу df
я получаю:
[root@yardvps1 /]# df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/simfs 15728640 11659048 4069592 75% /
none 262144 4 262140 1% /dev
Он показывает мне, что я уже использую почти 12 гигов.
Что вызывает это несоответствие и могу ли я что-нибудь с этим поделать, я планировал сервер на основе 15 гигов, но теперь он в основном позволяет мне иметь около 7 Гигов материала на нем.
Спасибо.
3 ответа:
Наиболее распространенной причиной этого эффекта являются открытые файлы, которые были удалены.
Ядро освобождает дисковые блоки удаленного файла только в том случае, если он не используется в момент удаления. В противном случае это откладывается до закрытия файла или перезагрузки системы.Распространенный трюк Unix-world, чтобы гарантировать, что вокруг не осталось временных файлов, заключается в следующем:
Процесс создает и открывает временный файл
Пока все еще держа в руках откройте файловый дескриптор, процесс разблокирует (т. е. удаляет) файл
Процесс считывает и записывает в файл, как правило, используя файловый дескриптор
Процесс закрывает файловый дескриптор, когда это сделано, и ядро освобождает пространство
Если процесс (или система) неожиданно завершается, временный файл уже удален и очистка не требуется.
В качестве бонуса, удаление файла уменьшает вероятность именования коллизии при создании временных файлов, а также обеспечивает дополнительный слой неизвестности над запущенными процессами - для любого, кроме пользователя root, то есть.
Такое поведение гарантирует, что процессам не придется иметь дело с файлами, которые внезапно вырываются из-под их ног, а также что процессам не нужно консультироваться друг с другом, чтобы удалить файл. Это неожиданное поведение для тех, кто приходит из систем Windows, хотя, так как там вы обычно не находитесь разрешено удалять файл, который используется.
Команда
lsof
при запуске от имени root покажет все открытые файлы и конкретно укажет удаленные файлы, которые будут удалены:# lsof 2>/dev/null | grep deleted bootlogd 2024 root 1w REG 9,3 58 917506 /tmp/init.0W2ARi (deleted) bootlogd 2024 root 2w REG 9,3 58 917506 /tmp/init.0W2ARi (deleted)
Остановка и перезапуск провинившихся процессов или просто перезагрузка сервера должны решить эту проблему.
Удаленные файлы также могут быть открыты ядром, если, например, это смонтированный образ файловой системы. В этом случае необходимо выполнить размонтирование файловой системы или перезагрузку сервера. уловка.В вашем случае, судя по размеру "недостающего" пространства, я бы искал любые ссылки на файл, который вы использовали для настройки VPS, например, образ Centos DVD, который вы удалили после установки.
Еще один случай, с которым я столкнулся, хотя это не кажется вашей проблемой, - это если вы монтируете раздел "поверх" существующих файлов.
Если вы сделаете это, вы эффективно скроете существующие файлы, которые существуют в каталоге на смонтированном разделе (точка монтирования) из смонтированного раздела.
Чтобы исправить: остановите все процессы с открытыми файлами на смонтированном разделе, размонтируйте раздел, найдите и переместите/удалите все файлы, которые теперь появляются в каталоге точки монтирования.