線上vhd image恢復

昨天發佈,今天早上來公司,發現線上有臺vm鏡像損壞,vhd-util check -n xxx 之後,報錯“failed to get batmap header

 

正好前段時間研究tapdisk2的時候,順便看了vhd的文件格式,及一些元數據處理函數。

 

在libvhd.c裏面加了一些調試信息,定位到checksum不對。心中暗喜,還好不是數據丟了,只是batmap的問題

 

解決辦法就是把block的bitmap和batmap,對比,檢查哪個batmap沒更新

 

由於代碼很久沒碰了,生疏了,花了一下午時間,才搞定了,最後代碼分析的結果是batmap和bitmap完全對應

 

看來就是在最後回寫到文件的時候,batmap header,沒有成功,導致裏面的checksum沒更新成功。

 

把最新的checksum更新到文件中,vhd-util check -n xxx後,得到“xxx is valid”

 

哎,一下午的時間就折騰這個小破文件了,我勒個去啊。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章