Detach volume和Attach volume的执行相反
detach volume流程是:
cinder-api post detach请求-->nova-compute执行volume卸载(Generate XML)、initiator断开iscsi连接-->cinder-volume删掉对应volume的target
attach volume流程是:
cinder-api post attach请求-->cinder-volume创建对应volume的target-->nova-compute的initiator连接target、执行挂载(Generate XML)
输入nova volume-detach server-id volume-id
一、cinder-api
1、cinder-api post一个begin_detaching,完成的时间是10:36:17.609,nova-compute显示真正开始detach volume的时间是10:36:17.774,结合日志信息volume updated successfully推断,这个begin_detaching的阶段,仅仅是更新数据库的volume信息。
2、接着cinder-api post一个terminate connection的请求,Terminate volume connection completed successfully的时间是10:36:21.276,观察nova-compute日志,实际断开的时间是10:36:20.514,这说明这个时间是真实的,那么api如何得知真的已经断开连接了呢,这个消息的发送应该和MSG_ID有关。
3、cinder-api post一个detach请求,api最后显示Detach volume completed successfully的时间是10:36:23.942,而最终cinder-volume显示Detach volume completed successfully的时间是10:36:23.928,这说明,api显示的仍是真实的信息,这个信息也是cinder-volume通过MSG_ID通知到cinder-api的。
二、nova-compute
1、nova-compute首先将volume从instance上卸载,实际上就是更新该instance的xml文件,解除该volume与instance的映射关系
2、断开与远程存储节点上iscsi target的连接,上图日志只是打印出要断开target连接的信息,执行的具体操作如下:
2.1将缓存中的数据flush到volume
2.2删除计算节点上对应的scsi设备,也就是/dev/sdb,检查是否/dev/disk/by-path/***-lun-1被删除,/dev/disk/by-path/***-lun-1是/dev/sdb的链接文件。
2.3通过iscsiadm的logout、delete操作断开与iscsi target的连接
三、cinder-volume
1、先验证一个东西:cinder-volume上显示在10:36:21.210时刻,Terminate volume connection completed successfully,这也吻合2.3步骤中,nova-compute断开时间是10:36:20.514。
回到正题:cinder-volume用tgt命令删除那个被export的target,最后detach过程结束。
