CloudMan 阅读(303) 评论(0)

今天讨论 cinder 如何删除 volume 。

状态为 Available 的 volume 才能够被 delete。如果 volume 当前已经 attach 到 instance,需要先 detach 后才能 delete。

Delete操作实现比较简单,流程图如下:

image413.png

  1. 向 cinder-api 发送 delete 请求

  2. cinder-api 发送消息

  3. cinder-volume 执行 delete 操作

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

向 cinder-api 发送 delete 请求

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

这里我们将 delete volume “vol-2”

进入 GUI 操作菜单 Project -> Compute -> Volumes。

选择volume “vol-2”,点击“Delete Volume”。

再次确认。

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

cinder-api 发送消息

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

cinder-volume delete volume

cinder-volume 执行 lvremove 命令 delete volume。 日志为 /opt/stack/logs/c-vol.log。

这里比较有意思的是:cinder-volume 执行的是“安全”删除。 所谓“安全”实际上就是将 volume 中的数据抹掉,LVM driver 使用的是 dd 操作将 LV 的数据清零。日志如下:

然后删除 LV。

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