硬件时钟的两种记法
主板上的 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 之前确认两边配置不冲突。
带独立管理卡的服务器上,操作系统与带外管理界面各有一套时间设置,排障时要把两侧时间一起抄下来比对,否则容易把配置差异误判成时钟漂移。