技術(shù)員聯(lián)盟提供win764位系統(tǒng)下載,win10,win7,xp,裝機(jī)純凈版,64位旗艦版,綠色軟件,免費(fèi)軟件下載基地!

當(dāng)前位置:主頁 > 教程 > 服務(wù)器類 >

Hyper-V下的Linux虛擬機(jī)網(wǎng)卡丟失

來源:技術(shù)員聯(lián)盟┆發(fā)布時(shí)間:2019-03-22 12:12┆點(diǎn)擊:

  Hyper-V下的Linux虛擬機(jī)網(wǎng)卡丟失問題原因及解決辦法

  虛擬化大勢(shì)所趨

  公司推行了虛擬化,全部用的是Microsoft Windows 2008 R2 Enterprise with Hyper-V做集群跑Hyper-V虛擬機(jī)。這是個(gè)好東西,節(jié)約資源,集中管理,省電,部署超快,關(guān)鍵是可以實(shí)時(shí)遷移。

  我們使用Dell MD3000i盤柜做集群的共享磁盤,它是基于iSCSI的千兆以太網(wǎng)網(wǎng)絡(luò)存儲(chǔ),一坨Dell PowerEdge R610服務(wù)器做了一個(gè)Windows Cluster,交換設(shè)備是juniper EX22000-48t-4G全千兆交換機(jī),并開啟了巨幀支持。

  眾所周知,微軟的Hyper-V對(duì)于自家的windows虛擬機(jī)支持很好的,而且還有專門的驅(qū)動(dòng)程序。即使這樣linux我們也跑了好多臺(tái)虛擬機(jī),主要是因?yàn)閣indows的Hyper-V便宜,比ESX實(shí)惠。

  下面來說一說Linux虛擬機(jī)與Hyper-V的一些尷尬事兒

  1. 網(wǎng)卡要選老的,驅(qū)動(dòng)剛剛發(fā)布

  在Hyper-V上開Linux虛擬機(jī)最致命的一點(diǎn)就是網(wǎng)卡驅(qū)動(dòng),我們創(chuàng)建一個(gè)新的linux虛擬機(jī)的時(shí)候,轉(zhuǎn)好了linux系統(tǒng)之后發(fā)現(xiàn)網(wǎng)卡不能用,因?yàn)椴还苁荝HEL還是Ubuntu還是大便的Linux系統(tǒng)都不支持Hyper-V的網(wǎng)卡驅(qū)動(dòng)。這需要我們?cè)贖yper-V Manager把掛載給Linux虛擬機(jī)的network Adapter網(wǎng)卡刪除,然后添加一塊Legacy Network Adapter,這種網(wǎng)卡可以模擬成經(jīng)典的老式網(wǎng)卡,Linux一般都集成這種網(wǎng)卡的驅(qū)動(dòng),裝好了網(wǎng)絡(luò)就可以用了。

  好消息是微軟8月剛發(fā)布了可以支持RHEL和Ubuntu的Hyper-V下的虛擬機(jī)驅(qū)動(dòng),需要的朋友可以網(wǎng)上google一下,只有幾百K,很小的。

  2. 神吶~我的網(wǎng)卡呢?

  做了集群,那么遷移就是不可不免得,有時(shí)候我們某一臺(tái)服務(wù)器需要重啟維護(hù)一下,需要把跑在它身上的虛擬機(jī)實(shí)時(shí)遷移到其他服務(wù)器上面去,遷移很順利,但是發(fā)現(xiàn)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),改了一下interfaces文件

  sudo vi /etc/network/interfaces

  把eth0替換成eth1,然后重啟網(wǎng)絡(luò)服務(wù)

  sudo /etc/init.d/networking restart

  哈哈,網(wǎng)卡好啦~~

  3. 又悲劇了

  再后來,有一臺(tái)ubuntu 9.10 64位版本遷移后,這招不好使了,因?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新建一個(gè)虛擬機(jī)默認(rèn)分配的網(wǎng)卡MAC地址是動(dòng)態(tài)的,每次宿主的遷移會(huì)導(dǎo)致重新分配新的MAC給ubuntu,然后丫就找不到eth0了,有時(shí)候會(huì)自動(dòng)生成一個(gè)eth1。如果你能記得以前的MAC地址,在Hyper-V Manager上手動(dòng)把MAC指定成遷移之前的老MAC也能解決問題,但問題是誰他媽會(huì)記MAC地址啊~~~?

  所以啊~~清空ubuntu的網(wǎng)絡(luò)配置緩存文件才是王道,或者在Hyper-V Manager上把分配給Linux的MAC地址設(shè)為靜態(tài)的。

  Hyper-V下安裝Linux虛擬機(jī)注意事項(xiàng)

  1. 創(chuàng)建虛擬機(jī)時(shí)先別急著裝系統(tǒng),把網(wǎng)卡替換成Legacy Network Adapter

  2. 網(wǎng)卡MAC地址別用動(dòng)態(tài)的,指定成靜態(tài)的

  3. 微軟剛出了新的Hyper-V下的linux驅(qū)動(dòng),趕緊安裝

  4. 網(wǎng)卡丟失后ifconfig -a看看是不是eth0沒了,多出來了eth1,然后改interfaces配置

  5. 終極大法就是刪除linux網(wǎng)絡(luò)配置緩存sudo rm /etc/udev/rules.d/70-persistent-net.rules