LXD 配合 LVM backingstore 实现磁盘配额

LXD with LVM backingstore to achieve disk quotas

我从 LXD storage specs 看到 LVM 可以用作后备存储。我以前设法让 LVM 与 LXC 一起工作。这是非常 令人愉快,因为它允许对磁盘消耗进行配额式控制。

如何使用 LXD 实现此目的?

据我了解,storage.lvm_vg_name 必须指向我的音量 团体。我已经通过创建配置文件为容器设置了这个,并且 将该配置文件应用于容器。整个配置文件配置 看起来像这样:

name: my-profile-name
config:
  raw.lxc: |
    storage.lvm_vg_name = lxc-volume-group
    lxc.start.auto = 1
    lxc.arch = amd64
    lxc.network.type = veth
    lxc.network.link = lxcbr0
    lxc.network.flags = up
    lxc.network.hwaddr = 00:16:3e:xx:xx:xx
    lxc.cgroup.cpu.shares = 1
    lxc.cgroup.memory.limit_in_bytes = 76895572
  security.privileged: "false"
devices: {}

卷组应该可用并且工作,根据 主机盒上的 pvdisplay:

  --- Physical volume ---
  PV Name               /dev/sdc5
  VG Name               lxc-volume-group
  PV Size               21.87 GiB / not usable 3.97 MiB
  Allocatable           yes
  PE Size               4.00 MiB
  Total PE              5599
  Free PE               901
  Allocated PE          4698
  PV UUID               what-ever

但是在应用配置文件并启动容器后,它 似乎正在使用文件后备存储:

me@my-box:~# ls /var/lib/lxd/containers/container-name/rootfs/
bin  boot  dev  etc  home  lib  lib64  lost+found  media  mnt  opt
proc  root  run  sbin  srv  sys  tmp  usr  var

我做错了什么?

我会回答我自己的问题,以防对其他人有用。

根据 lxc-users 邮件的权威回答,列表:

"The storage.lvm_vg_name is not a per-container config setting, it's for the whole daemon.

You set it using 'lxc config set storage.lvm_vg_name myvolgroup', and then lxd will use the volume group as storage for every new image and container that you create afterwards."

作为一个非常粗略的总结,我使用 vgcreate 创建了一个卷组,然后使用 lvcreate 在该组中创建了一个卷。其次是 lxc config set storage.lvm_vg_namelxc config set storage.lvm_thinpool_name 适当。

它似乎有效。然而,LXD 目前对我的口味来说感觉有点太不成熟,我现在打算使用普通的 LXC。我期待几个月后再次尝试 LXD。

请注意,我们还随 LXD 提供了一个 python 脚本来为您进行初始 VG 配置。

至于磁盘配额,我们有一个新的规范,我们将很快实施,它将允许您为连接到支持它的容器的任何存储设置磁盘配额。

虽然我们仍然支持 LVM,但就存储后端而言,我们现在的主要关注点和偏好是 ZFS,因为它允许实时进行此类更改,并且在跨网络移动容器和快照时效果更好。

zfs、LVM 和 btrfs 将支持新的存储配额功能,但仅适用于 zfs 和 btrfs,LVM 需要重新启动容器。