记录下曾经趟过的坑,下次不再会掉进去了

 

故障简要描述:一台正常工作的centos 6.7 VM 跑在一台Hyper-v 2012 R2 的Host上,网络原来是正常的,为了解决和测试存储方面的问题,我使用live migarate 功能把虚拟机从原来的HOSTA移动到了host B 上面,结果网络连不上了,登上console看了下,ifconfig 只显示lo设备。

 

初步怀疑是网卡MAC地址变了,从SCVMM窗口看虚拟机MAC地址,还是原来的地址(实实在在的坑啊),就是这里导致我花了好多时间。为什么没有eth0设备呢? dmesg|grep eth , dmesg|grep net 都没有结果,好吧,我们看看UDEV的rule 有没有问题?

Centos 6 VM on Hyper-v network lost (eth0 disapear)_第1张图片

 

Centos 6 VM on Hyper-v network lost (eth0 disapear)_第2张图片

 

竟然多了一条net的规则,应该是网卡MAC地址变了,这里虽然有eth1设备,但是没有eth1的配置文件,所以也看不到eth1么?

 

重新再确认下VM的MAC地址,这次我不使用SCVMM了,我直接用hyper-v 命令来查。

 

PS C:\> Get-VMNetworkAdapter -ComputerName hv-svr27 -VMName ars|ft vmname,macaddress

VMName MacAddress

------ ----------

ARS 00155D84AA06

还真是MAC地址变了,关闭VM,把最初的MAC地址设置成静态的,然后启动VM,网络问题解决,另外这里给一个快速应用UDEV 规则的方法(不用重启机器,但是像你MAC地址变的情况,还只能重启机器了)

 

udevadm trigger

Centos 6 VM on Hyper-v network lost (eth0 disapear)_第3张图片

 

最后说一句,微软的linux VM 在hyper-v 上的最佳实践就包括这一条,请把VM的网卡MAC地址设置为静态地址,不躺过坑不知道问题严重程度啊