Hyper-V下的Linux虚拟机网卡丢失

   Hyper-V下的Linux虚拟机网卡丢失问题原因及解决办法

  虚拟化大势所趋

  公司推行了虚拟化,全部用的是Microsoft Windows 2008 R2 Enterprise with Hyper-V做集群跑Hyper-V虚拟机。这是个好东西,节约资源,集中管理,省电,部署超快,关键是可以实时迁移。

  我们使用Dell MD3000i盘柜做集群的共享磁盘,它是基于iSCSI的千兆以太网网络存储,一坨Dell PowerEdge R610服务器做了一个Windows Cluster,交换设备是juniper EX22000-48t-4G全千兆交换机,并开启了巨帧支持。

  众所周知,微软的Hyper-V对于自家的windows虚拟机支持很好的,而且还有专门的驱动程序。即使这样linux我们也跑了好多台虚拟机,主要是因为windows的Hyper-V便宜,比ESX实惠。

  下面来说一说Linux虚拟机与Hyper-V的一些尴尬事儿

  1. 网卡要选老的,驱动刚刚发布

  在Hyper-V上开Linux虚拟机最致命的一点就是网卡驱动,我们创建一个新的linux虚拟机的时候,转好了linux系统之后发现网卡不能用,因为不管是RHEL还是Ubuntu还是大便的Linux系统都不支持Hyper-V的网卡驱动。这需要我们在Hyper-V Manager把挂载给Linux虚拟机的network Adapter网卡删除,然后添加一块Legacy Network Adapter,这种网卡可以模拟成经典的老式网卡,Linux一般都集成这种网卡的驱动,装好了网络就可以用了。

  好消息是微软8月刚发布了可以支持RHEL和Ubuntu的Hyper-V下的虚拟机驱动,需要的朋友可以网上google一下,只有几百K,很小的。

  2. 神呐~我的网卡呢?

  做了集群,那么迁移就是不可不免得,有时候我们某一台服务器需要重启维护一下,需要把跑在它身上的虚拟机实时迁移到其他服务器上面去,迁移很顺利,但是发现Linux系统迁移后,网卡找不到了,ifconfig只能看到一个lo的本地回环网卡,eth0跑哪儿去了?

  赶紧查看网络配置,sudo vi /etc/network/interfaces,发现配置都在,那是为啥eth0没了呢?

  使用ifconfig -a 来查看所有网卡,发现eth0没了,却多出来了eth1。灵机一动,改了一下interfaces文件

  sudo vi /etc/network/interfaces

  把eth0替换成eth1,然后重启网络服务

  sudo /etc/init.d/networking restart

  哈哈,网卡好啦~~

  3. 又悲剧了

  再后来,有一台ubuntu 9.10 64位版本迁移后,这招不好使了,因为eth1也没找到,后来手动删除了ubuntu的网络配置文件后重启,就好了。

  sudo rm /etc/udev/rules.d/70-persistent-net.rules

  之后总结了一下,linux之所以网卡会丢失是因为Hyper-V新建一个虚拟机默认分配的网卡MAC地址是动态的,每次宿主的迁移会导致重新分配新的MAC给ubuntu,然后丫就找不到eth0了,有时候会自动生成一个eth1。如果你能记得以前的MAC地址,在Hyper-V Manager上手动把MAC指定成迁移之前的老MAC也能解决问题,但问题是谁他妈会记MAC地址啊~~~?

  所以啊~~清空ubuntu的网络配置缓存文件才是王道,或者在Hyper-V Manager上把分配给Linux的MAC地址设为静态的。

  Hyper-V下安装Linux虚拟机注意事项

  1. 创建虚拟机时先别急着装系统,把网卡替换成Legacy Network Adapter

  2. 网卡MAC地址别用动态的,指定成静态的

  3. 微软刚出了新的Hyper-V下的linux驱动,赶紧安装

  4. 网卡丢失后ifconfig -a看看是不是eth0没了,多出来了eth1,然后改interfaces配置

  5. 终极大法就是删除linux网络配置缓存sudo rm /etc/udev/rules.d/70-persistent-net.rules

时间: 2024-08-27 18:07:30

Hyper-V下的Linux虚拟机网卡丢失的相关文章

网络编程-window下Linux虚拟机的网卡操作

