2

Я пытаюсь освободить место на ZFS, удалив файлы. Они большие (> 1 ГБ), поэтому должны отображаться в цифрах. К сожалению, после отсоединения файлов df не показывает увеличения доступного пространства. Кажется, что удаленные файлы где-то имеют жесткие ссылки (но ls показывает счетчики жестких ссылок 1 для всех файлов, если я не создаю жесткую ссылку вручную (что я тестировал)).

Скрипт удаления файлов открывает, читает и закрывает эти файлы (я проверял это), поэтому нет никаких открытых файловых дескрипторов. После этого он использует unlink() для удаления файлов. ls также не показывает их больше. Просто доступное дисковое пространство не увеличивается.

Мы используем функцию снимков ZFS. Может быть, это причина, почему ничего не освобождается?

Любые идеи или подсказки к документации, касающейся моей проблемы, приветствуются.

1 ответ1

2

Согласно документации Oracle по zfs,

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

Если вы хотите освободить место на диске, вам придется очистить снимки, ссылающиеся на этот файл. Вы также можете прочитать о копировании при записи, как работает zfs.

У меня нет никакого опыта работы с zfs, но я использую btrfs. btrfs делает снимки аналогично zfs, и там появляется та же самая проблема. Конечно, поскольку я не хочу, чтобы удаленный файл в текущем рабочем наборе удалялся из моментального снимка, я, конечно, ожидал бы, что доступное дисковое пространство останется постоянным при удалении файла. В конце концов, файл фактически не удаляется, пока не будут удалены все ссылки (по всем снимкам).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .