我在 vmWare 下运行 Ubuntu 12.04 LTS。当我重新启动挂起的映像时,系统时钟未检测到系统时间已过期。在“时间和日期设置”对话框中,我选择了“从互联网自动设置时间”,但是无论点击多少次这两个选项(另一个是“手动设置时间”),系统实际上都会“检查互联网”并且使用正确的时间。有没有办法强制本地系统(在 vmWare 下运行)将时间更改为“互联网时间”?
答案1
在虚拟机上安装 NTP 服务:
sudo apt-get install ntp
这样,虚拟机(假设它可以访问互联网)将从远程 NTP 服务器设置时间。
如果已安装,请检查该服务是否正在运行:
sudo service ntp status
如果没有,请启动它:
sudo service ntp start
最后,您可以强制它从服务器获取时间
sudo ntpdate 1.debian.pool.ntp.org
答案2
通过互联网设置时间NTP。有两种方法:
ntpdate
进行一次查询以从服务器检索当前时间并将计算机的时钟设置为该时间。- ntp 守护进程对一台或多台服务器进行定期查询,并且通常以几毫秒或相对于时间服务器更好的精度维护本地时钟。
NTP拒绝跟随时间服务器的突然跳跃:它假设如果本地时钟和服务器之间存在较大差异(如果我没记错的话,最大值是20分钟),这一定是由于网络问题或配置错误造成的(例如错误的时区)。
当您重新启动挂起的映像时,系统时钟应该检测到这一点(虚拟处理器接收定时器中断)。如果这对您不起作用,您应该进一步调查,因为从互联网设置时间并不能解决您的问题。您的问题描述听起来像是 VMware 或 Linux 内核中的错误。
当挂起的映像恢复时,处理器只会看到时间跳跃,而不会获取虚拟机已挂起的信息。因此,无法ntpdate
在恢复时运行程序(例如 )。 (除非有办法通过 VMware 工具来做到这一点,否则我不知道。)
VMware(至少ESX)有自己的计时软件。据我所知,在主机和客户机上运行时间同步软件往往会很糟糕,因为每一方都会补偿相同的漂移,最终会出现巨大的波动。确保主机保持正确的时间,并且不要在来宾中运行任何时间同步软件。