虚拟机时间跳变问题 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
KVM Installation
KVM on Ubuntu
fangjue
V2EX    KVM

虚拟机时间跳变问题

  •  
  •   fangjue 134 天前 1354 次点击
    这是一个创建于 134 天前的主题,其中的信息可能已经有所发展或是发生改变。

    运行在青云私有云上的 Ubuntu 22.04 虚拟机,通过 systemd-timesyncd 采用 ntp.ubuntu.com 服务器进行 NTP 同步。在 /var/log/syslog 中每隔大约半小时就会产生两条来自 systemd-resolved 的日志提示系统时间更改。

    一台虚拟机 xxx 时间突然向过去跳变,再恢复正常:

    May 31 17:18:44 xxx systemd-resolved[724]: Clock change detected. Flushing caches. May 31 17:18:51 xxx systemd-resolved[724]: Clock change detected. Flushing caches. May 31 17:48:48 xxx systemd-resolved[724]: Clock change detected. Flushing caches. May 31 17:48:54 xxx systemd-resolved[724]: Clock change detected. Flushing caches. 

    另一台虚拟机时间 yyy 突然向将来跳变,再恢复正常:

    May 31 17:53:58 yyy systemd-resolved[690]: Clock change detected. Flushing caches. May 31 17:52:22 yyy systemd-resolved[690]: Clock change detected. Flushing caches. May 31 18:24:03 yyy systemd-resolved[690]: Clock change detected. Flushing caches. May 31 18:22:27 yyy systemd-resolved[690]: Clock change detected. Flushing caches. 

    在服务器上通过 top (间隔设为 0.1 秒)现场观测观察到的时间跳变现象与日志中的记录相符。

    虚拟机上 /sys/devices/syste/clocksource/clocksource0/current_clocksource 为 kvm-clock 。

    以上现象是什么原因造成的?是否说明虚拟机所在主机的时间不准,或者主机上的时间同步与虚拟机存在冲突?有没有什么办法可以缓解或解决时间上的跳变?

    如果禁用虚拟机 xxx 上的 systemd-timesyncd 服务,日志中发生时间变化的间隔变长( 1.5 小时或 2 小时),且每次只有一行,不再出现跳变。但是这会导致系统时间始终比北京时间慢 6~7 秒(可能刚好与启用时间同步时跳变的时间差相等?)。

    6 条回复    2025-06-01 19:39:16 +08:00
    lcdtyph
        1
    lcdtyph  
       134 天前 via iPhone
    加个内核参数换 clocksource
    clocksource=tsc
    具体换成什么可以看看 available_clocksource
    druggo
        2
    druggo  
       134 天前
    关掉 systemd-timesyncd ,换 ntpd 试试
    billlee
        3
    billlee  
       134 天前
    嗯,看 clocksource. 另外如果你依赖时间的单调性,就不要用 systemd-timesyncd, 用 chrony.
    fangjue
        4
    fangjue  
    OP
       134 天前
    @billlee 还有一台虚拟机上用的 chrony ,但日志中总是时不时出现 chronyd: Can't synchronise: no majority ,尝试过配置多种不同的 NTP 服务器。日志中的时间变动也是半小时一次,只出现一条,系统时间比较准。

    之前查阅过各种文档,clocksource 一般都推荐使用 kvm-clock ; tsc 性能有一些优势,但虚拟机在不同物理 CPU 之间迁移可能会出现偏差。
    fangjue
        5
    fangjue  
    OP
       133 天前
    虚拟机 yyy 使用 chrony 同步后,每隔半小时时间突然向将来跳变 90 多秒(比标准时间快 90 多秒),接下来一段时间由 chrony 逐步拨回正常时间,整个过程持续 22 分钟。相比 systemd-timesyncd 时间保持单调,但是相当长的一段时间内系统时间偏差大。
    还有一台虚拟机 zzz 禁用了 systemd-timesyncd 也未使用 ntpd 或 chrony 等其他同步服务,自上次物理机停机维护至今时间差大致以线性规律逐渐增长,现在比标准时间慢 80 多秒。虚拟机 yyy 的时间差也是这样的线性增长规律。

    看起来像是 kvm-clock 的计算上存在偏差,不同虚拟机的偏差还不一样,并且随着运行时间增长逐渐累加?
    fangjue
        6
    fangjue  
    OP
       133 天前
    clocksource 更换为 tsc 没有任何变化。想到用 auditd 检测是什么进程修改了系统时间,结果发现是这么一个进程:

    date -u --set=2025-06-01 xx:xx:xx.xxxxxx

    进一步记录所有运行的进程后发现,上述命令来自 gapd ( QingCloud Guest Agent ),看来只能找厂商解决了。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5797 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 06:32 PVG 14:32 LAX 23:32 JFK 02:32
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86