问题
设置
在 Proxmox 服务器上,我创建了一个 LXC 容器:
pct create 101 local:vztmpl/centos-8-default_20201210_amd64.tar.xz --features mknod=1,nesting=1,fuse=1 --ostype centos --storage=CTVM --description "centos glusterfs" --hostname thorgluster --password "password" --onboot 1 --net0 name=eth0,bridge=vmbr0 --unprivileged=0
然后可以使用以下命令将设备挂载/dev/sdd
到其中:
lxc-device add -n 101 /dev/sdd
并添加以下几行/etc/pve/lxc/101.conf
以便它在重启时挂载(8:48
来自lsblk
):
lxc.cgroup2.devices.allow = b 8:48 rwm
lxc.mount.entry = /dev/sdd /dev/sdd none bind,optional,create=file
请注意,我需要设备挂载而不是绑定挂载,因为我需要能够在容器内部对驱动器运行 LVM 命令。
实际问题
然而在未来,/dev/sdd
可能会/dev/sd[a-z]
根据这个帖子。那么我该如何处理这个改名问题呢?
尝试的解决方案
- 我尝试使用
/dev/disk/by-id/ata-ST2000DM008-2FR102_ZFL1FYFF
它来代替,/dev/sdd
但没有效果。 - 我考虑在安装之前创建永久设备节点,
mknod
如下所示这个帖子但我还没有在其他地方看到过这种做法,也不知道像这样使用 mknod 时是否还有其他注意事项。 - 这个帖子表示设备名称与所插入的端口绑定。这意味着我所要做的就是在磁盘和端口上贴上物理标签。
- 我看到某处我可以将虚拟硬盘安装到容器中以避免此问题,但我还没有看到有关如何执行此操作的任何文档。(编辑:我可能能够使用循环设备。正在研究这个问题。)
- 我尝试添加
lvm.external=true
但/etc/pve/lxc/101.conf
出现错误。
答案1
我的建议是在主机上也使用 LVM。使用要用于虚拟机的磁盘创建一个卷组:
vgcreate VMdisks /dev/sdd /dev/sde
然后创建一个使用所有内容的逻辑卷/dev/sdd
:
lvcreate -n Centos01SystemDisk -l 100%PVS VMdisks /dev/sdd
然后用作/dev/VMdisks/Centos01SystemDisk
您的 VM 磁盘。
您无需关心哪个磁盘是哪个,另外您还拥有 LVM 功能(扩展 LV、创建快照等的能力)。
答案2
我遇到的问题是将其用作/dev/sdd
fstab 的第二个参数。它应该是dev/sdd
proxmox 将附加到哪个参数。该行现在看起来像这样
lxc.mount.entry = /dev/disk/by-id/ata-ST2000DM008-2FR102_ZFL1FYFF dev/sdd none bind,optional,create=file