当前位置: 首页 > news >正文

CentOS7下同步时间的几种方式(NTP 、Chrony和systemd-timesyncd)

文章目录

  • 前言
  • 一、NTP (Network Time Protocol) & ntpd
    • 1.原理
    • 2. 安装与配置(ntp 包)
    • 3.NTPd 优缺点对比
  • 二、Chrony
    • 1.原理
    • 2.安装与配置 (`chrony` 包)
    • 3. 优点
    • 4. 缺点
  • 三、systemd-timesyncd
    • 1.原理
    • 2.安装与配置 (systemd 自带)
    • 3. 优点
    • 4. 缺点
  • 四、手动同步工具
    • 1.ntpdate`(已废弃,不推荐)
    • 2. date 命令
  • 五、关键操作与注意事项
    • 1. 防火墙
    • 2. 硬件时钟 (RTC) 同步
    • 3. 时区设置
    • 4. 服务选择建议
  • 总结

前言

在 CentOS 7 中,保持系统时间准确至关重要,尤其对于集群、数据库、日志记录等场景。主要的时间同步方式和工具有 ntpd (NTP daemon)、chronyd (Chrony daemon) 和 systemd-timesyncd

一、NTP (Network Time Protocol) & ntpd

1.原理

*   使用 NTP 协议 (UDP 端口 123)
*   客户端 (ntpd) 与一个或多个 NTP 服务器通信
*   通过交换带有时间戳的数据包,计算网络延迟 (delay) 和时间偏差 (offset)
*   采用复杂算法(如 Marzullo 算法、时钟筛选、组合)过滤噪声,选择最可靠的服务器
*   通过 渐进式调整 系统时钟(slew)来纠正偏差(每秒最多调整几毫秒),避免时间跳变,对依赖连续时间的应用友好。只有在启动时偏差过大 (>128ms 或 panic 阈值) 才会进行阶跃调整 (step)。 
*   维护一个持续的频率漂移校正模型,即使暂时断网也能保持一定精度

2. 安装与配置(ntp 包)

# 安装
sudo yum install ntp
# 主配置文件:/etc/ntp.conf
# 编辑配置文件,指定 NTP 服务器池或服务器
sudo vim /etc/ntp.conf

在这里插入图片描述

示例配置片段

# 使用 CentOS 官方池
server 0.centos.pool.ntp.org iburst
server 1.centos.pool.ntp.org iburst
server 2.centos.pool.ntp.org iburst
server 3.centos.pool.ntp.org iburst# 允许本地网络客户端同步 (可选)
# restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap
  • iburst: 初始启动时发送 8 个数据包加速同步
  • restrict ... nomodify notrap: 允许指定网络查询时间但不允许修改配置或设置陷阱
# 启动服务并设置开机自启
sudo systemctl start ntpd
sudo systemctl enable ntpd
# 查看同步状态
ntpq -pn

在这里插入图片描述
在这里插入图片描述

  • ntpq -pn 输出解释:
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
-162.159.200.1   10.107.8.118     3 u   28   64    3  359.100  -70.096  38.033
+95.111.202.5    106.10.186.200   3 u   28   64    3  165.314    0.278  52.889
*202.118.1.81    202.118.1.46     2 u   27   64    3   51.261    2.783  10.046
+185.209.85.222  130.173.91.58    2 u   25   64    3  247.237  -21.915  12.004
  • * 表示当前优选的时间源
  • remote: NTP 服务器 IP
  • offset: 本地时间与服务器时间的偏差 (ms)。负数表示本地时间慢
  • delay: 网络延迟 (ms)
  • jitter: 偏移量的平均偏差 (ms)

3.NTPd 优缺点对比

类别优点缺点
历史与稳定历史悠久,稳定可靠,算法成熟启动和收敛速度相对较慢(尤其初始同步)
时间调整渐进调整(slew)避免时间跳变,适合数据库、交易系统对间歇性网络连接或高延迟网络适应性不如 chrony
断网表现频率漂移模型在断网时维持精度资源消耗略高于 chrony
工具支持强大的日志和监控工具(ntpqntpstat默认配置下处理大时间偏差(>1000s)需要手动干预(ntpd -gq

二、Chrony

1.原理

*   CentOS 7 的默认时间同步工具(chronyd服务)
*   兼容 NTP 协议,但算法更先进
*   能更快适应网络不稳定、间歇性连接(如笔记本、移动设备)
*   在启动时或时间偏差较大时,能更快地大幅纠正时间 (step) 或快速调整 (slew)
*   更精确地处理时钟频率漂移,尤其适合虚拟化环境(因虚拟化时钟常不稳定)
*   支持 NTP 和 PTP (需硬件支持) 时间源
*   提供 chronyc 命令行工具进行实时监控和控制

2.安装与配置 (chrony 包)

# 安装 (通常默认已安装)
sudo yum install chrony# 主配置文件:/etc/chrony.conf
# 编辑配置文件
sudo vim /etc/chrony.conf

在这里插入图片描述

示例配置片段

# 使用阿里云公共 NTP 服务器
server ntp.aliyun.com iburst
server time1.cloud.tencent.com iburst# 允许特定网络同步 (可选)
# allow 192.168.1.0/24# 启用内核实时时钟 (RTC) 同步
rtcsync# 记录频率漂移
driftfile /var/lib/chrony/drift# 日志目录
logdir /var/log/chrony
  • iburst: 同 ntpd,加速初始同步
  • rtcsync: 定期将系统时间同步到硬件时钟 (RTC)
  • driftfile: 存储计算出的时钟频率漂移值
# 启动服务并设置开机自启
sudo systemctl start chronyd
sudo systemctl enable chronyd# 查看状态
chronyc tracking      # 显示系统时间信息
chronyc sources -v    # 查看时间源及其状态

在这里插入图片描述
在这里插入图片描述

  • chronyc sources -v 输出解释:
MS Name/IP address         Stratum Poll Reach LastRx Last sample
===============================================================================
^- ntp8.flashdance.cx            2   6   377    10  -2300us[-2300us] +/-   94ms
^- stratum2-1.ntp.mow01.ru.>     2   6   177     6  +8681us[+8681us] +/-   83ms
^* time.neu.edu.cn               2   6   377    11  -1442us[-1609us] +/-   28ms
^- time.cloudflare.com           3   6    37    11  +4486us[+4486us] +/-  117ms
  • ^*: 当前最优时间源。
  • Stratum: 时间源的层级 (数字越小越接近原子钟)。
  • Last sample: [offset] 是本地时间与源时间的偏差。

3. 优点

  • 启动快、收敛快,特别适合不稳定的网络环境
  • 处理大时间偏差能力强,自动执行阶跃或快速调整
  • 虚拟机和动态网络中表现更优
  • 资源占用低
  • 配置灵活,支持 NTPPTP
  • chronyc 提供强大实时控制能力

4. 缺点

  • 相比 ntpd,在某些极端稳定网络下长期稳定性可能略逊(但差距极小)
  • 历史不如 ntpd 悠久(但已是主流且默认选择)

三、systemd-timesyncd

1.原理

*   systemd 生态提供的轻量级 SNTP (Simple NTP) 客户端
*   只实现 NTP 客户端的基本功能,不支持作为 NTP 服务器
*   使用 timedatectl 命令管理。
*   设计目标是提供基本的时间同步,适合桌面或不需要高精度/复杂配置的系统
*   同步间隔较长(通常几分钟一次)

2.安装与配置 (systemd 自带)

# 通常默认已安装并启用
# 主配置文件:/etc/systemd/timesyncd.conf
sudo vim /etc/systemd/timesyncd.conf

示例配置片段

[Time]
# 指定 NTP 服务器
NTP=ntp.aliyun.com time1.cloud.tencent.com
# FallbackNTP=0.centos.pool.ntp.org
# 重启服务
sudo systemctl restart systemd-timesyncd# 查看状态
timedatectl status
  • timedatectl status 输出中包含:
System clock synchronized: yes
NTP service: active
RTC in local TZ: no

3. 优点

  • 极其轻量级,零额外依赖
  • 集成于 systemd,管理统一 (timedatectl)
  • 配置简单

4. 缺点

  • 功能简陋:仅作客户端,不支持服务器模式、复杂过滤、频率漂移补偿等
  • 精度和鲁棒性低于 ntpdchronyd
  • 同步间隔长,不适合高精度场景
  • 无法精细监控

四、手动同步工具

1.ntpdate`(已废弃,不推荐)

  • 原理
    • 一次性查询 NTP 服务器并立即阶跃 (step) 调整系统时间
  • 操作
 sudo ntpdate ntp.aliyun.com
  • 缺点:
    • 中断性:阶跃调整导致时间跳变,可能引发应用错误(日志混乱、交易失败)
    • 精度差:单次测量易受网络抖动影响
    • 无持续补偿:执行后即结束
    • ntpd/chronyd 冲突:不能同时运行
  • 强烈建议避免在生产环境使用。如需阶跃调整,优先使用:
