Detach Volume 操作 - 每天5分钟玩转 OpenStack(55)

每天5分钟OpenStack (4.3万) 2018-12-18 14:09:24

Detach Volume 操作 - 每天5分钟玩转 OpenStack(55)_https://www.tiejiang.org_每天5分钟OpenStack_第1张

上一节我们成功地通过 attach 操作为 instance 添加了 volume,而与之相对的操作是 detach,就是将 volume 从 instance 上卸载下来。

下图是 Detach 操作的流程图

Detach Volume 操作 - 每天5分钟玩转 OpenStack(55)_https://www.tiejiang.org_每天5分钟OpenStack_第2张

  1. 向 cinder-api 发送 detach 请求
  2. cinder-api 发送消息
  3. nova-compute detach volume
  4. cinder-volume 删除 target

下面我们详细讨论每一个步骤。

向 cinder-api 发送 attach 请求

客户(可以是 OpenStack 最终用户,也可以是其他程序)向 cinder-api 发送请求:“请 detach 指定 instance 上的 volume。

这里我们将 detach instance “c2”上的 volume “vol-1” 进入 GUI 操作菜单Project -> Compute -> Volumes。

Detach Volume 操作 - 每天5分钟玩转 OpenStack(55)_https://www.tiejiang.org_每天5分钟OpenStack_第3张

选择 volume “vol-1”,点击“Manage Attachments”。

Detach Volume 操作 - 每天5分钟玩转 OpenStack(55)_https://www.tiejiang.org_每天5分钟OpenStack_第4张

点击 “Detach Volume”。

Detach Volume 操作 - 每天5分钟玩转 OpenStack(55)_https://www.tiejiang.org_每天5分钟OpenStack_第5张

再次确认。

Detach Volume 操作 - 每天5分钟玩转 OpenStack(55)_https://www.tiejiang.org_每天5分钟OpenStack_第6张

cinder-api 将接收到 detach volume 的请求。日志文件在 /opt/stack/logs/c-api.log。

Detach Volume 操作 - 每天5分钟玩转 OpenStack(55)_https://www.tiejiang.org_每天5分钟OpenStack_第7张

cinder-api 发送消息

cinder-api 发送消息 detach 消息。 cinder-api 没有打印发送消息的日志,只能通过源代码查看 /opt/stack/cinder/cinder/volume/api.py,方法为 detach。

Detach Volume 操作 - 每天5分钟玩转 OpenStack(55)_https://www.tiejiang.org_每天5分钟OpenStack_第8张

Detach 的操作由 nova-compute 和 cinder-volume 共同完成:

  1. 首先 nova-compute 将 volume 从 instance 上 detach,然后断开与 iSCSI target 的连接。
  2. 最后 cinder-volume 删除 volume 相关的 iSCSI target。

后面两个小节将详细讨论这两个步骤。

nova-compute detach volume

nova-compute 首先将 volume 从 instance 上 detach 。 日志为 /opt/stack/logs/n-cpu.log。

Detach Volume 操作 - 每天5分钟玩转 OpenStack(55)_https://www.tiejiang.org_每天5分钟OpenStack_第9张

这时通过 virsh edit 可以看到 XML 配置文件中已经不在有 volume 的虚拟磁盘。
Detach Volume 操作 - 每天5分钟玩转 OpenStack(55)_https://www.tiejiang.org_每天5分钟OpenStack_第10张

接下来断开与 iSCSI target 的连接。

Detach Volume 操作 - 每天5分钟玩转 OpenStack(55)_https://www.tiejiang.org_每天5分钟OpenStack_第11张

具体有下面几个步骤:

  1. 将缓存中的数据 Flush 到 volume。
    Detach Volume 操作 - 每天5分钟玩转 OpenStack(55)_https://www.tiejiang.org_每天5分钟OpenStack_第12张
  2. 删除计算节点上 volume 对应的 SCSI 设备。
    Detach Volume 操作 - 每天5分钟玩转 OpenStack(55)_https://www.tiejiang.org_每天5分钟OpenStack_第13张
  3. 通过 iscsiadm 的 logout,delete 操作断开与 iSCSI target 的连接。
    Detach Volume 操作 - 每天5分钟玩转 OpenStack(55)_https://www.tiejiang.org_每天5分钟OpenStack_第14张

compue-nova 完成了 detach 工作,接下来 cinder-volume 就可以删除 volume 相关的 target 了。

cinder-volume 删除 target

存储节点 cinder-volume 通过 tgt-admin 命令删除 volume 对应的 target。日志文件为 /opt/stack/logs/c-vol.log。

Detach Volume 操作 - 每天5分钟玩转 OpenStack(55)_https://www.tiejiang.org_每天5分钟OpenStack_第15张

至此 detach volume 操作已经完成,GUI 也会更新 volume 的 attach 信息。

Detach Volume 操作 - 每天5分钟玩转 OpenStack(55)_https://www.tiejiang.org_每天5分钟OpenStack_第16张

以上就是 detach volume 的分析,下一节我们讨论 extend 操作。

 

Detach Volume 操作 - 每天5分钟玩转 OpenStack(55)_https://www.tiejiang.org_每天5分钟OpenStack_第17张

THE END

Leave a Reply