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 zfs
oder btrfs
als Speicher-Backend bei der Initialisierung von auswählenLXDum Datenträgerkontingente zu unterstützen. Andere Speicher-Backends unterstützen keine Kontingente.