du -skh * in / возвращает размер, сильно отличающийся от df в centos 5.5

StackOverflow https://stackoverflow.com/questions/4424461

Вопрос

У меня есть 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

это согласуется с тем, что я загрузил на компьютер, и в сумме составляет около 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 гигабайт материала.

Спасибо.

Это было полезно?

Решение

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

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

Распространенный в мире 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, напримеробраз DVD-диска Centos, который вы удалили после установки.

Другие советы

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top