# 處理報錯的大致思路
(1)到數據庫cinder表中找到volumes,將其中對應要刪除的卷的狀態由error_deleting改為deleted;
(2)針對lvm,可以用命令lvdisplay列出所有卷的信息,如果現在應用命令lvremove來刪除相應的卷,則會提示要刪除的卷正在使用中,所以我們使用命令lsof查看相應卷所占用的進程,然后kill這個進程;
(3)應用命令lvremove來刪除相應的卷;
(4)此時問題貌似已經解決,因為已經可以正確地執行cinder中命令,要刪除的卷的記錄也已經刪除。但是這里還有個問題,默認的建立卷的最大數目為10,如果之前刪除的僵尸卷的數目為1,但是此時當你建立卷的數目為9個時,再嘗試建立新卷時,就會提示已經達到卷的數目的最大值。解決方法就是到cinder數據表中找到quota_usages,將其中in_use中的數據減少相應的刪除的僵尸卷的數目即可。
備注:fuser命令在psmisc包中
# 第一種情況的僵尸卷




執行完上面的操作后進入云平臺系統,更改需要刪除云硬盤狀態為“可用配額”,然后“刪除云硬盤”,如果再界面上刪除依舊沒有執行成功或者依舊一直再刪除中,就采用比較暴力的方式,修改云硬盤再數據庫中的狀態,因為此時云硬盤再存儲設備(物理機)上已經刪除了,僅僅還有數據庫中還有該記錄信息,但不能直接刪除這條記錄,數據庫有外鍵依賴,而是要把cinder盤的deleted改成“1”,“1”即為刪除,0為不刪除。
進入數據庫:
mysql -uxxxx -pxxxx
選擇數據庫表:
use cinder;
關閉數據庫的鍵外查詢:
set foreign_key_checks=0;
select找到出錯的數據:
select id, status, display_name from volumes where id="af3e36ce-10ab-4daa-80e3-b71f16836a3b"
修改數據庫記錄狀體:
update volumes set deleted=1 where id="af3e36ce-10ab-4daa-80e3-b71f16836a3b"
操作完成后開啟數據庫的鍵外查詢:
set foreign_key_checks=0;
此時如果dashboard界面卷存儲還沒有恢復正常就需要進行如下操作!!!
(1)use cinder;
(2)select * from volumes;

在刪除數據條目之前要臨時關閉鍵值檢查,否則刪除操作無法進行:set foreign_key_checks=0;
刪除操作完成后再運行此命令開啟鍵值檢查,確保數據庫安全
找到之前出問題的卷并刪除條目信息:
delete from volumes where id='f0a030a6-7ff0-4765-ac47-1f1eed3c7582';

