今天讨论 cinder 如何删除 volume 。
状态为 Available 的 volume 才能够被 delete。如果 volume 当前已经 attach 到 instance,需要先 detach 后才能 delete。
Delete操作实现比较简单,流程图如下:
-
向 cinder-api 发送 delete 请求
-
cinder-api 发送消息
-
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,方法为 delete。
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 操作。