Получите `df` для отображения обновленной информации о FreeBSD

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

  •  09-06-2019
  •  | 
  •  

Вопрос

Недавно у меня закончилось дисковое пространство на диске сервера FreeBSD.Я обрезал файл, который вызывал проблемы, но я не вижу, чтобы изменения отражались при запуске df.Когда я бегу du -d0 в разделе он показывает правильное значение.Есть ли какой-нибудь способ принудительно обновить эту информацию?Что приводит к тому, что результат здесь отличается?

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

Решение

Вероятно, это связано с как вы обрезали файл. du и df сообщайте о разных вещах как в этом посте на unix.com объясняется.Тот факт, что пространство не используется, не обязательно означает, что оно свободно...

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

В BSD запись каталога - это просто одна из многих ссылок на базовые данные файла (называемая индексом).Когда файл удаляется с помощью команды rm (1), уменьшается только количество ссылок.Если количество ссылок по-прежнему положительное, (напримерфайл содержит другие записи каталога из-за символических ссылок), то данные базового файла не удаляются.

Новые пользователи BSD часто не понимают, что программа, у которой открыт файл, также содержит ссылку.Это предотвращает исчезновение данных базового файла во время его использования процессом.Когда процесс закрывает файл, если количество ссылок падает до нуля, файловое пространство помечается как доступное.Эта схема используется, чтобы избежать проблем типа Microsoft Windows, когда она не позволяет вам удалить файл, потому что какая-то неуказанная программа все еще держит его открытым.

Простой способ наблюдать за этим - выполнить следующее

cp /bin/cat /tmp/cat-test
/tmp/cat-test &
rm /tmp/cat-test

Пока фоновый процесс не будет завершен, файловое пространство, используемое /tmp/cat-test, будет оставаться выделенным и недоступным, как сообщает df(1), но команда du (1) не сможет учесть это, поскольку у нее больше нет имени файла.

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

Процессы, удерживающие файлы открытыми, являются одной из причин, по которой команда newsyslog (8) посылает сигналы syslogd или другим программам ведения журнала, чтобы сообщить им, что они должны закрыть и повторно открыть свои файлы журнала после их поворота.

Softupdates также может повлиять на свободное пространство файловой системы, поскольку фактическое восстановление пространства inode может быть отложено;команда sync(8) может быть использована для ускорения этого процесса.

Работает ли df --sync?

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