Hyper-V下Linux虛擬機(jī)網(wǎng)卡丟失的原因及解決方案
虛擬化的總體趨勢
該公司已經(jīng)實(shí)施了虛擬化,所有這些都使用Microsoft Windows 2008 R2企業(yè)版和Hyper-V作為集群來運(yùn)行Hyper-V虛擬機(jī)。這是好事。它可以節(jié)省資源、集中管理、節(jié)省電力、快速部署。關(guān)鍵是可以實(shí)時(shí)遷移。
我們使用戴爾MD3000i盤柜作為集群的共享磁盤,該集群基于iSCSI千兆以太網(wǎng)網(wǎng)絡(luò)存儲(chǔ)。一堆Dell PowerEdge R610服務(wù)器作為Windows集群,交換設(shè)備為juniper EX22000-48t-4G全千兆交換機(jī),開啟了巨型幀支持。
眾所周知,微軟Hyper-V非常支持自己的windows虛擬機(jī),有專門的驅(qū)動(dòng)。即使使用linux,我們也運(yùn)行許多虛擬機(jī),主要是因?yàn)閣indows的Hyper-V比ESX便宜。
先說說Linux虛擬機(jī)和Hyper-V的一些尷尬事。
1.選擇舊網(wǎng)卡,驅(qū)動(dòng)剛剛發(fā)布。
在Hyper-V上打開linux虛擬機(jī)最致命的就是網(wǎng)卡驅(qū)動(dòng)。當(dāng)我們創(chuàng)建一個(gè)新的linux虛擬機(jī)的時(shí)候,我們發(fā)現(xiàn)把Linux系統(tǒng)轉(zhuǎn)過來之后網(wǎng)卡就不能用了,因?yàn)闊o論是RHEL還是ubuntu還是狗屁Linux系統(tǒng)都不支持Hyper-V的網(wǎng)卡驅(qū)動(dòng)。這就需要我們在Hyper-V Manager中刪除Linux虛擬機(jī)上掛載的網(wǎng)卡,然后添加一個(gè)遺留的網(wǎng)卡,可以模擬成經(jīng)典的老式網(wǎng)卡。Linux一般集成了這個(gè)網(wǎng)卡的驅(qū)動(dòng),安裝網(wǎng)絡(luò)后就可以使用了。
好消息是,微軟剛剛在8月份發(fā)布了Hyper-V下的虛擬機(jī)驅(qū)動(dòng)程序,可以支持RHEL和Ubuntu。需要的話可以在網(wǎng)上谷歌一下。才幾百K,很小了。
2.圣牛~我的網(wǎng)卡呢?
集群化之后,遷移是不可避免的。有時(shí)候我們的一臺(tái)服務(wù)器需要重啟維護(hù),運(yùn)行在上面的虛擬機(jī)需要實(shí)時(shí)遷移到其他服務(wù)器上。遷移很順利,但是Linux系統(tǒng)遷移后找不到網(wǎng)卡,ifconfig只能看到一個(gè)lo的本地環(huán)回網(wǎng)卡。eth0去哪了?
快速查看網(wǎng)絡(luò)配置,sudo vi /etc/network/interfaces,發(fā)現(xiàn)配置都在。為什么eth0不見了?
用ifconfig -a檢查所有網(wǎng)卡,發(fā)現(xiàn)eth0沒了,eth1多了。我靈機(jī)一動(dòng),修改了接口文件
sudo VI/etc/網(wǎng)絡(luò)/接口
用eth1替換eth0,然后重新啟動(dòng)網(wǎng)絡(luò)服務(wù)。
sudo/etc/init . d/網(wǎng)絡(luò)重啟
哈哈,網(wǎng)卡準(zhǔn)備好了~ ~
3.又悲劇了。
然后,一個(gè)64位版本的ubuntu 9.10遷移后,這一招就不管用了,因?yàn)閑th1也沒找到。后來手動(dòng)刪除了Ubuntu的網(wǎng)絡(luò)配置文件,重啟后就沒事了。
sudo RM/etc/udev/rules . d/70-persistent-net . rules
總結(jié)了一下,linux的網(wǎng)卡之所以會(huì)丟失,是因?yàn)镠yper-V在創(chuàng)建新的虛擬機(jī)時(shí),默認(rèn)分配的網(wǎng)卡mac地址是動(dòng)態(tài)的。每次主機(jī)遷移,新的MAC都會(huì)重新分配到ubuntu,然后你就找不到eth0了,有時(shí)候還會(huì)自動(dòng)生成一個(gè)eth1。如果能記住之前的MAC地址,在Hyper-V Manager上遷移前手動(dòng)指定MAC為舊MAC也能解決問題,但問題是誰他媽的能記住MAC地址~ ~ ~?
啊~ ~清除ubuntu的網(wǎng)絡(luò)配置緩存文件,或者在Hyper-V Manager上將分配給Linux的MAC地址設(shè)置為靜態(tài)才是王道。
Hyper-V下安裝Linux虛擬機(jī)的注意事項(xiàng)
1.在創(chuàng)建虛擬機(jī)的時(shí)候,不用擔(dān)心打扮系統(tǒng),用舊版網(wǎng)卡替換網(wǎng)卡。
2.不要使用網(wǎng)卡的動(dòng)態(tài)MAC地址,指定為靜態(tài)。
3.微軟剛剛在Hyper-V下發(fā)布了新的linux驅(qū)動(dòng),趕緊安裝吧。
4.網(wǎng)卡丟失后,ifconfig -a將查看eth0是否消失,eth1是否退出,然后更改接口配置。
5.最終的解決方案是刪除linux網(wǎng)絡(luò)配置緩存sudor um/etc/udev/rules . d/70-persistent-net . rules。