首页/系统/信创系统运维速查/硬件时钟 UTC/本地时间设置
系统与安装65 条

硬件时钟 UTC/本地时间设置

Linux 默认按 UTC 管理硬件时钟;与 Windows 双系统或带 BMC 的环境按规范设置 local-rtc,避免差 8 小时的经典问题。

信创系统运维速查系统更新于 2026-10-13

硬件时钟的两种记法

主板上的 RTC 芯片要么把时间当作世界时存,要么当作本地时间存。Linux 默认按世界时管理,Windows 默认按本地时间管理,两套系统共用一块主板时就会互相把时间改错,表现为每次切换系统后时间差整整 8 小时,而分钟和秒却都是对的。

为什么不能随便改

RTC 记法一旦改变,漂移是双向的:Linux 把世界时写进芯片,Windows 读出来当成本地时间会慢 8 小时;Windows 写进本地时间,Linux 读出来当成世界时又会快 8 小时。虚拟化环境更复杂,宿主机、guest 与快照回滚都会参与时间恢复,所以改动要连同平台侧策略一起确认。

基本信息

标准做法timedatectl set-local-rtc 0,RTC 存世界时
双系统场景与 Windows 共存常改成 set-local-rtc 1
查看命令timedatectl、hwclock --show
写入命令hwclock --systohc 把当前系统时间写回 RTC

典型使用场景

  • 同一台机器装 Linux 与 Windows 双系统,切换后时间相差 8 小时
  • 虚拟化宿主机与 guest 时钟策略需要统一,避免快照回滚后时间倒退
  • 机房服务器统一按世界时管理,便于跨时区日志比对与集中审计
  • 带独立管理卡的设备需要校核管理侧与系统侧时间是否一致
  • 排查业务时间戳异常时,先排除 RTC 记法差异造成的影响

查看与设置

查看与设置
timedatectl                                  # 关注 Time zone 与 RTC in local TZ 两行
hwclock --show                               # 直接读硬件时钟的原始值
sudo timedatectl set-local-rtc 1 --adjust-system-clock   # 与 Windows 行为对齐
sudo hwclock --systohc                       # 把系统时间写入 RTC,否则重启后设置丢失
timedatectl                                  # 复核 RTC in local TZ 已变为 yes

输出项读法

字段含义正常值
Local time按当前时区换算的本地时间与业务所在地时间一致
Universal time世界时比东八区本地时间早 8 小时
Time zone系统时区服务器统一用 Asia/Shanghai 或 UTC
RTC in local TZ硬件时钟是否按本地时间记单系统 no;双系统按需要设 yes
NTP synchronized时间同步是否生效应为 yes,否则查时间同步条目
服务器与跨时区协作环境建议统一世界时,桌面终端按单位规范统一;虚拟化平台自身有独立时钟策略,改 guest 之前确认两边配置不冲突。
带独立管理卡的服务器上,操作系统与带外管理界面各有一套时间设置,排障时要把两侧时间一起抄下来比对,否则容易把配置差异误判成时钟漂移。

易错点

  • 改完 RTC 模式没执行 hwclock --systohc,重启后设置回到原样,问题看起来像没修
  • 双系统两边都改成对方的模式,结果互相覆盖,时间继续漂移:只在一侧设置并保持一致
  • 服务器把 RTC 改成按本地时间记之后,夏令时规则变化会让时间跳变,服务器侧建议保持世界时
  • 只改时区不改硬件时钟,容器与数据库仍按各自默认时区解释时间,表现为日志时间错乱

数据来源与参考

  • systemd timedatectl 手册
  • hwclock 手册
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