Квота внутри контейнера LXD

Квота внутри контейнера LXD

Я хочу включить квоту внутри контейнера LXD, чтобы ограничить каждого пользователя хранилищем в 10 ГБ. Однако я получил следующую ошибку:

root@test:~# quotacheck -avug
quotacheck: Cannot find filesystem to check or filesystem not mounted with quota option.

Как включить квоту внутри контейнера LXD?

Ниже представлена ​​конфигурация моего хоста:

$ lxc config show test
architecture: x86_64
config:
  raw.lxc: lxc.rootfs.options=usrjquota=aquota.user,grpjquota=aquota.group,jqfmt=vfsv0
  security.privileged: "true"
  volatile.base_image: 08bbf441bb737097586e9f313b239cecbba96222e58457881b3718c45c17e074
  volatile.eth0.hwaddr: 00:16:3e:d3:ab:f7
  volatile.idmap.base: "0"
  volatile.idmap.next: '[]'
  volatile.last_state.idmap: '[]'
  volatile.last_state.power: RUNNING
devices:
  root:
    path: /
    type: disk
ephemeral: false
profiles:
- default
stateful: false
description: ""

$ cat /etc/*release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=16.04
DISTRIB_CODENAME=xenial
DISTRIB_DESCRIPTION="Ubuntu 16.04.4 LTS"
NAME="Ubuntu"
VERSION="16.04.4 LTS (Xenial Xerus)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 16.04.4 LTS"
VERSION_ID="16.04"
HOME_URL="http://www.ubuntu.com/"
SUPPORT_URL="http://help.ubuntu.com/"
BUG_REPORT_URL="http://bugs.launchpad.net/ubuntu/"
VERSION_CODENAME=xenial
UBUNTU_CODENAME=xenial

Ниже представлена ​​конфигурация моего контейнера:

root@test:~# cat /etc/fstab 
LABEL=cloudimg-rootfs   /    ext4   defaults    0 0

root@test:~# cat /etc/*release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=16.04
DISTRIB_CODENAME=xenial
DISTRIB_DESCRIPTION="Ubuntu 16.04.4 LTS"
NAME="Ubuntu"
VERSION="16.04.4 LTS (Xenial Xerus)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 16.04.4 LTS"
VERSION_ID="16.04"
HOME_URL="http://www.ubuntu.com/"
SUPPORT_URL="http://help.ubuntu.com/"
BUG_REPORT_URL="http://bugs.launchpad.net/ubuntu/"
VERSION_CODENAME=xenial
UBUNTU_CODENAME=xenial

решение1

Я искал везде, у меня была та же проблема. Вот чем я закончил.

Поддерживаемые функции файловой системы:в документе

Таким образом, единственный способ обеспечить поддержку квот изнутри контейнера — использовать BTRFS, что лично я не хочу использовать.

В ZFS вы можете установить квоту только с хоста, а не с гостя, поскольку поддержка ZFS в LXD не устанавливает флажок «Драйвер хранилища, используемый внутри контейнера».Есть проблема по этому поводу. Касательно квот пользователей и групп, установленных с хоста. Я не тестировал и интересно, как это поддерживается и может ли потребоваться сопоставление UID/GID от гостя к хосту. Хотя в этом я не уверен.

На ZFS ZVOL существуют и могут быть отформатированы как ext4, они видны как стандартное блочное устройство со стороны гостя, и, таким образом, могут использоваться для стандартных квот Linux. Но их нельзя использовать для rootfs,см. проблему на GitHub. Вы по-прежнему можете монтировать его в областях, где есть пользовательские данные для проверки на соответствие квотам (например, /home, /var).

Затем есть виртуализация libvirt поверх ZFS ZVOLs, которая медленнее, но работает так, как и ожидалось, с учетом квот Linux.

В качестве совета: всегда создавайте ZVOL минимально необходимого размера, поскольку их гораздо проще расширять, чем сжимать, и в последнем случае требуется простои.

решение2

Вам следует выбрать zfsили btrfsв качестве внутреннего хранилища при инициализацииЛКДдля поддержки квоты диска. Другие бэкэнды хранения не поддерживают квоту.

Связанный контент