nova volume-detach 静默失败,计算日志显示 libvirtError:无效参数:没有目标设备 vdb

nova volume-detach 静默失败,计算日志显示 libvirtError:无效参数:没有目标设备 vdb

使用 Openstack Havana,我尝试从 nova 实例中分离一个 cinder 卷。

Nova volume-list 显示它正在使用中:

| 34b0ea26-f85c-4b62-8ebd-884b0e63e2d5 | in-use | filestore | 256  | None| 4d05ffe4-d30a-4c93-b710-c9ec80dad1c2 |

该卷通过 iscsi 连接:

# iscsiadm -m session
tcp: [5] 10.3.40.10:3260,1 iqn.2010-10.org.openstack:volume-34b0ea26-f85c-4b62-8ebd-884b0e63e2d5 (non-flash)

它在实例中可见为 /dev/vdb,并且可安装和读/写。

然而,在实例中卸载它并发出

# nova volume-detach 4d05ffe4-d30a-4c93-b710-c9ec80dad1c2 34b0ea26-f85c-4b62-8ebd-884b0e63e2d5

它不会分离。该卷保持标记为“正在使用”。我在 compute.log 中收到此错误:

libvirtError: invalid argument: no target device vdb

当我在计算节点上运行“virsh edit 4”时,vdb 的磁盘设备实际上丢失了。但是,当我运行“virsh dumpxml 4”时,它仍然存在!

我怎样才能解开这个谜团?

Virsh dumpxml 与 edit 的差异: http://pastebin.com/3CrGbcwu

错误的 Compute.log: http://pastebin.com/1UCahB3d

答案1

我可以通过将 XML 从 xml 转储复制到其自己的文件中来重新同步 lib​​virt 配置,然后通过以下方式将其更新回当前配置

virsh attach-device 4 filestore.xml --config

之后,我重新运行了 nova volume-detach。它成功清理了计算节点,iscsi 会话现在处于空闲状态。但是,现在卷卡在“正在分离”状态。没有任何错误,不知道为什么它没有回到“可用”状态。tgt-admin 允许我将其脱机并恢复为就绪状态,然后我使用 cinder reset-state 将其恢复为可用状态。

相关内容