一篇文章看懂时间同步服务

发布于:2025-07-21 ⋅ 阅读:(17) ⋅ 点赞:(0)

Linux 系统时间与时区管理

一、时间与时钟类型

时钟类型 说明 管理工具
系统时钟 由 Linux 内核维护的软件时钟,基于时区配置显示时间 timedatectl
硬件时钟 (RTC) 主板上的物理时钟,通常以 UTC 或本地时间存储,用于系统启动时初始化时间 hwclock

二、核心管理命令详解

1. 设置系统时间

命令

sudo timedatectl set-time "YYYY-MM-DD HH:MM:SS"  

参数说明

  时间格式必须严格遵循 年-月-日 时:分:秒

  支持 24 小时制,秒可省略(默认为 00)

 设置系统时间为 2024 年 2 月 13 日 10:41:55  
sudo timedatectl set-time "2024-02-13 10:41:55"  

注意事项

  需要 root 权限

  若系统启用了 NTP 时间同步服务(如 chronyd 或 systemd-timesyncd),手动设置时间后可能被自动纠正

2. 查看与设置时区

2.1 列出所有可用时区

timedatectl list-timezones  

过滤示例

 查找亚洲时区  
timedatectl list-timezones | grep Asia  
 输出:  
 Asia/Shanghai  
 Asia/Tokyo  
 Asia/Dubai  
2.2 设置系统时区
sudo timedatectl set-timezone "时区名称"  

注意事项

  时区名称区分大小写

  修改时区后,系统时间和日志时间戳将自动转换

  推荐使用协调世界时 (UTC) 部署跨国服务器

3. 配置硬件时钟模式
sudo timedatectl set-local-rtc <0|1>  
参数 说明
0 硬件时钟使用 UTC 时间
1 硬件时钟使用 本地时间

三、完整操作流程

查看当前时间配置

timedatectl  
 输出当前时区为 America/New_York  

修改时区

sudo timedatectl set-timezone Asia/Shanghai  

同步硬件时钟

sudo hwclock --systohc  

使用 Chrony 实现 NTP 时间同步

一、Chrony 架构与核心组件

Chrony 是 RHEL 9 默认的 NTP 客户端/服务器软件

组件 运行模式 核心功能
chronyd 守护进程 负责与 NTP 服务器通信,持续调整系统时钟频率,补偿时钟漂移,实现高精度同步
chronyc 命令行工具 提供实时监控、配置调整和同步状态查询的交互式界面

二、Chrony 客户端配置

1. 安装与基础配置
1.1 安装软件包
sudo dnf install -y chrony
2. 服务管理命令
操作 命令 说明
启动服务 sudo systemctl start chronyd 初始化时间同步进程
设置开机自启 sudo systemctl enable chronyd 确保重启后自动同步
查看服务状态 sudo systemctl status chronyd 验证服务是否正常运行
重载配置 sudo systemctl reload chronyd 应用配置变更无需重启服务
3. 时间与时区初始化设置
3.1 设置系统时间基准
 手动设定初始时间(可选,通常由 NTP 自动同步)
sudo timedatectl set-time "2024-02-13 10:41:55"
3.2 配置时区
 列出所有时区
timedatectl list-timezones
 设置为上海时区
sudo timedatectl set-timezone Asia/Shanghai
3.3 硬件时钟模式
 使用 UTC 模式(推荐,尤其多系统环境)
sudo timedatectl set-local-rtc 0
 同步硬件时钟
sudo hwclock --systohc

三、同步状态

时间源状态解读

通过 chronyc sources -v 查看详细时间源状态

符号 状态 解释
^ Server(服务器模式) 当前使用的上级 NTP 服务器
= Peer(对等模式) 与其他节点互为时间源(用于集群环境)
# Local(本地时钟) 本地参考时钟
* Current Synced(已同步) 当前最佳时间源
+ Acceptable(可接受) 候选时间源,满足精度要求
- Rejected(拒绝) 因偏差过大或不可达被排除
? Unreachable(不可达) 网络连接失败或响应超时
x False Ticker(假时钟) 被算法判定为不可信源
~ High Variability(高波动) 时间波动超出阈值

搭建 Chrony 时间同步服务器

一、Chrony 服务端核心特性

  端口使用

    UDP 323:Chrony 守护进程 (chronyd) 默认管理端口

    UDP 123:兼容 NTP 协议,用于与客户端通信(需开放)

  核心优势

     快速同步:初始同步仅需分钟级,传统 NTP 需数小时

     动态频率补偿:适应虚拟机时钟漂移和节能模式波动

     低资源占用:间歇性网络环境下仍保持高精度

     稳定性优化:抵抗网络拥塞和临时延迟影响

二、服务端配置文件详解

关键参数解析

参数 功能说明 安全建议
server <地址> iburst 指定上游时间服务器,iburst 加速首次同步(发送 8 个探测包) 至少配置 3 个不同源以提高可靠性
allow 0.0.0.0/0 允许所有 IP 的客户端连接 生产环境应限制为内网段
local stratum 10 当上游服务器不可用时,以本地时钟作为第 10 层时间源(防止服务中断) 层级值建议 ≥10,避免干扰合法源
driftfile 存储系统时钟频率偏差数据,重启后快速补偿 确保文件路径可写且权限为 600
rtcsync 每 11 分钟将系统时间同步到硬件时钟 (RTC) 双系统环境需配合 set-local-rtc 0
bindcmdaddress 指定 chronyd 监听的接口(默认 0.0.0.0 全接口) 内网服务器可绑定管理 IP

三、服务端部署流程

1. 安装与配置

​
 安装 Chrony
sudo dnf install -y chrony

 编辑配置文件
sudo vim /etc/chrony.conf
 添加以下内容:
server ntp.ntsc.ac.cn iburst
server ntp.aliyun.com iburst
allow 网段 限制内网访问
local stratum 10
driftfile /var/lib/chrony/drift
rtcsync

​
2. 防火墙配置
​
​
 开放 NTP 服务端口
sudo firewall-cmd --permanent --add-service=ntp
sudo firewall-cmd --reload

 验证端口监听
ss -tuln | grep -E '123|323'
 输出应包含:
 udp   UNCONN 0 0 0.0.0.0:123    0.0.0.0:*              
 udp   UNCONN 0 0 0.0.0.0:323    0.0.0.0:* 

​

​
3. 服务管理
 启动并启用服务
sudo systemctl enable --now chronyd

 检查服务状态
systemctl status chronyd
 预期输出:active (running)

 重载配置(无需重启)
sudo systemctl reload chronyd

四、服务端状态验证

1. 查看同步状态的

 跟踪同步状态
chronyc tracking
 关键指标:
 Reference ID    : 标识当前同步的服务器
 Stratum         : 层级(越小越接近权威源)
 System time     : 与参考源的偏移量(理想值接近 0)

 列出所有时间源
chronyc sources -v


网站公告

今日签到

点亮在社区的每一天
去签到