domtime 是什么
virsh domtime 通过 guest agent 通道读取 guest 内的时间并与宿主比对,加 --sync 则把 guest 时间同步到宿主时间。它适合排查时钟漂移类问题:先看 domtime 的结果,再核对宿主的 NTP 状态与 guest 内的校时服务。
基本信息
| 查看 | virsh domtime vm1 |
|---|---|
| 同步 | virsh domtime --sync vm1 |
| 前提 | guest 内运行 qemu-guest-agent |
| 通道 | 走 agent,agent 未运行时会报错而非返回旧值 |
| 典型场景 | 快照回滚、长时间挂起恢复后的时间漂移 |
| 配套检查 | 宿主 NTP 状态与 guest 校时服务一起看 |
典型使用场景
- 虚机快照回滚后时间倒退
- 宿主长时间挂起或休眠恢复后时间异常
- 数据库主从复制异常时排查两侧时间差
- 监控上报时间戳错乱,定位是采集端还是系统时间问题
- 虚拟化平台巡检时抽查 guest 与宿主的偏差
比对与同步
比对与同步
date -u # 先看宿主 UTC 时间
virsh domtime vm1 # 读取 guest 时间并与宿主比对
virsh domtime --sync vm1 # 把 guest 时间同步到宿主
virsh qemu-agent-command vm1 '{"execute":"guest-get-time"}' --pretty # 直接问 agent
chronyc tracking # guest 内看校时服务状态现象与处理
| 现象 | 常见原因 | 处理 |
|---|---|---|
| guest 时间倒退 | 快照回滚到较早时点 | 恢复后触发一次校时 |
| 时间缓慢漂移 | guest 未启用校时服务 | 在 guest 内配置 NTP 或 chrony |
| 时间突然跳跃 | 宿主休眠或挂起恢复 | 同步后核对依赖时间的业务 |
| domtime 无输出 | guest agent 未运行 | 安装并启动 qemu-guest-agent |
强制同步可能让 guest 内时间跳变:对时间敏感的数据库与分布式系统要走可接受流程(在一致性窗口内处理),不要在业务高峰直接跳表。
时间同步是两层的事:宿主先与可靠时间源对齐,guest 再与宿主或外部源对齐。只修一头,问题还会以相同的现象回来。