雲硬盤error、error deleting、deleting狀態(數據庫基本操作小記)


起因是發現雲硬盤顯示刪光了,但還是創建不了新的雲硬盤,在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" ;

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM