VirtualBox:如何同步主机和客户机时间?

VirtualBox:如何同步主机和客户机时间?

我的客户虚拟机中的时间比主机时间快约 20-30 分钟。我该怎么做才能使客户虚拟机中的时间与主机上的时间相同?

答案1

对于 Linux 主机,首先在客户机上安装 DKMS(动态内核模块支持)包(来源):

$ sudo apt-get install dkms

然后将 Guest Additions 安装到客户系统中:

Ubuntu 20.04+

$ sudo apt-get install virtualbox-guest-utils

Ubuntu 18.04 或更早版本

$ sudo apt-get install virtualbox-guest-additions

此外,以下是一些调整 VirtualBox 时间同步的命令

答案2

以下设置允许我的客户机可靠地保持与主机相差 1 秒的时间。已使用运行 VirtualBox 4.3.26 的主机和运行相同版本的 VirtualBox Guest Additions 的客户机进行了测试。至于 VirtualBox 5.x,到目前为止,我不需要进行这些配置更改;时间已自动同步。

参考:https://www.virtualbox.org/manual/ch09.html#changetimesync


在主机上,列出虚拟机以确定相关虚拟机的名称。

$ VBoxManage list vms | awk '{print $1}'
"CentOS6"

在主机上,通过运行以下命令为客户机配置时间同步参数。首先设置$VMNAME其适当的值。如果的值$VMNAME包含空格,当然应该用引号引起来。

$ VBoxManage guestproperty set ${VMNAME} "/VirtualBox/GuestAdd/VBoxService/--timesync-interval" 10000
$ VBoxManage guestproperty set ${VMNAME} "/VirtualBox/GuestAdd/VBoxService/--timesync-min-adjust" 100
$ VBoxManage guestproperty set ${VMNAME} "/VirtualBox/GuestAdd/VBoxService/--timesync-set-on-restore" 1
$ VBoxManage guestproperty set ${VMNAME} "/VirtualBox/GuestAdd/VBoxService/--timesync-set-threshold" 1000

上述时间参数的值已被限制为 10 的倍数。设置timesync-set-threshold为 10000 可能很诱人,但当触发时,这可能会带来相当剧烈的时间变化的风险,因此可能会破坏应用程序。


在主机上,查看客户机的更新相关值。这些值可以随时重新确认。

$ VBoxManage guestproperty enumerate ${VMNAME} | grep timesync | sort
Name: /VirtualBox/GuestAdd/VBoxService/--timesync-interval, value: 10000, timestamp: 1402110397618554000, flags:
Name: /VirtualBox/GuestAdd/VBoxService/--timesync-min-adjust, value: 100, timestamp: 1402110777505446000, flags:
Name: /VirtualBox/GuestAdd/VBoxService/--timesync-set-on-restore, value: 1, timestamp: 1402110904964050000, flags:
Name: /VirtualBox/GuestAdd/VBoxService/--timesync-set-threshold, value: 1000, timestamp: 1402110660162295000, flags:

在客户机上,停止并禁用所有内部 NTP 和相关计时服务。不应使用这些服务,因为它们可能会干扰 VirtualBox。在 CentOS 6 客户机上:

$ sudo /sbin/chkconfig ntpd off
$ /sbin/chkconfig --list | grep ntp
ntpd            0:off   1:off   2:off   3:off   4:off   5:off   6:off
ntpdate         0:off   1:off   2:off   3:off   4:off   5:off   6:off

在客户机上,重新启动名为 的服务vboxadd-service。假设之前安装了 Guest Additions,则此服务应该已安装并启用。在 CentOS 6 客户机上:

$ /sbin/service vboxadd-service status
Checking for VBoxService ...running
$ sudo /sbin/service vboxadd-service restart
Stopping VirtualBox Guest Addition service                 [  OK  ]
Starting VirtualBox Guest Addition service                 [  OK  ]
$ /sbin/service vboxadd-service status
Checking for VBoxService ...running

如果客户机上的时间尚未同步,请重新启动客户机。

答案3

我给出了另一种解决方案,无需安装 Virtualbox 客户机附加组件即可同步客户机和主机之间的时间:

  1. 在您的客户机上安装 NTP,并取消注释这些行/etc/ntp.conf
disable auth
broadcastclient
  1. 在您的主机上激活广播。对于 Linux 用户,编辑/etc/ntp.conf文件并配置以下行
broadcast 192.168.123.255 

对于 Windows 用户,请激活“Windows 时间”服务。然后您可以阅读此页配置它来广播时间

相关内容