openstack宿主機故障,虛擬例項恢復
阿新 • • 發佈:2020-12-24
前言: 因為機房伺服器執行不穩定的原因導致計算節點掛掉,然後上面的Centos7
虛擬機器在遷移之後開機報錯。這個解決方法同樣適用於其它作業系統的虛擬機器。基於映象建立的虛擬機器例項。
I/O error, can't read device /dev/vda 的報錯資訊
首先做疏散先把虛擬例項從宿主機上面疏散到其它主機,關閉雲主機。1.找到虛擬機器的ID可以通過dashboard介面或者使用openstack server list
命令,找到虛擬機器的ID;然後檢視虛擬機器的詳細資訊。
比如:
nova show 8fa3d2eb-2401-48a9-850a-f800314c6950 # 與這個命令相同功能的命令還有 openstack server show ID
連線到所在的計算節點,例項名稱確定是哪臺主機。
通過ID可以確定該虛擬機器例項的資料目錄,如果openstack沒有對接儲存的話那麼在這個目錄下就會存在資料檔案,因為對接了ceph所以資訊在libvirt.xml
的檔案裡面。
cat /var/lib/nova/instances/8fa3d2eb-2401-48a9-850a-f800314c6950/libvirt.xml
裡面就是它的vda的ID。
2.當找到這個磁碟的ID之後,在ceph叢集裡面去檢視這個裝置
rbd ls volumes | grep 8fa3d2eb-2401-48a9-850a-f800314c6950
3.取消它原來有的一些屬性
# 檢視卷 rbd info volumes/0859147d-27aa-49a5-8373-7c515c4f3a02_disk #取消它原來有的一些屬性 rbd feature disable exclusive-lock object-map fast-diff deep-flatten --image 8fa3d2eb-2401-48a9-850a-f800314c6950_disk -p volumes
4.把它對映到本地
rbd map 8fa3d2eb-2401-48a9-850a-f800314c6950_disk -p volumes
# 如果對映不了執行下這個命令。
rbd flatten volumes/8fa3d2eb-2401-48a9-850a-f800314c6950_disk
5.使用命令修復
# 有的可能修復不了就只能做好丟失資料的準備了
xfs_repair -L /dev/rbd0p1
可以ls /dev/rbd* 檢視一下,rbd0p1表示的事一個啟動分割槽。
6.取消對映
rbd unmap 8fa3d2eb-2401-48a9-850a-f800314c6950_disk -p volumes
這個時候再重新啟動就正常了。