使用 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 转储复制到其自己的文件中来重新同步 libvirt 配置,然后通过以下方式将其更新回当前配置
virsh attach-device 4 filestore.xml --config
之后,我重新运行了 nova volume-detach。它成功清理了计算节点,iscsi 会话现在处于空闲状态。但是,现在卷卡在“正在分离”状态。没有任何错误,不知道为什么它没有回到“可用”状态。tgt-admin 允许我将其脱机并恢复为就绪状态,然后我使用 cinder reset-state 将其恢复为可用状态。