1. 项目场景
host os:Kylin-Server-10-SP1-Release-Build02-20210518-arm64
docker: docker-ce-18.09.7
cloud: openstack queens
storage: 同有 Acs5000
vm os: Kylin-4.0.2-server-sp2-2000-19080414.J1-arm64
2. 问题描述及原因分析
2.1 问题描述
虚拟机额外挂载了盘阵的磁盘,且在虚拟机中采用lvm,虚拟机硬重启发现错误,通过查看nova-compute的日志,发现报ProcessExecutionError:unexpected error while running command. Command: multipah -f 320d408ca45023fc0 失败,map in use, failed to remove multipath map 320d408ca45023fc0 。手动执行multipah -f 320d408ca45023fc0 ,确实是报in use的状态。若还未正式上系统的环境则参考Failed to remove multipath map 320b508ca45022b80。若是已经上线的系统则需要手动处理,请继续往下阅读。
采用手动移除命令如下:
dmsetup remove /dev/mapper/320d408ca45023fc0
报device-mapper: remove ioctl on 320d408ca45023fc0 failed:设备或资源忙
发现设备繁忙,无法移除,应该存在某种依赖。幸好dmsetup ls命令提供了一个–tree选项,可以树形形式显示设备间的相依性,这对梳理各逻辑设备和物理设备的关系很有帮助。执行命令如下:
dmsetup ls --tree
获取到关联结果如下:
......
8b5458220f6e4ddc9db5e1269cd893e3-file_brick1(252:11)
|
|----320d408ca45023fc0 (252:6)
|----(8:96)
|-----(8:112)
......
从结果看,8b5458220f6e4ddc9db5e1269cd893e3-file_brick1依赖了320d408ca45023fc0 ,导致设备或资源忙
故需要首先对8b5458220f6e4ddc9db5e1269cd893e3-file_brick1进行移除再对320d408ca45023fc0 移除,如下:
dmsetup remove /dev/8b5458220f6e4ddc9db5e1269cd893e3-file_brick1
dmsetup remove /dev/mapper/320d408ca45023fc0
同时,配置lvm.conf,然后将虚拟机重置状态后再次多次重启未发现错误。
3. 解决方案
具体分析如上,操作如下:
dmsetup ls --tree
dmsetup remove /dev/8b5458220f6e4ddc9db5e1269cd893e3-file_brick1
dmsetup remove /dev/mapper/320d408ca45023fc0
4. 参考方案
https://blog.csdn.net/Man_In_The_Night/article/details/108885415
https://blog.csdn.net/nanhai_happy/article/details/126057338
https://www.cnblogs.com/my-show-time/p/14982032.html