问题描述 window下Linux虚拟机的网卡操作 在window系统下安装Linux虚拟机,在进行网络操作时,是使用Linux内核的TCP/IP协议栈直接发包,还是需要通过虚拟机程序转到window内核,通过window的TCP/IP协议栈发包呢?求大神指导.

windows server 2012 中的Hyper V

问题描述 windows server 2012 中的Hyper V windows server 2012 中的Hyper V,断电时虚拟机无故启动不了.怎么解决呢? 解决方案 这个不好说,虚拟机相当于一个独立的计算机,任何软件故障都可能导致无法启动. 重新做一个虚拟机,不安装别的软件看看是否正常. 解决方案二: 问题是没有安装任何软件,是做域控用的.很多时候,断电或者按开机键开机就会无故启动不了.有域账号在,重装严重呀.谢谢你的回答. 解决方案三: 断点可能造成系统损坏了.需要repaire

如何优化VMware Linux虚拟机的性能?

目前有很多方法可以改善VMware Linux虚拟机的性能,包括对虚拟硬件进行调整,以及更改默认的软件配置设置. 虽然在VMware管理程序上安装Linux虚拟机很容易,但是默认的.开箱即用的配置并不能充分发挥虚拟机的潜在的最大性能.不过,有一些办法可以对其进行优化. 虚拟硬件 首要需要考虑的是虚拟硬件.VMware产品的每一个新版本都带来了新的虚拟硬件版本,你应该尽可能使用最新的硬件版本,因为和大多数OS一样,补丁和性能改进是增量地添加的. 半虚拟化硬件 半虚拟化硬件本质上是一个硬件的软件实现

启动-Linux下查看 vmware 虚拟机版本

问题描述 Linux下查看 vmware 虚拟机版本 怎么在Linux 下查看 vmware 虚拟机版本?怎么启动?怎样知道虚拟机在哪个目录下? 解决方案 rpm -qa|grep VM 解决方案二: vmware-toolbox-cmd -v

将windows下的文件夹挂载到linux虚拟机下

  如何将windows下的文件夹挂载到linux虚拟机下 这里的挂载,指的是linux虚拟机可以访问windows系统的指定文件夹,http://包括读写. 以下挂载方式,需要安装VMware Tools.安装VMware Tools,右键点击你要启动的linux虚拟机,会弹出一个右键菜单,在其中会有一个install VMware Tools.点击该选项,则在linux系统中会打开一个目录,该目录下有一个VMware Tools安装包的压缩文件.解压缩该文件,会发现里面有一个vmware-i

linux cygbin 命令-Linux下的cygwin虚拟机

问题描述 Linux下的cygwin虚拟机 怎样用 Linux 操作系统命令在Cygwin虚拟机下,搜索找到 Python 版本的"File transfer Protocol"的基版本的 RCF 号,以及作者姓名.跪求命令步骤,谢谢!!!

linux-32位windows操作系统下可以装64位Linux虚拟机吗?

问题描述 32位windows操作系统下可以装64位Linux虚拟机吗? 10C 最近在学Hadoop,然后很多教程上都是64位的,但是我的电脑是32位的,那我能装一个64位的Linux虚拟机,然后再在Linux虚拟机里装Hadoop64位的吗??(无论答案是"yes"or ""no "" 答案中如果能说明原由,那便是极好的~~~) 解决方案 100%不行,64位主机才支持64位虚拟机,同时也支持32位虚拟机,反过来不行.(bochs qemu之

虚拟机-windows下操作linux的软件

问题描述 windows下操作linux的软件 20C 我是一个刚刚实习的码农.公司要求使用linux,我用的vmware,装了一个ubuntu14.04.由于公司给配置的电脑内存小,虚拟机运行起来,加上有的时候内外一起操作导致整个电脑就要爆炸了.于是,我想了个办法,利用ssh和putty实现了在windows下操作linux的终端.但是这编程用的软件是Sublime text2,我只能使用终端,接下来还要使用chrome,这要是还要到虚拟机里去操作的话那还是一个字卡.我听我的menager讲,

virtualbox-kali linux虚拟机下字符间距很奇怪 要怎么改

问题描述 kali linux虚拟机下字符间距很奇怪 要怎么改 virtualbox虚拟机 kali linux 这个样子看着好难受啊!! 解决方案 字体的问题,换个字体看下.