Почему rm over NFS не сразу освобождает место?

376
Robert

Я на сервере SUSE Enterprise, который смонтировал диск через монтирование NFS. Я создал файл 34GB через, dd if=/dev/Zero of=test_file bs=8k Count=4194304чтобы проверить скорость записи общего ресурса NFS. После этого я удалил файл через, rm test_fileа затем я сразу использовал df.

Значение в usedстолбце вывода dfначинает уменьшаться. Я обновляю, вызывая dfкаждые ~ 10 секунд и каждый раз, когда вижу, что usedзначение уменьшилось на ~ 2 ГБ.

Таким образом, кажется, что rm test_fileкоманда, кажется, не завершила свою работу, хотя у меня снова есть командная строка (таким образом, rm должен вернуть «0», верно?). Что здесь происходит на заднем плане?

1
Вы пробовали "синхронизировать"? choroba 6 лет назад 0
В то время как вы говорите, что у вас есть файловая система, смонтированная через NFS, как отформатировано монтирование NFS? Все, что делает NFS - это монтирует сеть. JakeGould 6 лет назад 1

1 ответ на вопрос

1
Austin Hemmelgarn

Файловая система на удаленном узле, который обеспечивает внутреннее хранилище для общего ресурса NFS, не освобождает пространство сразу.

Строго говоря, POSIX семантики не требуют удаления файла немедленно освободить пространство, которое он использовал ( на самом деле они не требуют, чтобы освободить любое пространство вообще, что - то важное значение для некоторых случаев применения). Из-за этого и того факта, что для освобождения места может потребоваться много времени, некоторые файловые системы не ждут, пока освобождение произойдет, а просто возвращаются, как только они могут убедиться, что запись файла не будет отображаться в списках каталогов ( что все, что требуется POSIX).

Возможные причины, по которым освобождение места может занять некоторое время:

  • Файловая система может очистить пустое пространство, поскольку она освобождена, чтобы предотвратить раскрытие информации. Это почти всегда дорогая операция.
  • Файловая система может находиться на SSD или в хранилище с тонким предоставлением и может быть настроена для информирования нижних уровней о том, что пространство не используется. Эта операция также может занять довольно много времени.
  • Файловой системе может потребоваться обновить структуры данных для целей внутреннего учета. Это может или не может занять много времени, но обычно это не тривиально.
  • Файловой системе может потребоваться обновить внутренние структуры данных, чтобы правильно обрабатывать любые ссылки или другие общие области в файле.

Похожие вопросы