P2V異事之無法啟動的Linux
之前寫過一個《P2V異事之無法啟動的Windows 2003》,其實當時還遇到了另一個異事,就是同一批遷移的Linux也遇到了無法啟動的怪事。
老祖宗留下的老話真的充滿人生哲理,比如「福無雙至,禍不單行」這句話就非常有道理。當時,我看著那個無法啟動的Linux,就深深體會到這一點。
同一批P2V遷移的Linux虛擬機有兩台,操作系統版本完全一致,只是一台運行了資料庫,姑且稱為A機,另一台運行了tomcat應用,姑且稱為B機。兩台均使用Clonezilla遷移,A機可以順利啟動,B機可以進入Linux引導界面,但是在檢測磁碟那一步出現故障,顯示「waiting for /dev/sda2」就再也無法進行下去了。
由於A、B機使用了完全一樣的操作系統,虛擬機配置也完全一樣,偏偏B機無法檢測到磁碟,這就是咄咄怪事了。
Linux操作系統啟動,往往是BIOS進行系統自檢,然後從啟動盤引導扇區找到Grub或者Lilo,然後進一步引導initrd或者initramfs,最後引導Linux內核啟動。由於B機能夠進入Linux內核載入步驟,所以可以判斷BIOS、Grub的啟動步驟是正常的。那麼問題出在哪裡呢?
由於是在載入Linux過程中發生的故障,現象又是找不到磁碟。那麼會不會是磁碟類型不對呢?後來將IDE類型的虛擬磁碟改為SCSI,或者virtio類型的,均不能解決問題,還是不能順利找到磁碟。
由於A機能夠順利啟動,那麼看看A機的boot目錄下和B機boot目錄下有什麼區別吧。這一比較果然發現了兩台虛擬機的initrd文件大小不一致。看來是B機的initrd文件缺少了IDE虛擬磁碟驅動,導致啟動過程中找不到虛擬磁碟,啟動失敗。
那麼原來物理機上面為什麼能夠順利啟動呢?原來物理機用的是SAS口磁碟,很可能是安裝系統時,未能將IDE驅動包含到initrd中去。而P2V後,虛擬機使用IDE類虛擬磁碟,這一下就hold不住了....
解決方法很簡單,把A機的initrd文件複製到B機的/boot目錄下,重啟B機就ok了。
老話說,「夜路走多了,總會遇到鬼」。我得說,「遇的鬼多了,可以變鍾馗」。P2V操作就是這樣,不管你做過多少P2V操作,總還是會遇到新問題,但實踐經驗多了,遇到新問題時就會更加沉得住氣,總會找到辦法解決。
不亦悅乎?
歡迎關注微信公眾號proxmox~~~
推薦閱讀:
※大牛分享:Linux常用命令都有哪些
※如何入門生信Linux
※Android-x86和Linux的通用內核
※如何在 Linux 中查找文件
※如何選擇Linux伺服器操作系統?
TAG:Linux |