然后把in_use的數值修改為0即可
這里我就很暴力了直接刪除了了條目:
delete from quota_usages where project_id='232b14de024647159470ed97873ce774';
等下新建卷的時候就會恢復的,不建議這么做哦。
# 第二種情況的僵尸卷
思路和第一中情況差不多;
(1)通過lvdisplay |grep查詢cinder對應的卷地址。
root@compute:~# lvdisplay | grep "8580f464-02e1-411c-bd94-a4af35e499a3"
LV Path /dev/cinder-volumes/volume-8580f464-02e1-411c-bd94-a4af35e499a3
LV Name volume-8580f464-02e1-411c-bd94-a4af35e499a3
(2)通過lsof | grep查詢占用cinder卷的端口
lsof| grep "8580f464-02e1-411c-bd94-a4af35e499a3"
kill -9 76568
(3)通過lvremove刪除相應的卷
lvremove /dev/cinder-volumes/volume-8580f464-02e1-411c-bd94-a4af35e499a3
(4)報錯處理
報錯:device-mapper: remove ioctl on failed: Deviceor resource busy。設備繁忙
查看是否被打開:
dmsetup info -c /dev/cinder-volumes/volume-8580f464-02e1-411c-bd94-a4af35e499a3 #查看是否被打開,如果看到open為4或者數字說明它被打開了,所以remove不掉。
查看被誰打開:
fuser -m /dev/cinder-volumes/volume-8580f464-02e1-411c-bd94-a4af35e499a3 #查看是誰打開的,顯示產用進程號
把占用設備的進程殺掉:
kill -9 xxxx xxxx xxxx xxxx
重新執行上面驗證的幾個步驟,驗證是否還有進程占用,如果看到open為0,表示現在沒有進程占用,再執行lvremove刪除相應的卷
(5)驗證是否已經刪除
root@compute:~# lvdisplay | grep "8580f464-02e1-411c-bd94-a4af35e499a3"
(6)進入云平臺系統,更改需要刪除云硬盤狀態為“可用配額”,然后“刪除云硬盤”,如果再界面上刪除依舊沒有執行成功或者依舊一直再刪除中,就采用比較暴力的方式,修改云硬盤再數據庫中的狀態,因為此時云硬盤再存儲設備(物理機)上已經刪除了,僅僅還有數據庫中還有該記錄信息,但不能直接刪除這條記錄,數據庫有外鍵依賴,而是要把cinder盤的deleted改成“1”,“1”即為刪除,0為不刪除。
進入數據庫:
mysql -uxxxx -pxxxx
選擇數據庫表
use cinder;
select找到出錯的數據:
select id, status, display_name from volumes where id='2d5d206d-0720-42aa-b178-3f3238177583';
修改數據庫記錄狀體:
update volumes set deleted=1 where id='2d5d206d-0720-42aa-b178-3f3238177583';
- 獻給我的朋友們
- 一、個人對學習的看法
- 二、運維技能圖譜
- 三、運維常用技能
- 3.1 Vim(最好用的編輯器)
- 3.2 Nginx & Tengine(Web服務)
- 1. Nginx介紹和部署
- 2. Nginx配置解析
- 3. Nginx常用模塊
- 4. Nginx 的session 一致性問題
- 3.3 Tomcat(Web中間件)
- 3.4 Keepalived(負載均衡高可用)
- 3.5 Memcache(分布式緩存)
- 3.6 Zookeeper(分布式協調系統)
- 3.7 KVM(開源虛擬化)
- 1. 虛擬化介紹
- 2. KVM基礎
- 3. 設置VNC和時間同步
- 4. kvm虛擬機快照備份
- 5. kvm虛擬機在線擴展磁盤
- 6. kvm虛擬機靜態遷移
- 7. kvm虛擬機動態遷移
- 8. kvm虛擬機存儲池配置
- 9. cpu添加虛擬化功能
- 3.8 GitLab(版本控制)
- 3.8.1 GitLab安裝與漢化
- 3.9 Jenkins(運維自動化)
- 3.10 WAF(Web防火墻)
- 3.10.1初探WAF
- 四、常用數據庫
- 4.1 MySQL(關系型數據庫)
- 1. MySQL源碼安裝
- 4.2 Mongodb(適用與大數據分析的數據庫)
- 4.3 Redis(非關系數據庫)
- 五、自動化運維工具
- 5.1 Cobbler(系統自動化部署)
- 5.2 Ansible(自動化部署)
- 5.3 Puppet(自動化部署)
- 5.4 SaltStack(自動化運維)
- 六、存儲
- 6.1 GFS(文件型存儲)
- 6.2 Ceph(后端存儲)
- 七、運維監控工具
- 7.1 對監控的理解
- 7.2 Zabbix(運維監控)
- 7.2.1 Zabbix簡介
- 7.2.2 Zabbix服務部署
- 1. Zabbix服務端部署
- 2. Zabbix客服端部署
- 3. 配置前端展示
- 4. zabbix告警配置
- 7.2.3 Zabbix監控服務
- 1. 監控網絡設備
- 2. 自定義Nginx監控
- 7.3 云鏡(安全監控)
- 7.4 ELK(日志收集展示)
- 八、運維云平臺
- 8.1 OpenStack(開源云操作系統)
- 8.1.1 OpenStack簡介
- 8.1.2 實驗架構設計
- 8.1.3 集群環境準備
- 8.1.4 controller節點部署
- 1. 安裝Mariadb Galera Cluster集群
- 2. 安裝RabbitMQ Cluster集群
- 3. 安裝Pacemaker
- 4. 安裝HAProxy
- 5. 安裝配置Keystone
- 6. 安裝配置glance
- 1. 制作鏡像模板
- 7. 安裝配置nova
- 8. 安裝配置neutron
- 1. 配置虛擬機網絡
- 9. 安裝Dashboard
- 10. 安裝配置cinder
- 8.1.5 compute節點部署
- 1. 安裝相關軟件包
- 2. 安裝Neutron
- 3. 配置cinder
- 4. 創建第一個虛擬機
- 8.1.6 OpenStack報錯處理
- 1. cinder僵尸卷刪除
- 8.1.7 快速孵化虛擬機方案
- 8.1.8 Kolla容器化部署OpenStack
- 1. 單點部署
- 2. 多節點部署
- 8.2 Tstack(騰訊云平臺)
- 8.3 K8s(微服務容器化)
- 九、運維編程技能
- 9.1 Shell(運維必會語言)
- 9.2 Python(萬能的膠水語言)
- 十、Devops運維
- 10.1 理念
- 10.2 Devops實戰