禁用VM与Hypervisor之间的时间同步功能

基本主流的企业级虚拟化产品,安装完虚机以后,都要在虚机中安装各种Tools,用来增强虚机的性能,以及与主机的交互。而时间同步功能,在目前主流的三家产品中,默认都是启用的。安装完Tools以后,虚机会自动和Host之间同步时间,保持时间与底层主机的一致,但是这种机制在某些情况下会导致上层虚机的时间混乱,比如时区设置,时间准确定,多时区等等。

所在在某些情况下,可能需要禁用该功能。

VMware ESX:

ESX上的虚机可以通过在虚机中,编辑VMware Tools的属性来控制,在Options中去掉Time synchronization between the virtual machine and the ESX Server operating system的选中状态

虽然去掉了以上选项,但是在某些特殊情况下,ESX仍然会同步虚机的时间:

  • Resume from suspend
  • Migrate with VMotion to another host
  • Take or revert to a snapshot
  • Shrink the virtual disk
  • Restart the VMware Tools service
  • Power on

为了在这些情况下也禁用时间同步功能,我们可以修改下该VM的配置文件(*.vmx)

Hyper-V:

通过Hyper-v管理控制台,选中VM,点击设置,然后选中Action,在左侧的管理项目下找到Integration Services (交互服务),去掉时间同步(Time synchronization)的选中状态。

同样,该选项也只是静止运行期间的时间同步,在虚机启动的时候,仍然会同步时间。

XenServer:

目前官方没有提供windows主机禁用时间同步的说明

针对Linux guest,我们可以参考以下操作设置来禁用时间同步功能

1、一种方法,使用root账号登录的虚机,输入以下命令

echo 1 > /proc/sys/xen/independent_wallclock

为了让设置用就生效,防止重启后恢复,我们需要编辑/etc/sysctl.conf 文件,并加入以下内容

# Set independent wall clock time
xen.independent_wallclock=1

2、作为第一种方法的替代解决方案,我们可以把设置写入到虚机的启动参数中即可,增加如下启动参数:

independent_wallclock=1