Btrfs + LXC: каким-либо образом показать даже приблизительное приблизительное свободное пространство для контейнера LXC с кавычками?

Я экспериментирую с LXC, используя Btrfs в качестве резервного хранилища. Btrfs позволяет легко делать снимки / дедупликации и идеально подходит для вращения нескольких «псевдо-виртуальных машин».

Проблема, с которой я сталкиваюсь, заключается в том, что некоторые из приложений, которые я тестирую, выгружают большое количество данных на диск. Я пытаюсь ограничить использование тома Btrfs, поэтому я назначил квоту на субволок, созданный LXC для конкретного контейнера.

У приложения действительно есть отказоустойчивый тест – если на файловую систему, на которую он пишет (например, 512 МБ), он видит меньше определенного объема свободного места на диске, он начинает очищать старые журналы, чтобы освободить место для новых.

Проблема состоит в том, что даже при использовании квоты корневая файловая система LXC по-прежнему сообщает полный размер файловой системы Btrfs хоста.

Пример: если моя файловая система Btrfs составляет 250 ГБ, и я создаю контейнер LXC с использованием параметров -B btrfs и -s , теперь у меня есть subvolume в файловой системе Btrfs, представляющей корень этого нового контейнера. Затем я хочу ограничить пространство, занимаемое контейнером, поэтому я применяю лимит qgroup 32GB к контейнеру. Однако команда df , выполняемая в контейнере LXC, по-прежнему показывает общую размер файловой системы 250 ГБ и свободное пространство примерно на основе фактического свободного пространства файловой системы хоста; т.е. пределы квот не отображаются на df .

Это означает, что мое приложение для журнала может заполнить всю квоту и по-прежнему считать, что для записи требуется 200 + ГБ пространства, поэтому она не перерабатывает старые данные. В конце концов, квота превышена, и из-за ограничений файловых систем COW мне приходится отключать квоту и вручную удалять старые журналы – если квота по-прежнему применяется с одинаковым размером, невозможно удалить данные из-за не являясь дополнительным пространством для операции удаления.

Я достаточно читал и достаточно разбираюсь в Btrfs, чтобы понять, что идея «свободного пространства» запутана в Btrfs и может быть проблемой для разработки, но есть ли какой-либо способ даже получить цифру «ballpark» изнутри LXC сколько квот остается? Предпочтительно это должно выполняться стандартными API-интерфейсами для получения свободного места на диске (те, которые использует df ), поскольку это означает, что он также будет применяться к другим приложениям, обращающимся к файловой системе, и должен знать его приблизительное свободное пространство.

Если бы я мог проникнуть, скажем, 1 ГБ или около того фактического свободного места (в соответствии с квотой), этого было бы достаточно для настройки параметров истечения журнала, чтобы файловая система не превышала квоту.

  • xfs квота не надежна
  • как предупреждать о пользовательских квотах пользователя ftp в оболочке / sbin / nologin?
  • Systemd с поддержкой tmpfs | Как указать размер / tmp вручную
  • Почему chmod требует дискового пространства? Не-местный алгоритм?
  • Значение группы ZFS не соответствует текущему
  • установка квоты на zfs не работает
  • Не удалось создать файл rm: превышена дисковая квота
  • Как настроить пользовательские квоты для дискового хранилища?
  • One Solution collect form web for “Btrfs + LXC: каким-либо образом показать даже приблизительное приблизительное свободное пространство для контейнера LXC с кавычками?”

    Вот лучший инструмент, который я нашел для обработки выделения пространства subbolf btrfs: https://poisonpacket.wordpress.com/2015/05/26/btrfs-snapshot-size-disk-usage/

    Все хедиты идут к Кайлу Агронику (автор этого сценария)

    Linux и Unix - лучшая ОС в мире.