sudo chronyc makestep     # Chrony 手动阶跃
sudo ntpd -gq            # ntpd 在启动前强制同步 (需先停止 ntpd 服务)

2. date 命令

  • 原理
    • 手动设置系统时间
  • 操作
sudo date -s "2024-04-15 14:30:00"  # 设置具体时间
sudo date +%T -s "14:30:00"          # 仅设置时间 (保留日期)
  • 缺点
    • 完全手动,精度依赖操作者,无网络同步能力。仅用于临时调试或初始化

五、关键操作与注意事项

1. 防火墙

  • NTP 使用 UDP 123 端口
  • 确保防火墙允许出站访问 NTP 服务器
sudo firewall-cmd --add-service=ntp --permanent
sudo firewall-cmd --reload

2. 硬件时钟 (RTC) 同步

  • 系统时间 (clock) 在重启后从硬件时钟加载——确保两者一致
# 将当前系统时间写入硬件时钟
sudo hwclock --systohc
# 查看硬件时钟时间
sudo hwclock --show
  • ntp.conf (使用 ntpd) 或 chrony.conf (使用 chronyd 并设置 rtcsync) 中配置,服务会自动定期同步

3. 时区设置

  • 时间同步解决的是 UTC 时间问题——显示时间需正确设置时区
# 列出可用时区
timedatectl list-timezones# 设置时区 (如 Asia/Shanghai)
sudo timedatectl set-timezone Asia/Shanghai# 检查
timedatectl

