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





Df --sync работает?
Вероятно, это связано с как, вы усекли файл. ду и 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), чтобы ускорить это.