du -skh * in / возвращает сильно отличающийся размер от df на centos 5.5 - PullRequest
5 голосов
/ 13 декабря 2010

У меня есть VPS-фрагмент, работающий с Centos 5.5. У меня должно быть 15 гигабайт дискового пространства, но в соответствии с df кажется, что оно удваивает мое дисковое пространство.

, когда я запускаю du -skh * in / asroot я получаю:

[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

это соответствует тому, что я загрузил на машину, и добавляет примерно до 5 гигабайт.

НО, когда я запускаю 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 ]

11 голосов
/ 13 декабря 2010

Наиболее распространенная причина этого эффекта - открытые файлы, которые были удалены.

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

Обычный трюк в Unix-мире, гарантирующий отсутствие временных файлов, следующий:

  • Процесс создает и открывает временный файл

  • Сохраняя дескриптор открытого файла, процесс отменяет связь (т.е. удаляет) файл

  • Процесс читает и записывает в файл, как правило, используя дескриптор файла

  • Процесс закрывает файловый дескриптор, когда это сделано, и ядро ​​освобождает пространство

  • Если процесс (или система) неожиданно завершается, временный файл уже удален и очистка не требуется.

  • В качестве бонуса удаление файла уменьшает шансы именования коллизий при создании временных файлов, а также обеспечивает дополнительный уровень незаметности над запущенными процессами - для всех, кроме пользователя 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, который вы удалили после установки.

3 голосов
/ 24 апреля 2013

Еще один случай, с которым я столкнулся, хотя, похоже, он не является вашей проблемой, если вы монтируете раздел «поверх» существующих файлов.

Если вы делаете это, вы эффективно скрываете существующие файлы.которые существуют в каталоге в подключенном разделе (точка подключения) из подключенного раздела.

Исправление: остановите все процессы с открытыми файлами в подключенном разделе, размонтируйте раздел, найдите и переместите / удалите всефайлы, которые теперь появляются в каталоге точки монтирования.

2 голосов
/ 13 декабря 2010

У меня была такая же проблема с сервером FreeBSD.Перезагрузка помогла.

...