本期为“服务器操作系统常见问题解析”系列报道第九期,专题解决Intel架构服务器在大规模部署后遇到的系统时间偏差问题。
问题描述
在某数据中心,客户部署了上百台基于 Intel 架构的服务器,使用 PXE + Kickstart 自动化批量安装 KOS 操作系统。然而,部署完成后发现,所有服务器的系统时间比北京时间快了8 小时。针对这一问题,本文将分析可能的原因,并提供解决方案。
过程分析
一.常用时间管理命令
KeyarchOS使用timedatectl工具来管理系统时间和日期。以下是常见的时间管理命令及其使用方法:
1.查看时间状态
timedatectl
此命令将显示当前的系统时间、UTC时间、硬件时钟(RTC)时间、时区以及NTP同步状态。
2.设置系统时间
timedatectl set-time "2024-05-28 15:00:00"
此命令将系统时间设置为指定的日期和时间。
3.调整时区
timedatectl set-timezone Asia/Shanghai
使用timedatectl list-timezones命令可以查看所有可用的时区。
4.启用或禁用NTP同步
timedatectl set-ntp true
若要禁用NTP同步,则使用:
timedatectl set-ntp false
5.查看和调整RTC设置
若问题出在RTC设置上,可以检查其状态并进行调整。在某些系统中,可能需要将RTC设置为本地时间(Local Time)而不是UTC。
timedatectl set-local-rtc 1
此命令将RTC设置为本地时间,避免UTC与系统时区的时间偏差。
图:timedatectl 架构图
二、时间偏差分析
在 PXE + Kickstart 批量部署 KeyarchOS 时,出现系统时间比北京时间快 8 小时的情况,通常可以归纳为以下原因:
RTC 设置为 UTC
在某些系统中,RTC 时间默认设置为 UTC。如果操作系统没有正确配置时区,或者时区与 BIOS/RTC 设置不一致,可能导致系统时间错误。例如,如果操作系统未正确识别RTC系统,它可能会将 UTC 时间转换为本地时间(如北京时间),从而出现时间偏差。
时区设置错误
如果系统的时区未正确设置为北京时间(Asia/Shanghai),可能会导致时间偏差。例如,操作系统可能默认使用 UTC 时间,进而使系统时间比北京时间快 8 小时。
NTP 配置问题
网络时间同步是操作系统校准系统时间的重要机制。如果 NTP 服务未启用或配置错误,系统时间可能出现偏差。
问题根因
客户遇到的问题在表面看来系统时间在某个时间基础上多加了8小时。通过进入BIOS查看时间,发现BIOS时间设为东八区时间(北京时间);通过向主板商咨询并反馈,出厂的大部分主板缺省时间是东八区时间。
业界部分主板RTC默认情况下是零时区时间(伦敦时间),根据操作系统机制,操作系统默认会将RTC设置为零时区时间并在此基础上加时区数的时间,此问题的原因也就是主板厂商为了方便会将出厂主板时间直接设置为东八区时间,从而导致操作系统时间比东八区快8小时。
解决方案
安装时使用timedatectl调整硬件时钟(RTC)是否使用UTC或本地时间:
将RTC设为本地时间
timedatectl set-local-rtc 1
将RTC设为UTC时间
timedatectl set-local-rtc 0
最终通过修改KickStart脚本,时区设置部分:timezone Asia/Shanghai--isUtc;去掉参数 --isUtc,则将rtc时间设为本地时间,确保了系统时间和BIOS时间一致。如图:
图:安装脚本参数设置
结论
timedatectl提供了一种简单而直观的方式来管理Linux系统的时间和日期。一般Intel、AMD处理器系列主板RTC时间出厂默认设置为北京时间,而其他芯片架构RTC时间设置为UTC时间。操作系统安装时需要根据厂商主板时间设置习惯进行特定设置,显示正确的时间。
售前咨询
售后服务
回到顶部