技术解析
当lv是open状态下lvremove mkfs一类的命令都没办法
Logical volume vg0/VM_vps is used by another device.
LV in use: not deactivating
Can't remove open logical volume
一般常规情况是lv正在正常使用中,当umount或者其他应用已经停止后仍然无法移除或者使用,
dmsetup remove -f /dev/md-id路或者lvm路径
暴力一点的解决办法就直接在国外服务器上reboot,温柔一点的干法可以参考以下的案例:
# lvremove -f /dev/vg0/VM_vps Logical volume vg0/VM_vps is used by another device. # lvdisplay /dev/vg0/VM_vps|grep open # open 1 # lvchange -an /dev/vg0/VM_vps LV vg0/VM_vps in use: not deactivating # dmsetup info -c vg0-VM_vps Name Maj Min Stat Open Targ Event UUID vg0-VM_vps 253 65 L--w 1 1 2 XXX # dmsetup remove -force vg0-VM_vps device-mapper: remove ioctl failed: Device or resource busy # lvchange -an /dev/vg0/VM_vps /dev/vg0/VM_vps: read failed after 0 of 4096 at 0: Input/output error /dev/mapper/vg0-VM_vpsp1: read failed after 0 of 2048 at 0: Input/output error # dmsetup remove -force vg0-VM_vpsp1 # dmsetup remove -force vg0-VM_vps # lvs vg0|grep VM_vps VM_vps vg0 -wi--- 4.00G (已经是关闭状态了) # lvchange -an /dev/vg0/VM_vps # lvremove -f /dev/vg0/VM_vps Logical volume "VM_vps" successfully removed
/dev目录下会生成/dev/dm-xx的设备文件
在/dev/mapper目录下lvm的软连接链接到/dev/dm-xx上
例如LV是 /dev/vg0/VM_vps 在mapper下就是 /dev/mapper/vg0-VM_vps
在LV里面装系统划分了分区就会出现 /dev/mapper/vg0-VM_vpsp1或 /dev/mapper/vg0-VM_vps1这样的软连接到/dev/dm-xx下
在关闭应用后/dev/dm-xx设备没有被完全释放LV就是出于open状态使用dmsetup remove -f释放设备就可以移除对应的LV
另外还有一些因素可能也会导致无法移除或者操作LV