lv 在 Alpine 容器中创建 lv

问题描述 投票:0回答:1

我正在开发lvm csi,它可以在容器中创建逻辑卷(lvm)。
当我在 Alpine 基础镜像中运行

lvcreate
命令时它会成功,但当我使用其他基础镜像(例如 CentOS、Ubuntu 等...)时它会失败。
根据需要,将主机路径/dev挂载到容器,并将容器设置为privileged。 错误信息:

# lvcreate -y -L 4M lvmvg  -n test4
/dev/lvmvg/test4: not found: device not cleared
Aborting. Failed to wipe start of new LV

我在lvcreate命令中添加-vvv,详细日志显示udev没有运行。结果,我得到了两种在 CentOS 基础镜像中创建 lv 的方法。

  • 方法一:在容器中运行
    udev
    命令,就可以创建lv了。
  • 方法二:在容器中,在文件/etc/lvm/lvm.conf中将udev_sync和udev_rules设置为0,然后我就可以创建lv了。

不过,我不确定这两种方法是否有潜在的风险。

我的问题是:
udev没有运行在Alpine容器中,udev_sync和udev_rules也设置为1,为什么lv能创建成功?

docker udev lvm
1个回答
0
投票

终于得到了我想要的答案。
在 Alpine 容器中,lvm 是使用参数“disable-udev_sync”构建的。所以,虽然lvm.conf中的'udev_sync'设置为1,lvm不会使用udev来同步。
在其他容器(例如CentOS)中,lvm是使用参数“enable-udev_sync”构建的。如果lvm.conf中的'udev_sync'设置为1,lvm将使用udev进行同步,但udev服务未运行。结果,

lvcreate
会出现错误。

© www.soinside.com 2019 - 2024. All rights reserved.