1

我从LXD 存储规范中看到 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

我究竟做错了什么?

4

2 回答 2

1

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

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

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

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

于 2015-11-23T17:27:04.730 回答
0

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

根据 lxc-users 邮件的权威答案,列出:

“ storage.lvm_vg_name 不是针对每个容器的配置设置,它是针对整个守护进程的。

您使用 'lxc config set storage.lvm_vg_name myvolgroup' 设置它,然后 lxd 将使用卷组作为您之后创建的每个新映像和容器的存储。”

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

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

于 2015-10-14T15:16:24.920 回答