Cuota dentro del contenedor LXD

Cuota dentro del contenedor LXD

Quiero habilitar la cuota dentro del contenedor LXD para limitar cada usuario a 10 GB de almacenamiento. Sin embargo, recibí el siguiente error:

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

¿Cómo habilitar la cuota dentro del contenedor LXD?

A continuación se muestra la configuración de mi host:

$ 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

A continuación se muestra la configuración de mi contenedor:

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

Respuesta1

He estado buscando por todos lados y tengo el mismo problema. Esto es con lo que terminé.

Las funciones compatibles con el sistema de archivos sonen el documento

Entonces, la única manera de tener soporte para cuotas desde dentro del contenedor es usando BTRFS, que personalmente no quiero usar.

En ZFS solo puede establecer cuota desde el host, no desde el invitado, porque la compatibilidad con ZFS en LXD no marca la casilla "Controlador de almacenamiento utilizable dentro de un contenedor".Hay un problema al respecto. Respecto a cuotas de usuarios y grupos establecidas desde el host. No lo he probado y me pregunto cómo es compatible y si es posible que necesite un mapeo UID/GID del invitado al host. Aunque no estoy seguro de eso.

En ZFS, ZVOL existe y se puede formatear como ext4, se ve como un dispositivo de bloque estándar desde el lado invitado y, por lo tanto, se puede usar para cuotas estándar de Linux. Pero esos no se pueden usar para rootfs,ver el problema en GitHub. Aún puede montarlo en áreas que tengan datos de usuarios para compararlos con cuotas (por ejemplo, /home, /var).

Luego está la virtualización libvirt sobre ZFS ZVOL, que es más lenta pero funciona como se esperaba con respecto a las cuotas de Linux.

Como consejo, siempre haga sus ZVOL con el tamaño mínimo necesario, ya que es mucho más fácil expandirlos que reducirlos, lo que requiere tiempo de inactividad.

Respuesta2

Debe seleccionar zfso btrfscomo backend de almacenamiento en la inicialización deLXDpara admitir cuota de disco. Otros backends de almacenamiento no admiten cuotas.

información relacionada