Назад | Перейти на главную страницу

Несоответствие дискового пространства на OS X Server (Leopard)

Моя система Nagios отправила мне предупреждение, чтобы сообщить, что на одном из дисков нашего сервера OS X очень мало места. Когда я бегу df /Volumes/Apps/ я получил

/dev/disk0s3  117209520 114932472   2277048    99%    /Volumes/Apps

Когда я бегу du -c /Volumes/Apps это сообщает

11489944        total

Почему может быть такая огромная разница? Что еще более важно, как мне найти проблему и что я могу с ней сделать? По сути, я просто администратор Windows, так что здесь я не в своей зоне комфорта. Я использую Mac, но я не администратор Mac в полном смысле этого слова.

Обновить:

Бег ls -laR /Volumes/Apps/ сообщает в общей сложности 10281584, что сбивает с толку даже ниже, чем у отчетов du, хотя и находится в том же районе.

Исправлено:

Обходной путь, а не решение, поэтому он не опубликован в качестве ответа. Я просто переформатировал раздел Apps и восстановил его содержимое. До этого я запускал Дисковую утилиту, чтобы попытаться обнаружить / исправить любые проблемы, но она не сообщала об обнаруженных проблемах.

Я полагаю, вы это видите, потому что du сообщает о размерах каталогов по пути, который вы запрашиваете. IE, если у вас есть файлы в / Volumes / Apps, он не будет добавлять их размер в счетчик.

В этом можно убедиться, выполнив следующие действия:

touch /Volumes/Apps/test.txt
cat /dev/random > /Volumes/Apps/test.txt (control-c this after a sec to stop it)
du -c

На этом этапе обратите внимание, что когда вы запустите du, он не покажет этот файл. Теперь сделайте следующее:

mkdir /Volumes/Apps/test
mv /Volumes/Apps/test.txt /Volumes/Apps/test/test.txt
du -c

Теперь вы должны увидеть пространство, используемое файлом test.txt. В вашей ситуации я предполагаю, что у вас есть коллекция .dmg, zip-файлов или других монолитных файлов, занимающих куски вашего пространства.

Это странно. Единственное, что сообщает df или, я бы сказал, учитывает, что du не делает, - это метаданные. Как объяснил этот article du не учитывает такие вещи, как inodes, карты дисков и суперблоки, поскольку du работает в пользовательском пространстве.

Может быть, это из-за того, что Mac отображает плохие блоки в вашей файловой системе и, таким образом, они «используются» в соответствии с df? Поскольку этого не происходит в пользовательском пространстве, это объясняет, почему du не сообщает об этом.

Также в качестве примечания, и я уверен, что вы уже знаете, что df и du по умолчанию используют счетчик блоков отчетов, а не размер. Поэтому, если df или du ​​сообщают в сумме 117209520, а размер вашего блока равен 512, тогда:

117209520 * .512 / 1024 = МБ

Если вы хотите видеть его в удобочитаемых единицах, просто используйте df -h или du ​​-sh