Hyper-v MAC地址池
Hyper-v上运行的虚拟机,我们一般都会去给它绑定网络,分配网卡,不管它的网络类型是外部 内部 还是专用了,网络还是硬需求。这里我们就要去讨论一下,虚拟机网卡的MAC地址的问题。默认情况下,当你安装完成Hyper-v角色以后,Hyper-v就准备好了256个MAC地址以供虚拟机使用,这256个MAC地址,也就是MAC地址池了。
MAC地址的构成
我们知道,一个MAC地址由12位的十六进制数组成,主要分两部分,前六位是一个厂商ID,也就是说,一个网卡厂商他要生产网卡,那么他必须去购买这样的一个ID,后面的六位则由厂商自由分配,比如他生产的第一块网卡可能就是00-00-01,或许中国老板把88-88-88这一块网卡留给自己用,图个吉利。在Hyper-v中,MAC地址的构成也是如此,主要也是分成两大部分,但是后面的六位,又可细分为两个部分,总共三个部分:
第一部分:微软买下了00-15-5d作为Hyper-v的MAC地址的厂商标识,也就是说,Hyper-v的MAC地址池中,所有地址都是以00-15-5d作为开头的,更确切的说,Hyper-v系统上运行的虚拟机,他的MAC地址的前六位就是00-15-5d,从这一点上,管理员就可以依据网卡来区分自己连接的到底是一台物理机还是虚拟机,是一台Hyper-v的虚拟机还是一台Vmware的虚拟机;
第二部分:这一个部分是紧接着厂商ID的后四位,它由第一块被枚举的物理网卡的IP的后两位组成,有点绕口,举个例子,比如这一块物理网卡的IP是192.168.0.16,那么,这后四位的MAC地址就是00-10,其中192.168.0.16是的第三位0对应着00,第四位16对应着10,这样就明白多了;
第三部分:也就是最后的两位了,这两位从00到FF正好是256个,这样MAC地址池的范围就确定了下来,00-15-5d-00-10-00到00-15-5d-00-10-FF
MAC地址的分配
MAC地址的使用,主要有两个部分,一个呢,就是给虚拟机用的,还有一部分,是给创建外部网络类型或是内部网络类型生成的虚拟的网卡用的,这样算下来,如果你创建了一个外部类型的虚拟网卡,那么真正给虚拟机用的只有255个MAC地址了,接下来,就是依次类推,小学生的算术作业题了。
同样,如果每个虚拟机有两块网卡,那么这两块网卡都得占用一个MAC地址,有三块,那就总共占用三个MAC地址了,己分配给虚拟机使用的MAC地址,那么这个地址就会跟随着虚拟机而终老,也就是说,分配的MAC地址只有在虚拟机删除了,它才会回到地址池中以便循环利用
Hyper-v在给虚拟机分配MAC地址时,他是从头开头分配的,从地址池中最小的MAC地址开始,一直往下分配,遇到己经分配的MAC地址,那么它将跳过这个地址,再往下寻找,找到空闲的MAC地址,便分配给虚拟机,如果没有找到,那么Hyper-v将再次从头找一遍,这一遍下来还没找到,Hyper-v就会报个错给你了;
这里就给我们提了一个问题,256个地址看上去很多,但说不定哪天就不够用了,Hyper-v确实给了我们这种调优的能力,可以让我们去扩展MAC地址池,这就要我们去改注册表了,注册表的路径是
HKLM\Software\Microsoft\Windows NT\CurrentVersion\Virtualization
找到MinimumMacAddress和MaximumMacAddress,比如我们调节上面00-15-5d-00-10-00 00-15-5d-00-10-FF这一组的值,把00-15-5d-00-10-00改成00-15-5d-00-1F-00,这一改,就有了几千个MAC地址了,这次应该是算得上是取之不尽用之不竭了。
当然在调整MAC地址池之前,不能创建任何的虚拟机或是内部类型的网络,所以说,如果要调整MAC地址池的范围,装完Hyper-v就动手吧。
最后说上一点,在Hyper-v R2中,MAC地址池的调节,己经做成了UI界面,在Hyper-v的管理界面上就可以做了,cool