虚拟机网络时间不同步,绝大多数情况不是虚拟机本身坏了,而是“谁给虚拟机提供时间”这件事没理清:要么虚拟化层的宿主同步开关没开,要么客户机里的 chrony、systemd-timesyncd、w32time 没跑起来,要么两条链路同时在管、互相打架。 处理顺序是固定的:先确认当前走的是哪条同步链路,再只保留一条,最后用 chronyc tracking 或 w32tm /query /status 看实际偏差,而不是只盯桌面右下角那个时钟。
虚拟机时间的两种来源,先分清再动手
硬件时钟直通与客户机 NTP
虚拟机拿到时间,通常只有两条路。
- 虚拟化层同步:VMware Tools、VirtualBox Guest Additions、Hyper-V 集成服务周期性地把宿主机时间“推”进客户机,它不依赖网络,精度一般,适合单机开发环境。
- 客户机内 NTP:客户机自己通过 UDP 123 端口找 ntp.aliyun.com、内网 NTP 服务器或域控要时间,精度高,依赖网络,适合服务器和生产环境。
问题往往出在两条路同时开着,虚拟机刚被 Tools 把时间推前两秒,chrony 又把它拉回来,日志里就会出现频繁的“System clock wrong by … seconds”,监控看着像时钟在抖。
时间漂移最常见的三个触发场景
- 宿主机休眠唤醒:笔记本合盖一晚,宿主时间已经跳到早上,客户机还在昨晚,Tools 一推就是大跳变。
- CPU 高负载或超分严重:宿主机调度延迟变大,客户机时钟计数器跟不上真实时间,漂移持续累积。
- 快照回滚:虚拟机内存状态回到几小时前,但客户机的 NTP 服务并不知道自己“穿越”了,需要手动步进。
虚拟机与主机时间同步怎么配置?三大平台逐个说
VMware 虚拟机时间不同步怎么设置
Workstation 端:虚拟机设置 → 选项 → VMware Tools → 勾选“将客户机时间与主机时间同步”,多数版本默认不勾选,这是很多人装完系统发现时间差几分钟的直接原因。
ESXi / vSphere 端:编辑虚拟机设置 → 虚拟机选项 → VMware Tools → 时间同步,按需开启,开启后客户机内可用命令确认状态:
vmware-toolbox-cmd timesync status vmware-toolbox-cmd timesync enable
如果客户机已经接入内网 NTP 或域控,建议关掉这里的宿主同步,只保留一条链路。
VirtualBox 增强功能的时间同步路径
VirtualBox 依赖 Guest Additions 里的 VBoxService 完成宿主时间同步,图形界面里没有显眼的开关,要用命令行控制:
# 关闭宿主时间同步 VBoxManage setextradata "VM名称" "VBoxInternal/Devices/VMMDev/0/Config/GetHostTimeDisabled" "1" # 恢复 VBoxManage setextradata "VM名称" "VBoxInternal/Devices/VMMDev/0/Config/GetHostTimeDisabled" "0"
同时检查“系统 → 主板 → 硬件时钟使用 UTC 时间”是否与你客户机的时区设置匹配,这一项配反了,时间会整体差 8 小时而不是慢慢漂。
Hyper-V 集成服务里的时间同步项
Hyper-V 默认启用“时间同步”集成服务,域环境里的成员服务器通常要把它关掉,改由域控统一授时,否则会和 w32time 抢控制权。
Get-VMIntegrationService -VMName "VM01" | Where-Object {$_.Name -eq "时间同步"}
Disable-VMIntegrationService -VMName "VM01" -Name "时间同步"
Linux 客户机内部还要补的一步
即使宿主同步开着,也建议确认客户机的时区与 UTC 标志:
timedatectl # 期望看到:System clock synchronized: yes # RTC in local TZ: no
RTC 按本地时区走,是很多“差 8 小时”问题的根源,设置方式:
timedatectl set-local-rtc 0 hwclock -w
虚拟机网络时间不同步怎么排查?按四步走
第一步:确认到 123 端口通不通
NTP 走的是 UDP 123,客户机防火墙、云安全组、公司出口策略任意一环拦掉,chrony 就会一直显示“No suitable source”。
chronyc sources -v # 源前面是 ^ 才算选中,^? 表示不可达
Windows 用 w32tm /stripchart /computer:ntp.aliyun.com /samples:5 看是否有回包。
第二步:看状态而不是只看时间
chronyc tracking
重点看两行:System time 是当前偏差,Last offset 是上次校正量,偏差在几十毫秒内属于正常,几百毫秒以上说明源质量差或网络抖动大。
第三步:时区和 UTC 别混着算
服务器统一用 UTC 存储、按需显示本地时间,这是行业共识认为最省心的做法,业务机器上出现“时间差 8 小时但秒数是对的”,基本可以直接判定为时区配置问题,而不是同步失败。
Linux 虚拟机时间同步失败怎么办
先确认服务在跑:
systemctl status chronyd
再看配置文件 /etc/chrony.conf 里有没有可用源:
server ntp.aliyun.com iburst
server 192.168.1.10 iburst
makestep 1.0 3
makestep 1.0 3 的含义是前三次校正允许直接步进跳变,避免虚拟机开机时偏差过大只能慢慢“追”,改完重启服务:
systemctl restart chronyd chronyc -a makestep
如果客户机同时开着 VMware Tools 时间同步,先把宿主同步关掉,否则改完还是会被拉回去。
虚拟化层同步和客户机 NTP 冲突怎么办
判断标准很简单:生产环境、有域控或内网 NTP 的,一律以客户机 NTP 为准,关掉宿主同步;个人开发机、离线实验环境、经常挂起的,用宿主同步更省事。 两条都开只会在日志里制造噪音。
几个容易被忽略的场景
虚拟机快照恢复后时间不对怎么处理
快照回滚会把内存里的时钟状态一起带回过去,恢复后不要等 chrony 慢慢追,直接手动步进:
chronyc makestep
Windows 虚拟机执行:
w32tm /resync /force
数据库、消息队列这类对时间敏感的服务,回滚后建议顺带检查一次事务时间戳和证书有效期。
云服务器为什么建议关掉宿主同步
云厂商的宿主机时间由平台统一维护,但云主机内部的时钟漂移仍会受虚拟化调度影响,主流云厂商的官方文档普遍建议在实例内启用 chrony 或 w32time,而不是依赖平台侧的时间注入,据公开的技术文档,简米云、酷番云均提供内网 NTP 地址供实例直接使用。
Windows 虚拟机时间同步失败怎么办
按顺序执行:
w32tm /query /status w32tm /config /manualpeerlist:"ntp.aliyun.com,0x8" /syncfromflags:manual /update net stop w32time && net start w32time w32tm /resync /force
域成员机器不要手动指定外部源,/syncfromflags:domhier 更合适,业内专家指出,Windows 时间服务在虚拟机上出问题,多半是域策略与手动配置互相覆盖,先 gpresult /h 看一眼策略来源再改。
三种虚拟化平台时间同步机制对比
| 平台 | 同步机制 | 配置入口 | 常见默认状态 | 推荐搭配 |
|---|---|---|---|---|
| VMware Workstation | VMware Tools 拉取宿主时间 | 虚拟机设置 → 选项 → VMware Tools | 多数版本默认不勾选 | 单机开发开启,服务器关闭 |
| vSphere / ESXi | Tools 时间同步 | 虚拟机选项 → VMware Tools | 视部署策略 | 大规模环境改客户机内 NTP |
| VirtualBox | Guest Additions 的 VBoxService | VBoxManage 命令行参数 | 通常启用 | 高负载场景关闭改内网源 |
| Hyper-V | 集成服务“时间同步” | 虚拟机设置或 PowerShell | 默认启用 | 域成员关闭,改用域控授时 |
参数层面还有一个常被问到的点:chrony 默认的轮询间隔会随同步稳定程度自动拉长,稳定后可到 1024 秒一次,这不是故障,是正常收敛行为,要强制立即校正,用 chronyc makestep 而不是反复重启服务。
关于虚拟机网络时间同步的常见问题
虚拟机网络时间不同步,是不是必须装 VMware Tools?
不是必须,但强烈建议装,不装 Tools,客户机只能靠自身 NTP 客户端走网络同步,虚拟机挂起恢复后容易出现较大跳变,而且无法使用宿主同步作为兜底,装了 Tools 再决定用哪条链路,选择权才在自己手里。
虚拟机和主机时间差几秒算正常?
宿主同步模式下,偏差在秒级属于正常范围,因为它是周期性推送而非持续锁相,客户机 NTP 模式下,正常收敛后偏差通常在几十毫秒以内。chronyc tracking 长期显示几百毫秒以上,优先排查网络抖动和上游源质量,而不是继续加配置。
时间同步会不会影响虚拟机性能?
不会构成明显负担,NTP 报文很小,轮询间隔稳定后会拉长到十几分钟一次;VMware Tools 的时间同步是复用已有心跳通道完成的,不额外占用明显资源,真正影响性能的是宿主机 CPU 超分导致的时钟漂移,那是资源问题,不是同步配置问题。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/771249.html

