Kontingent im LXD-Container

Kontingent im LXD-Container

Ich möchte im LXD-Container Kontingente aktivieren, um jedem Benutzer 10 GB Speicherplatz zu gewähren. Allerdings erhalte ich die folgende Fehlermeldung:

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

Wie aktiviere ich das Kontingent im LXD-Container?

Unten ist meine Hostkonfiguration:

$ 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

Unten ist meine Containerkonfiguration:

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

Antwort1

Ich habe überall gesucht und hatte selbst das gleiche Problem. Hier ist das Ergebnis.

Die vom Dateisystem unterstützten Funktionen sindim Dokument

Die einzige Möglichkeit, Kontingentunterstützung innerhalb des Containers zu erhalten, ist die Verwendung von BTRFS, was ich persönlich nicht verwenden möchte.

Unter ZFS können Sie das Kontingent nur vom Host aus festlegen, nicht vom Gast, da die ZFS-Unterstützung in LXD das Kontrollkästchen „Innerhalb eines Containers verwendbarer Speichertreiber“ nicht aktiviert.Es gibt ein Problem damit. Bezüglich der vom Host festgelegten Benutzer- und Gruppenquoten. Ich habe es nicht getestet und frage mich, wie es unterstützt wird und ob möglicherweise eine UID/GID-Zuordnung vom Gast zum Host erforderlich ist. Da bin ich mir jedoch nicht sicher.

Unter ZFS gibt es ZVOL, die als ext4 formatiert werden können. Sie werden von der Gastseite als Standardblockgerät angesehen und können daher für Standard-Linux-Quoten verwendet werden. Sie können jedoch nicht für Rootfs verwendet werden.siehe das Problem auf GitHub. Sie können es weiterhin in Bereichen mounten, in denen Benutzerdaten vorhanden sind, um sie mit Kontingenten zu vergleichen (z. B. /home, /var).

Dann gibt es die Libvirt-Virtualisierung über ZFS ZVOLs, die langsamer ist, aber in Bezug auf Linux-Kontingente wie erwartet funktioniert.

Als Tipp sollten Sie Ihre ZVOLs immer in der erforderlichen Mindestgröße erstellen, da eine Erweiterung viel einfacher ist als eine Verkleinerung, die Ausfallzeiten zur Folge hätte.

Antwort2

Sie sollten zfsoder btrfsals Speicher-Backend bei der Initialisierung von auswählenLXDum Datenträgerkontingente zu unterstützen. Andere Speicher-Backends unterstützen keine Kontingente.

verwandte Informationen