问题现象:
在dashboard上删除某些镜像时,提示无法删除。到/var/log/glance下查看日志,会发现有一下报错内容:
409 Conflict: Image 32e599e0-d622-4049-852c-0bcf3550260d could not be deleted because it is in use: The image cannot be deleted because it is in use through the backend store outside of Glance. (HTTP 409)
解决步骤:
1)此时在服务器命令窗口执行以下命令,会找出当前镜像的关联的子对象---卷【87007177-5a8b-4225-abc7-aa1523525d09】
root@controller1:~/root# rbd children images/32e599e0-d622-4049-852c-0bcf3550260d@snap
volumes/volume-87007177-5a8b-4225-abc7-aa1523525d09
2)此时用上边的卷ID可以到dashboar的卷列表页面找到相应的卷,如果确认不再使用,可以在页面删除卷,然后再去删除镜像,即可。
问题原因:
用上边的那个卷ID去数据库查,会发现这个卷是挂载到镜像下面的,而没有挂在某个实例下。那么这个和镜像关联的卷是怎么来的呢?
是因为创建实例时选择的配置问题:
在创建实例时选择了【创建新卷】这时卷是会挂在实例下;
但是又选择了删除实例时【不删除卷】,此时删除实例时,卷就从实例下转到了镜像下。导致无法删除镜像。
综上,起始这并不是OpenStack的低层错误,而是OpenStack为了防止勿删的保护机制。