商城首页欢迎来到中国正版软件门户

您的位置: 首页 > 文章列表 > 系统应用 > 如何在Linux中配置具体的系统时钟偏差

如何在Linux中配置具体的系统时钟偏差

  发布于2026-08-17 阅读(0)

扫一扫,手机访问

Linux系统时钟偏差需通过chrony持续校准而非手动设偏移,driftfile记录固有漂移率自动补偿,RTC必须设为UTC并同步,虚拟机需启用kvm-clock时钟源。

如何在Linux中配置具体的系统时钟偏差

系统时钟偏差不是“设个偏移值”就能解决的

Linux 并没有提供类似 set-clock-offset +5s 这样可以直接把时间加减几秒的接口。所谓“配置偏差”,说到底并不是手动塞进一个固定偏移量,而是通过持续校准,让系统时钟一步步贴近真实的 UTC。也正因为如此,如果在 chronyc tracking 的输出里看到 Offset 是 -123.456ms,不必紧张,这恰恰说明系统已经在自动修正;这个值既不需要手动去“配置”,也不应该人为干预。

chrony 的 driftfile 才是真正影响长期偏差的关键

driftfile 用来保存系统时钟本身的漂移率(单位是 ppm)。chronyd 启动后,会先读取这份数据,用它提前判断并修正硬件时钟究竟是偏快还是偏慢。一般来说,这个文件位于 /var/lib/chrony/drift,内容通常像 -23.456 这样(表示每百万秒慢 23.456 微秒)。

  • 不要手动修改这个文件——chronyd 会在运行中自动更新它
  • 首次部署或更换硬件后,建议让 chronyd 运行至少 24 小时再观察 drift 值是否稳定
  • 如果 drift 值剧烈跳变(比如一天内从 -15 变成 +80),说明系统负载异常、温度波动大,或存在虚拟机时钟源问题
  • 在 KVM/QEMU 虚拟机中,务必启用 host 时钟源(检查 /sys/devices/system/clocksource/clocksource0/current_clocksource 是否为 kvm-clock

手动干预偏差只在极端场景下有效,且必须带条件

当偏差超过 1 秒且 chrony 无法自动收敛(比如网络中断后长时间离线),可触发强制步进(makestep)。但注意:这会跳变时间,破坏单调性,数据库、Kafka、ZooKeeper 等服务可能出错。

  • 确认当前偏差:运行 chronyc tracking | grep "Offset"
  • 仅当 Offset 绝对值 > 1s 且服务允许跳变时,才执行:sudo chronyc -a makestep
  • 若 chrony 配置里没启用 makestep,需先在 /etc/chrony/chrony.conf 加一行:makestep 1.0 -1(表示对任意大于 1 秒的偏差都允许步进)
  • 执行后立刻验证:timedatectl status | grep "System clock synchronized" 应为 yes

硬件时钟(RTC)不准会掩盖系统时钟的校准效果

即使 chronyd 把系统时钟调得非常准,如果关机后 RTC 没同步、或者 BIOS 时间本身漂移严重,下次开机又会回到旧时间。这是最容易被忽略的环节。

  • 确认 RTC 存的是 UTC:timedatectl status | grep "RTC in local TZ" 输出应为 no
  • 每次成功同步后,把系统时间写入 RTC:sudo hwclock --systohc --utc
  • 检查 systemd 是否在关机前自动同步:运行 systemctl is-enabled systemd-hwclock-sa ve.service,若为 disabled,则启用:sudo systemctl enable systemd-hwclock-sa ve.service
  • 老旧服务器主板电池失效会导致 RTC 每天快/慢几分钟,这种问题 chrony 无法修复,只能换电池
本文转载于:https://www.php.cn/faq/2994508.html 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。

热门关注