使用 Openstack Havana,我尝试从 nova 实例中分离 cinder 卷。
Nova 卷列表将其显示为正在使用中:
| 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 与编辑差异: http://pastebin.com/3CrGbcwu
错误的Compute.log: http://pastebin.com/1UCahB3d
答案1
我能够通过将 xml 转储中的 XML 复制到其自己的文件中来重新同步 libvirt 配置,然后通过以下方式将其更新回当前配置
virsh attach-device 4 filestore.xml --config
之后,我重新运行 novavolume-detach。它成功清理了计算节点,iscsi 会话现在空闲。然而,现在该卷陷入了“分离”状态。任何地方都没有错误,不知道为什么它没有返回“可用”。 tgt-admin 允许我将其脱机并恢复就绪状态,然后我使用 cinder reset-state 将其恢复为可用状态。