上一节咱们成功地经过 attach 操做为 instance 添加了 volume,而与之相对的操做是 detach,就是将 volume 从 instance 上卸载下来。api
下图是 Detach 操做的流程图缓存
向 cinder-api 发送 detach 请求spa
cinder-api 发送消息日志
nova-compute detach volumeci
cinder-volume 删除 targetget
下面咱们详细讨论每个步骤。it
客户(能够是 OpenStack 最终用户,也能够是其余程序)向 cinder-api 发送请求:“请 detach 指定 instance 上的 volume。配置
这里咱们将 detach instance “c2”上的 volume “vol-1” 进入 GUI 操做菜单Project -> Compute -> Volumes。请求
选择 volume “vol-1”,点击“Manage Attachments”。程序
点击 “Detach Volume”。
再次确认。
cinder-api 将接收到 detach volume 的请求。日志文件在 /opt/stack/logs/c-api.log。
cinder-api 发送消息 detach 消息。 cinder-api 没有打印发送消息的日志,只能经过源代码查看 /opt/stack/cinder/cinder/volume/api.py,方法为 detach。
Detach 的操做由 nova-compute 和 cinder-volume 共同完成:
首先 nova-compute 将 volume 从 instance 上 detach,而后断开与 iSCSI target 的链接。
最后 cinder-volume 删除 volume 相关的 iSCSI target。
后面两个小节将详细讨论这两个步骤。
nova-compute 首先将 volume 从 instance 上 detach 。 日志为 /opt/stack/logs/n-cpu.log。
这时经过 virsh edit 能够看到 XML 配置文件中已经不在有 volume 的虚拟磁盘。
接下来断开与 iSCSI target 的链接。
具体有下面几个步骤:
将缓存中的数据 Flush 到 volume。
删除计算节点上 volume 对应的 SCSI 设备。
经过 iscsiadm 的 logout,delete 操做断开与 iSCSI target 的链接。
compue-nova 完成了 detach 工做,接下来 cinder-volume 就能够删除 volume 相关的 target 了。
存储节点 cinder-volume 经过 tgt-admin 命令删除 volume 对应的 target。日志文件为 /opt/stack/logs/c-vol.log。
至此 detach volume 操做已经完成,GUI 也会更新 volume 的 attach 信息。
以上就是 detach volume 的分析,下一节咱们讨论 extend 操做。