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

Interesting Posts

Получить каждый столбец, который содержит несколько пробелов?

Является ли мой SSH-ключ сопряжен со мной как с человеком или с моей учетной записью пользователя на одной машине?

Как отправить содержимое буфера emacs в gcc без записи на диск?

Копирование содержимого буфера обмена в файл автоматически и непрерывно?

Эпиляция языка сценариев

Получить информацию об установленных и удаленных пакетах с помощью pacman

Почему мое регулярное выражение не работает в bash «if»?

Использование Rsync для SSH и поиска файлов

Установите ffmpeg на Netgear NAS, выполнив произвольное сжатие Debian

Расширение макроса Gmake: макрос вызывает макрос с переменной в аргументах

Debian Jessie висит на ботинке

Сравнение двух файлов и печать содержимого

Поиск и замена текста в нескольких файлах

Обновление Fedora 23 до Fedora 24 без обновления шрифта

Заменить имя подсистемы на строку udev

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