Linux

关注公众号 jb51net

关闭
首页 > 网站技巧 > 服务器 > Linux > linux时间同步

linux时间同步实现方案

作者:linux行者

Linux时间同步方案对比与选择,重点推荐chrony;适用于现代Linux系统与资源受限环境;同时介绍ntpd与ntpdate的适用场景与配置迁移建议;帮助读者选择最适合的时间同步工具

linux时间同步实现方案

yum install chrony -y  
# 配置 chrony 使用国内服务器
sed -i 's/^pool.*pool.ntp.org/#&/' /etc/chrony.conf
cat >> /etc/chrony.conf <<EOF
server ntp.aliyun.com iburst
server ntp.tencent.com iburst
server ntp.ntsc.ac.cn iburst
server time1.cloud.tencent.com iburst
EOF
systemctl restart chronyd
chronyc sources -v 
chronyc makestep 

在选择 NTP(网络时间协议)方案时,需要根据系统版本、性能需求、部署场景等因素综合判断。

以下是 ntpdntpdatechrony 的对比分析,

帮助你选择最合适的方案:

一、方案对比表

维度

ntpd

ntpdate

chrony

类型

守护进程(长期运行)

一次性同步工具(非守护进程)

守护进程(新一代时间同步工具)

系统兼容性

传统 Linux 系统(如 CentOS 6、Ubuntu 14.04 及更早)

需配合 ntpd 使用,无独立功能

主流 Linux 系统(CentOS 7+/RHEL 7+、Ubuntu 16.04+ 及以上)

同步方式

渐进式微调(避免时间跳跃)

一次性强制修改系统时间

支持快速同步和渐进式微调

时间偏差处理

超过 128 秒时拒绝同步

强制同步(无论偏差大小)

自动处理大偏差(先快速同步,再渐进微调)

资源占用

较高(需持续计算时钟频率)

低(仅单次执行)

低(优化算法,适合低功耗设备)

功能特性

支持 NTP 协议全功能(分层时钟、认证等)

仅用于时间同步,无其他功能

支持 NTP/SNTP 协议,内置ntpdate功能,支持 IPv6、加密认证等

配置复杂度

配置文件(/etc/ntp.conf)较复杂,需手动管理服务器列表

无配置文件,直接调用命令

配置文件(/etc/chrony.conf)更简洁,自动发现可用服务器

动态适应性

较差(需重启服务修改配置)

强(支持运行时动态调整配置)

适用场景

传统数据中心、对时间精度要求极高的场景(如金融、电信)

仅用于初始时间校正或临时同步

通用场景(云服务器、容器环境、嵌入式设备),尤其适合时间波动大或网络不稳定的环境

二、方案选择建议

1. 优先选择chrony的场景

# /etc/chrony.conf 示例
server ntp.aliyun.com iburst  # 使用阿里云 NTP 服务器
server ntp.tencent.com iburst
allow 192.168.0.0/16          # 允许本地子网同步时间
local stratum 10              # 本地时钟作为备用时间源

2. 继续使用ntpd的场景

3.ntpdate的定位

仅作为辅助工具

ntpdate 本身无法独立实现时间同步,必须配合 ntpdchrony 使用,仅用于以下场景:

现代系统中逐渐被淘汰chrony 已内置类似功能(通过 chronyd 服务自动处理),无需单独调用 ntpdate

三、迁移建议:从ntpd切换到chrony

若你正在使用 ntpd,且系统支持 chrony,建议按以下步骤迁移:

停止 ntpd 服务

systemctl stop ntpd
systemctl disable ntpd

安装 chrony(若未预装):

CentOS/RHEL:

yum install chrony -y

Ubuntu/Debian:

apt-get install chrony -y

配置 chrony

编辑 /etc/chrony.conf,替换 NTP 服务器为国内地址(如阿里云、腾讯云),示例:

server ntp.aliyun.com iburst
server ntp.tencentyun.com iburst

启动服务并验证

systemctl start chronyd
systemctl enable chronyd
chronyc sources -v  # 查看时间源状态
timedatectl         # 检查系统时间是否同步

四、总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文