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_name
和 lxc config set storage.lvm_thinpool_name
适当。
它似乎有效。然而,LXD 目前对我的口味来说感觉有点太不成熟,我现在打算使用普通的 LXC。我期待几个月后再次尝试 LXD。
请注意,我们还随 LXD 提供了一个 python 脚本来为您进行初始 VG 配置。
至于磁盘配额,我们有一个新的规范,我们将很快实施,它将允许您为连接到支持它的容器的任何存储设置磁盘配额。
虽然我们仍然支持 LVM,但就存储后端而言,我们现在的主要关注点和偏好是 ZFS,因为它允许实时进行此类更改,并且在跨网络移动容器和快照时效果更好。
zfs、LVM 和 btrfs 将支持新的存储配额功能,但仅适用于 zfs 和 btrfs,LVM 需要重新启动容器。
我从 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_name
和 lxc config set storage.lvm_thinpool_name
适当。
它似乎有效。然而,LXD 目前对我的口味来说感觉有点太不成熟,我现在打算使用普通的 LXC。我期待几个月后再次尝试 LXD。
请注意,我们还随 LXD 提供了一个 python 脚本来为您进行初始 VG 配置。
至于磁盘配额,我们有一个新的规范,我们将很快实施,它将允许您为连接到支持它的容器的任何存储设置磁盘配额。
虽然我们仍然支持 LVM,但就存储后端而言,我们现在的主要关注点和偏好是 ZFS,因为它允许实时进行此类更改,并且在跨网络移动容器和快照时效果更好。
zfs、LVM 和 btrfs 将支持新的存储配额功能,但仅适用于 zfs 和 btrfs,LVM 需要重新启动容器。