虚拟机设计用于模拟物理硬件。因此,虚拟机拥有众多与物理机相同的属性,包括网络端口、内存以及vCPU实例。然而虚拟服务器往往被完全忽略的属性却是BIOS。
某种程度上,这完全可以理解。毕竟不用对虚拟机BIOS进行任何配置就可以启动并运行虚拟工作负载。此外,很容易就会认为虚拟服务器或者没有BIOS或者只是使用直通BIOS,利用的是物理服务器的BIOS。然而,的确可以对虚拟机的BIOS进行一些设置。
这些设置取决于两个主要的因素。第一个因素是hypervisor。每个hypervisor厂商自己决定希望开放的设置。第二个因素是虚拟机版本。不同的虚拟机版本与硬件交互的方式不同,hypervisor基于不同的虚拟机版本开放了不同的BIOS设置。
无论hypervisor类型以及虚拟机版本是怎样的,虚拟机可用的BIOS设置往往非常少,尤其是与物理服务器相比时更是如此。为表明我的观点,让我们来一起看一些例子。
如果看一下图A,可以看到运行在微软Hyper-V之上的第1代虚拟机开放的BIOS设置。打开Hyper-V Manager,右键单击虚拟机然后在弹出的菜单中选择设置命令,然后在虚拟机设置屏幕下选择BIOS选项进行相应的配置。
图A
正如你在上图中看到的那样,可用的BIOS设置是很少的。你真正可以做的是改变引导顺序。
针对运行在Hyper-V上的第2代虚拟机提供了额外的BIOS设置,但也不是很多。你可以在图B中看到可用的设置。
图B
在上图中你可能会注意到的第一个地方就是与第1代虚拟机不同,第2代虚拟机没有BIOS容器。为访问这些设置,你必须在Hyper-V Manager中右键单击虚拟机然后在弹出的菜单中选择设置命令。BIOS设置在虚拟机的固件容器内是可用的。
与刚才看到的第1代虚拟机类似,第2代虚拟机允许你更改启动顺序。即使是这样,不同版本虚拟机可用的引导设备也是不同的。正如你在上图中看到的那样,第2带虚拟机可以从文件、虚拟DVD、虚拟硬盘或者网络适配器引导。第1代虚拟机可以从虚拟硬盘或者虚拟DVD驱动器引导,也支持从遗留网络适配器或者虚拟软盘引导。
如你在上图中看到的那样,第2代虚拟机也提供了安全引导设置。第1代虚拟机并没有上述设置。
和物理机相比,虚拟机BIOS设置往往非常有限。物理服务器BIOS当中的某些设置被传递给了虚拟机,而其他设置采用了不同的配置方式。
物理机的BIOS允许你配置日期、时间。很明显在虚拟机的BIOS中并没有日期、时间设置,但这是因为虚拟机并不需要上述设置。某些虚拟机往往继承主机操作系统的日期、时间。其他虚拟机如图C所示通过集成服务的时间同步组件获取日期、时间。
图C
物理机还使用它自己的BIOS配置内存大小、CPU时钟速度、以及其他特定的硬件配置。虚拟机通常不需要上述BIOS设置,因为vCPU以及内存设置被配置为虚拟机的属性而不是被作为单独的BIOS配置进行设置。
虚拟机BIOS设置与物理机存在很大的不同。虚拟机BIOS主要是一个改变虚拟机启动顺序的工具。