LXD 容器内的配额

LXD 容器内的配额

我想在 LXD 容器内启用配额,以限制每个用户只能使用 10GB 存储空间。但是我收到以下错误:

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 上,您只能从主机设置配额,而不能从客户机设置,因为 LXD 中的 ZFS 支持不选中“容器内可用的存储驱动程序”框。存在一个问题。关于从主机设置的用户和组配额。我还没有测试过,不知道它是如何支持的,是否需要从客户机到主机的 UID/GID 映射。不过我不确定。

在 ZFS 上,ZVOL 确实存在并且可以格式化为 ext4,它们在客户机端被视为标准块设备,因此可以用于标准 Linux 配额。但这些不能用于 rootfs,查看 GitHub 上的问题。您仍然可以将其安装在具有用户数据的区域以检查配额(例如 /home、/var)。

然后是通过 ZFS ZVOLs 进行 libvirt 虚拟化,虽然速度较慢但在 Linux 配额方面能按预期工作。

建议始终将 ZVOL 设置为所需的最小大小,因为扩展比缩小要容易得多,后者需要停机。

答案2

您应该在初始化时选择zfs或作为存储后端btrfs路心得支持磁盘配额。其他存储后端不支持配额。

相关内容