Вопрос или проблема
Я прочитал около 22 ответов на аналогичные вопросы только на Stack, почему df и du показывают разные результаты. Но меня беспокоит, на какой из них полагаться? Какой практически показывает правильный результат?
У меня только один загрузочный диск на моем Ubuntu 22.04 LTS, нет других/дополнительных внешних смонтированных дисков, но на моем сервере GCP Ubuntu df показывает примерно 40 ГБ дискового пространства используется из 50 ГБ, в то время как du и df оба показывают 49,9 ГБ из 50 ГБ.
Какой из них верный? Мне сложно поддерживать мой сервер. Это потому, что мой диск почти полностью заполнен или потому, что 4 ГБ ОЗУ и 2 общих ядра недостаточно для моей системы.
Вы включаете все смонтированные файловые системы, включая ОЗУ и псевдо-файловые системы, в расчет du
, тогда как df
— это фактически одна файловая система. Попробуйте добавить -x
к команде du
.
Даже в этом случае это может быть не на 100% точно. Существует множество различных факторов. Тип файловой системы, размер блока файловой системы, физический размер блока, жесткие ссылки, связанные ссылки, метаданные, разреженные файлы и так далее. Обычно это не точный расчет.
Как написано в их манах, du
вычисляет использование пространства файлов, тогда как df
вычисляет использование пространства файловой системы. Следовательно, df
— лучший инструмент для вашего случая использования.
Вы передаете df
раздел (или каталог) в качестве аргумента, чтобы узнать, сколько свободного места осталось на этом разделе (или на файловых системах, поддерживающих этот раздел). В вашем случае это результат, который вы ищете, и у вас осталось около 9 ГБ свободного места, как сказал @CR в комментарии.
С другой стороны, du
принимает в качестве аргумента файл или каталог; если каталог содержит подкаталоги из разных файловых систем, вы получите подсчет использования диска, который не имеет смысла. (В вашем выводе обратите внимание, как du
пытается перемещаться по /proc
, который является псевдо-файловой системой, не занимающей пространства.)
В этом случае необходимо помнить использовать опцию -x
или --one-file-system
, которая пропускает каталоги на разных файловых системах.
.
Ответ или решение
Когда вы сталкиваетесь с несоответствием между выводами команд df
и du
на вашей Ubuntu-системе, важно понимать, что эти инструменты измеряют разные аспекты использования дискового пространства.
Анализ разницы между df
и du
-
df
(disk free): Эта команда предоставляет информацию о свободном и занятом пространстве на файловой системе. Она работает на уровне файловой системы и учитывает не только файлы, занимаемые пользователем, но и системные файлы, метаданные и резервы для пользователя root. В вашем случаеdf
показывает, что из 50 ГБ занято 40 ГБ, что оставляет вам около 10 ГБ свободного пространства. Это данные для всей файловой системы и они более объективно отражают, сколько места осталось для добавления новых данных. -
du
(disk usage): Эта команда оценивает размер файлов и директорий, которые вы владеете, и может включать множество псевдофайловых систем, таких как/proc
. Это приводит к тому, чтоdu
зачастую показывает большую величину из-за учета всех подфайловых систем, которые в реальности не занимают физического места на диске. В вашем случае это значение близко к 49.9 ГБ, что, вероятно, связано с включением элементов, которыеdf
просто игнорирует.
Рекомендации
-
Используйте
df
для определения фактического свободного места: Посколькуdf
предоставляет информацию на уровне файловой системы, в вашей ситуации эта команда будет более надежным источником сведений о свободном месте. -
Корректное использование
du
: Если хотите использоватьdu
для оценки использования файлов в рамках одной файловой системы, добавьте опцию-x
(или--one-file-system
), чтобы исключить псевдофайловые системы и данные, расположенные на других файловых системах.
Смогу ли я сохранить еще 1-2 ГБ данных?
На основании вывода df
, у вас есть около 10 ГБ свободного места, что означает, что вы можете легко добавить дополнительные 1-2 ГБ данных на диск. Однако это предположение учитывает только общий объем и не рассматривает вопросы фрагментации файловой системы или зарезервированного места, что может повлиять на фактическую возможность записи больших файлов.
Дополнительные размышления
- Оперативная память и ядра: Недостаток оперативной памяти и процессорных ресурсов (4 ГБ RAM и 2 ядра) может также отрицательно сказываться на производительности вашей системы, но это не связано напрямую с ошибками подсчета свободного места, которое вы наблюдаете. Однако, в случае когда система начинает использовать swap, это может отразиться на общих характеристиках производительности.
Таким образом, для более надежного управления пространством на вашем сервере, ориентируйтесь на данные df
и используйте du
со специфичными параметрами, чтобы избежать недоразумений. Также рекомендуется контролировать и другие показатели производительности системы, такие как использование процессора и оперативной памяти, чтобы поддерживать стабильную работу сервера.