Сведения о вопросе

Codeliver

06:30, 21st August, 2020

Теги

Получить `df`, чтобы показать обновленную информацию о FreeBSD

Просмотров: 455   Ответов: 3

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



  Сведения об ответе

ASER

08:32, 13th August, 2020

В 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 также может влиять на свободное пространство файловой системы, так как фактическое восстановление пространства индекса может быть отложено; команда sync(8) может использоваться, чтобы побудить это произойти раньше.


  Сведения об ответе

LIZA

15:56, 5th August, 2020

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


  Сведения об ответе

appple

00:50, 12th August, 2020

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


Ответить на вопрос

Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться