环境信息
- Vpshere 6.0
- Esxi 6.0
现场
在进行虚拟机更改配置前进行了快照备份。此时就发现客户机发生了时间变化,手动进行了修正但并未关注时间变动根源。然后在配置更改完成后删除快照,也没有再对时间进行检查,此时导致业务系统启动后报错才发现时间存在问题。
最后一次修正时间时,发现ntpd
因时间偏差过大而报错。手动停止NTP服务后,使用ntpdate
命令强制同步时间后才可正常启动ntpd
服务。
根因
客户机安装有vmtools,在进行快照动作时,会强制同步宿主机时钟。如果宿主机未配置时钟同步,此时就会导致客户机产生产生时间偏移。
临时方案
使用 ntpdate
强制同步时间后,重启ntpd
服务。
# ntpdate -d xxx.xxx.xxx.xxx 使用此步骤确认offset值
# ntpdate xxx.xxx.xxx.xxx 强制同步时间
# service ntpd restart 重启ntpd服务
调整时钟前建议暂停客户机上的应用。
永久解决方案
方案一: 修改虚拟机配置
访问esxi web界面https://esxi_hosts_ipadd/
右键虚拟机—编辑设置–虚拟机选项—高级—编辑配置—添加参数
time.synchronize.continue = "FALSE"
time.synchronize.restore = "FALSE"
time.synchronize.resume.disk = "FALSE"
time.synchronize.shrink = "FALSE"
time.synchronize.tools.startup = "FALSE"
time.synchronize.tools.enable = "FALSE"
time.synchronize.resume.host = "FALSE"
方案二:配置宿主机使用同步
扩展:启用定期时间同步 (翻译)
链接: Enable Periodic Time Synchronization
当您启用定期时间同步时,VMware Tools会将客户操作系统的时间设置为与主机时间相同。
时间同步发生后,VMware Tools每分钟检查一次,以确定来宾和主机操作系统上的时钟是否仍然匹配。如果没有,则将客人操作系统上的时钟同步,以匹配主机上的时钟。
如果客户机操作系统上的时钟落后于主机上的时钟,VMware Tools会将客户机上的时钟向前移动,以匹配主机上的时钟。如果客户操作系统上的时钟领先于主机上的时钟,VMware Tools会导致客户上的时钟运行得更慢,直到时钟同步。
原生时间同步软件,如适用于Linux和Mac OS X的网络时间协议(NTP)或适用于Windows的Microsoft Windows时间服务(Win32Time),通常比VMware Tools定期时间同步更准确。在您的客人中只使用一种形式的定期时间同步。如果您使用的是本机时间同步软件,请禁用VMware Tools定期时间同步。
无论您是否打开VMware Tools定期时间同步,时间同步都会在某些操作后发生:
- 当您启动VMware Tools守护进程时,例如在重新启动或开机操作期间
- 当您从暂停操作中恢复虚拟机时
- 在您恢复到快照后
- 在你缩小磁盘后
当操作系统启动或重新启动时,当您首次打开定期时间同步时,如果在.vmx文件中未启用time.synchronize.tools.startup.backward
参数,则客户机时钟设置为转发。对于其他事件,同步是时间向前的。
要完全禁用时间同步,您必须编辑虚拟机的配置文件(.vmx文件),并将多个同步属性设置为FALSE。
先决条件
- 禁用其他定期时间同步机制。例如,一些客户机可能默认打开NTP或Win32Time时钟同步。
- 如果您计划编写此过程中使用的命令脚本,并且需要知道退出代码是什么,请参阅常见退出代码。
Mac OS X来宾操作系统使用NTP,不会与主机不同步。对于Mac OS X来宾操作系统,无需打开VMware Tools时间同步。
步骤
- 在客户操作系统中打开命令提示符或终端。
- 更改为VMware Tools安装目录。
操作系统 | 默认路径 |
---|---|
窗口 | C:\Program Files\VMware\VMware Tools |
Linux和Solaris | /usr/sbin |
FreeBSD | /usr/local/sbin |
Mac OS X | /库/应用程序支持/VMware工具 |
- 键入命令以确定是否启用了时间同步。
utility-name时间同步状态
对于utility-name请使用特定于客户机的程序名称。
操作系统 | 程序名称 |
---|---|
窗口 | VMwareToolboxCmd.exe |
Linux、Solaris和FreeBSD | vmware-tools-cmd |
MAC OS X | vmware-tools-cli |
- 键入命令以启用或禁用定期时间同步。
utility-name时间同步subcommand
对于subcommand,请使用启用
或禁用
。
结果
VMware Tools服务会按照您的指定启用或禁用定期时间同步。禁用定期时间同步不会禁用所有VMware Tools时间同步。
接下来要做什么
如果您需要在虚拟机中保留一个虚构的时间,以便客户机操作系统中的时钟永远不会与主机上的时钟同步,请完全禁用客户机操作系统的时间同步。