我正在开发lvm csi,它可以在容器中创建逻辑卷(lvm)。
当我在 Alpine 基础镜像中运行
lvcreate
命令时它会成功,但当我使用其他基础镜像(例如 CentOS、Ubuntu 等...)时它会失败。# 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了。不过,我不确定这两种方法是否有潜在的风险。
我的问题是:
udev没有运行在Alpine容器中,udev_sync和udev_rules也设置为1,为什么lv能创建成功?
终于得到了我想要的答案。
在 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
会出现错误。