openstack宿主機故障,虛擬實例恢復


前言: 因為機房服務器運行不穩定的原因導致計算節點掛掉,然后上面的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

#取消它原來有的一些屬性;根據ceph的提示操作,因為有的屬性linux不支持。
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

這個時候再重新啟動就正常了。
感謝網上上傳資料分享的博客,我搜集並處理了故障,終結了出來,希望更多的人看到早日跳出坑!


免責聲明!

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



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