Разрешение дискового пространства unix-сервера не суммируется

3

Я пытаюсь оценить, где распределено мое дисковое пространство на моем Unix-сервере. Чтобы увидеть текущее состояние дискового пространства я бегу:
df -h

введите описание изображения здесь

Но при попытке оценить, что занимает место на диске и работает с /

du -skh * | sort -n

введите описание изображения здесь

Общее используемое пространство составляет 956 ГБ, но общее занимаемое пространство, которое я вижу в подразделении, составляет менее 730 ГБ. Числа просто не складываются. Как это может быть? Где остальные ~ 200гб ??

Примечание. Большая часть используемого дискового пространства используется MySQL. Один огромный стол InnoDB и несколько маленьких.

Ноам
источник
Какую файловую систему вы используете? Какой у тебя размер /tmp? Вы все еще видите это после перезагрузки?
Тердон
Для лучшей duоценки, добавить , -xчтобы предотвратить пересечение нескольких файловых систем: du -sxh /.
Слегка
duи dfиспользовать разные способы расчета размеров: linuxshellaccount.blogspot.com/2008/12/… . Большой размер блока или большое количество небольших / недавно удаленных файлов может быть причиной несоответствия.
Слегка
@SlightlyCuban du -sxh /показывает 690 ГБ. Имеет ли смысл этот 226GB из-за разных способов? Когда мне не хватит места на диске, когда du или df так скажут?
Noam
@ Возможно, но 20% FS может быть немного больше: serverfault.com/a/57103/187589 . Когда у вас заканчивается пространство, зависит от вашей файловой системы, размера блока и того, как вы его используете, но оно duдолжно быть более точным.
Слегка

Ответы:

1

dfсобирается спросить суперблок о том, сколько места выделено, в то время duкак рассчитает размер всех видимых файлов. Эти две разные метрики приведут df -hи du -sxh /не согласятся друг с другом.

Если вы беспокоитесь о свободном месте, duследует быть более точным (при условии, что у вас не будет исчерпано доступных блоков в файловой системе).

Дальнейшее объяснение: http://linuxshellaccount.blogspot.com/2008/12/why-du-and-df-display-different-values.html

SlightlyCuban
источник
Таким образом, вы бы сказали, что можно предположить, что у меня есть по крайней мере 200 ГБ свободных, а не 84 ГБ, как dfпретензии? Как суперблок узнает how much space is allocated? Также - имеет ли значение тот факт, что большая часть используемого дискового пространства используется таблицей MySQL InnoDB? (в основном один большой стол и несколько небольших)
Noam
Суперблок @Noam знает, сколько блоков используется (блоки x размер блока = используемое пространство). Как указывается в статье, это может включать в себя некоторые удаленные вещи. IIRC dfтакже собирается исключить пространство, зарезервированное для root, когда сообщает о доступном пространстве. Если MySQL использует много маленьких файлов, это искажает dfпротив du( /var/logкак правило, виновник для многих крошечных файлов).
Слегка
0

Вы запускаете duкоманду как root? Если нет, вы не сможете войти в каталоги, например, /rootиз-за проблем с разрешениями. Таким образом, вы не сложите размер файлов в этих каталогах. Это может объяснить, почему это число меньше. Кроме того, я считаю, что dfкоманда покажет общий размер файловой системы (например, размеры inode + размеры файлов), тогда как duбудет показана только размер файлов. Это сделало бы dfиметь большее количество.

Геворк Палян
источник