4. 服务选择建议

  • 绝大多数 CentOS 7 服务器:首选 chronyd (默认且优秀)
  • 需要非常传统或特定 NTP 功能/生态:考虑 ntpd
  • 轻量级桌面/简单设备:systemd-timesyncd 足够

总结

1.对于 CentOS 7 服务器环境,chronyd 是最佳、最推荐的时间同步解决方案,平衡了速度、精度、资源消耗和网络适应性
2.除非有特定兼容性要求,否则无需使用 ntpd
3.systemd-timesyncd 仅适用于要求极低的场景
对比表

特性ntpd (NTP)chronyd (Chrony)systemd-timesyncdntpdate (废弃)
定位成熟稳定的 NTP 实现现代、快速、适应性强的默认工具轻量级 SNTP 客户端一次性时间设置工具
启动/收敛速度较慢极快一次执行
网络适应性稳定网络好不稳定/动态网络极佳一般依赖单次网络质量
时间偏差处理主要靠渐进 (slew),大偏差需手动自动阶跃或快速调整 (slew/step)阶跃调整强制阶跃调整
精度高 (尤其虚拟化)一般低 (单次测量)
资源占用中等极低执行时占用
作为 NTP 服务器支持支持不支持不支持
配置复杂度中等中等简单简单
监控工具ntpq, ntpstatchronyctimedatectl
推荐场景传统环境/特定需求默认选择/服务器/虚拟机桌面/简单设备避免使用
http://www.lryc.cn/news/607378.html

相关文章:

  • iPhone 恢复出厂设置是否会删除所有内容?
  • iPhone查看App日志和系统崩溃日志的完整实用指南
  • 用落霞归雁的思维框架推导少林寺用什么数据库?
  • Syzkaller实战教程6:[重要]初始种子加载机制剖析第二集
  • 使用 Docker 部署 Label Studio 时本地文件无法显示的排查与解决
  • 无人机自动跟随模块技术分析
  • Docker 实战 -- Nextcloud
  • 【05】VM二次开发——模块参数配置--带渲染/不带渲染(WinForm界面调用 模块参数配置)
  • Java 日期时间处理:分类、用途与性能分析
  • 前端学习日记(十七)
  • Ant 构建java项目
  • FastDDS (SharedMemory)
  • webpack面试题及详细答案80题(41-60)
  • C++ 前缀和、双指针
  • Node.js中Buffer的用法
  • 嵌入式第十七课!!!!位运算!!!
  • 考取锅炉司炉工证需要学习哪些专业知识?
  • Linux 用户与组管理:从配置文件到实操命令全解析
  • golang的函数
  • YOLO V11 + BotSort行人追踪定位项目
  • 风光储并离网切换仿真模型(下垂控制一次调频)
  • 详解K8s集群搭建:从环境准备到成功运行
  • 【问题思考总结】CART树如何剪枝?从CART树的生成到剪枝以及为什么CTt一定小于Ct?【图文】
  • 在多租户或多服务共享 Redis 时,如何做逻辑隔离或权限控制?
  • 【数据结构】-----排序的艺术画卷
  • ESD监控系统确保工厂生产设备的静电安全
  • 浏览器【详解】内置Observer(共五种,用于前端监控、图片懒加载、无限滚动、响应式布局、生成安全报告等)
  • cesium FBO(四)自定义相机渲染到Canvas(离屏渲染)
  • 开源工具FossFLOW,绘制技术图表
  • 嵌入式GPU图像渲染工具全景实用指南(i.MX8MP平台)