码迷,mamicode.com
首页 > 数据库 > 详细

云硬盘error、error deleting、deleting状态(数据库基本操作小记)

时间:2016-07-06 21:28:21      阅读:392      评论:0      收藏:0      [点我收藏+]

标签:

起因是发现云硬盘显示删光了,但还是创建不了新的云硬盘,在api节点上用cinder list可以看到已经没有硬盘了,但是创建硬盘时,还是会提示配额满了,这是因为数据库里的记录没有更新,对数据库的操作记录如下,以便以后参考:

 

登录50数据库节点(需要登录主节点,可以在mysql数据库中输入show master status;或者show slave status;来查看,比如show master status;这个命令,如果返回了一个表,那么证明就是主了。目前L版中50、51、52都是主。)

手动修改数据库,标识其为已删除状态(通常不直接删除记录),需要修改cinder数据库的volumes表,修改deleted字段为1(整型的1,不是字符串),status字段修改为"deleted",deleted_at可修改为"now()",也可以不修改。

update volumes set deleted=1 where id = "xxx";

 

通过show databases;列出所有数据库;

通过use cinder;进入cinder的数据库;

通过show tables;列出所有表格;

通过select * from quota_usages;从该quota_usages表格中列出所有内容;

update quota_usages set in_use=0 where project_id="xxx" and resource="xxx";

注意更新信息的时候先更新子项的数据再更新父项的数据,如:

先volumes_ssd\volumes_sata,再volumes

 

 

 

 

如需更多细节了解,可参见(以下内容引用他人文章内容):

很多原因可能导致volume 进入error或者error_deleting状态,此时无法再执行delete操作。这种情况大体分为两类:

1.当执行cinder delete时,cinder连接不到ceph mon,导致删除失败。此时我们使用rbd命令能够找到cinder volume对应的image:

 

rbd ls -p openstack-00 | grep volume_id

如果存在记录,则说明可能属于此种情况,此时处理流程比较简单,我们只要reset-state然后再执行即可:

cinder reset-state volume_id
cinder delete volume_id

如果还是删除失败,检查下是不是cinder-volume跑了多个实例,比如41节点跑了,42节点也有,则会删除失败,这个问题我们也遇到过,只要把多余cinder-volume实例中止即可,然后重复以上步骤。

2.当执行cinder delete时,cinder连接不到数据库,此时由于没有事务同步,导致ceph已经删除对应的image,但没有同步状态到数据库中,此时volume可能处于available或者deleting状态,如果再次执行delete操作,显然cinder已经找不到对应的image,所以会抛出错误异常,此时cinder volume会把它设为error_deleting状态,并且无法通过reset-state删除。通过以下脚本,验证是否属于该类故障:

rbd ls -p openstack-00 | grep volume_id

如果匹配不到该volume id,则判定属于该类故障。

此类故障无法通过cinder 命令行工具处理,只能手动修改数据库,标识其为已删除状态(通常不直接删除记录),需要修改cinder数据库的volumes表,修改deleted字段为1(整型的1,不是字符串),status字段修改为"deleted",deleted_at可修改为"now()",也可以不修改。

update volumes set deleted=1 where id = "xxx";

 

云硬盘error、error deleting、deleting状态(数据库基本操作小记)

标签:

原文地址:http://www.cnblogs.com/jackiebear/p/5647982.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!