出現IO錯誤。重啟虛擬機表示磁盤錯誤,用命令“fsck / -y”修復磁盤錯誤。這種情況出現過幾次,有時修復磁盤之後可以繼續啟動,後來干脆就無法啟動了。
重新安裝虛擬機並checkout代碼,也很容易出現這個問題。宿主系統運行任務比較多,系統比較慢。有一次svn checkout出錯,在宿主系統(Ubuntu)用iotop看進程IO狀況,發現updatedb.mlocate寫入速度很大,達到10M/s以上。
這個頁面解析了原因:High I/O causing filesystem corruption
當宿主系統和虛擬機的IO都比較繁忙時,虛擬機的IO請求得不到及時的響應。虛擬機Linux不知道自己運行在虛擬機裡面,會認為是磁盤IO錯誤,為了保護磁盤數據會remount分區為只讀。
解決方法見上面的鏈接,不過都比較高級(使用直接IO、修改內核參數、使用LVM分區等)。
簡單解決辦法:
1) 不要在宿主系統和虛擬機同時運行高IO任務(別以為你的i7電腦很厲害);
2) 備份虛擬機(復制vmdk文件或使用VirtualBox快照),就算出錯了也容易恢復。