同步时间,为什么我选 Chrony 而不是 NTP ?
初识 chrony
chrony 是网络时间协议(Network Time Protocol )的通用实现
它不但可以提供保持系统时间与 NTP 时钟服务器同步的服务,还能作为 NTP 服务器对其他服务器提供时间同步服务
chrony 特点:
任何情况下都能稳定良好运行(例如不稳定的网络中、不稳定的系统中或者虚拟机环境中)
精度高(精度通常以几十微秒为单位)
开源(白嫖多香)
官方文档:https://chrony.tuxfamily.org/index.html
chronyc & chronyd
chrony 有两个核心组件:
chronyd
守护进程,主要用于调整内核中运行的系统时间和时间服务器同步
chronyc
命令行界面程序,让用户能够对 chronyd 的性能进行监控以及改变各种参数
安装
从 Centos 7.x 开始的最小发行版中都已经预装并开启了 Chrony,如果你的系统没有安装,可以用下面命令进行安装
安装完毕后,使用下面命令来查看运行状态

chronyc 命令

常见 OPTION

常见 COMMAND
显示系统时钟性能的参数

显示时间同步源


查看当前系统的时间同步源状态信息(例如漂移率和偏移估算过程)

查看时间同步源的状态

chrony 配置
配置文件路径:/etc/chrony.conf
一些常用的配置项
server
假设你的 NTP 服务器名字为:haha.example.net、hehe.example.net
那么在配置文件里内容如下:

iburst:在头四次 NTP 请求以 2s 或者更短的间隔;minpoll x 指定最小的轮询间隔,默认值是 6,代表 64s;maxpoll x 默认值是 9,代表 512s
prefer,表示优先级最高,客户端会优先与添加了 prefer 字段的 时间同步源进行时间同步
driftfile

chrony 会根据实际时间来修正系统时间,而这个修正的值(即系统时钟相对于实时时间获得或失去时间的速率)会存放在一个指定文件里面,由 driftfile指定文件路径

rtcsync
rtcsync 表示启动内核实时时钟同步(RTC)
在 Linux 系统中,内核每 11 分钟执行一次 RTC 拷贝来同步时钟
makestep
通常情况下,chrony 会通过减缓或加快时钟来逐渐调整系统时间
但是 chrony 首次启动的时候,发现系统时间与实际时间偏差很大,以至于需要花费很长时间来纠正系统时间
而 makestep 字段可以使 chrony 跳跃式调整系统时间

表示在头三次校正时间的时候,如果发现时间偏差超过 1.0 s,就跳跃式校正,而非逐渐式
logdir
指定 chrony 日志文件路径

Why chrony and not NTP
我们知道,chrony 和 ntpd 都是网络时间协议的两种不同实现方式
在简单介绍完 chrony 的相关内容之后,我们回到文章题目:为什么用 chrony 而不是 NTP?
首先看下它们时间同步的准确性
以下是 chrony 官网中 chronyd 和 ntpd 的时间同步准确性详细对比
其他维度对比详情请到官网上查看



可以看到,chrony 具有更精确的时间准确性,精度更高
除此之外,我们来看下其他比较


可以看到,chrony 可以随机间歇性校准时间,而 NTP 需要定期轮询才能正常工作
而且 由于有更小的时间轮询间隔,chrony 可以更快的同步时钟
总结:
- chrony 具有更精确的时间准确性,精度更高,同步时间的速度更快,从而最大程度的减少时间和频率误差
- chrony 可以随机间歇性校准时间,而 NTP 需要定期轮询才能正常工作,因此 chrony 具备间歇性网络连接的系统仍然可以快速同步时钟
- chrony 对时间的校准是连续的,通过从而最大程度的减少时间和频率误差;而 ntp 需要搭配 crontab 来定时调整时间,会出现间断
- chrony 能够快速适应时钟速率的突然变化(例如,晶体振荡器的温度变化)。而 NTP可能需要很长时间才能再次稳定下来
- chrony 能够在网络拥堵的情况很好地执行
- chrony 占更小的内存,更加的轻量,而且只在必要时唤醒 CPU

同步时间,为什么我选 Chrony 而不是 NTP ?的更多相关文章
- Linux系列(40) - 自动同步时间chrony
前言 Centos8开始取消了ntp同步时间,改为chrony同步 chrony工具安装 yum -y install chrony 修改配置文件 将配置文件中的同步服务器修改为国内的时间服务器(推荐 ...
- linux用rdate命令实现同步时间
用rdate命令实现同步时间 前两天说到用ntp时间服务器和ntpdate命令同步时间,今天简单记录下用rdate同步时间 http://blog.csdn.net/wyzxg/archive/201 ...
- Linux自动同步时间
一.安装时间同步工具 yum -y install ntp 二.同步时间 1.修改时区 cp -y /usr/share/zoneinfo/Asia/Shanghai /etc/localtime v ...
- centos修改时区,同步时间
查看当前系统时区 ls -la /etc/localtime 查看支持的时区 timedatectl list-timezones # 查看所有时区 timedatectl list-timezone ...
- Linux自动同步时间的方法
介绍两种同步linux系统的时间方法: (1) 开启ntpd服务,即配置ntp服务器实现时间同步. (2) 利用ntp客户端程序,即ntpdate同步时间. 注意:因为ntp服务器本来就会与上层时间服 ...
- CentOS7安装chrony替代ntp同步时间
Chrony是一个开源的自由软件,它能保持系统时钟与时钟服务器(NTP)同步,让时间保持精确.它由两个程序组成:chronyd和chronyc:chronyd是一个后台运行的守护进程,用于调整内核中运 ...
- ntp-redhat 同步时间配置
1. 选作一个机器作为ntp 服务端,例如 ip 为192.168.0.1 1)安装 ntp服务 yum install ntp 2) 修改ntp.conf 文件 vi /etc/ntp.conf 注 ...
- 转载:linux同步时间信息
Linux - CentOS7上的时间同步 1. 时区的概念 1.1 时区简介 地球是自西向东自转,东边比西边先看到太阳,东边的时间也比西边的早.东边时刻与西边时刻的差值不仅要以时计,而且还要以分和秒 ...
- Centos7部署ntp服务器同步时间以及直接将本地时间同步为北京时间
一.查看配置 查看时区列表: timedatectl list-timezones|grep Asia 查看当前时间: date 查看当前设置: [root@localhost ~]# timedat ...
- 同步时间linux
针对对时间要求精确度高的服务器 1.安装时间服务器yum install ntp 2.同步时间ntpdate time.nist.gov 3.设置计划任务每隔10分钟同步一次 */10 * * * * ...
随机推荐
- Modbus转Profinet 网关 TS-180
产品简介 实现 PROFINET 网络与串口网络之间的数据通信,三个串口可分别连接具有 RS232 或 RS485 接口的设 备到 PROFINET 网络.即将串口设备转换为 PROFINET 设备. ...
- Python 中的单下划线和双下划线
哈喽大家好,我是咸鱼 当我们在学习 Python 的时候,可能会经常遇到单下划线 _ 和双下划线 __ 这两种命名方式 单下划线 _ 和双下划线 __ 不仅仅是只是一种简单的命名习惯,它们在 Pyth ...
- JavaWeb项目练习(学生选课管理系统)一
打算做一个选课管理系统,作为期末的复习. 上需求 2.1 页面要求 (1)系统可以通过浏览器直接访问:(1分) (2)各个功能页面整体风格统一:(2分) (3)首页为用户登录页面,管理员.教师.学生三 ...
- 掌握这些,轻松管理BusyBox:如何交叉编译和集成BusyBox
在嵌入式系统中,由于设备的资源限制,需要开发人员寻找一种轻量.小型且使用广泛的工具集.而 BusyBox 就是这样一个在嵌入式系统中非常实用的工具集.本文将介绍如何在 Ubuntu 22.04 平台上 ...
- Aignize第一期完善产品逻辑+类图说明书
Aiganize产品说明+拟类图(第一期) ·附图: 此应用由: 前端:微信小程序前端+vue3后台管理系统后端:Springboot+Mysql 服务器:后端服务器+AI交互服务器 整个应用流程大致 ...
- 如何在 PyQt 中实现异步数据库请求
需求 开发软件的时候不可避免要和数据库发生交互,但是有些 SQL 请求非常耗时,如果在主线程中发送请求,可能会造成界面卡顿.这篇博客将会介绍一种让数据库请求变得和前端的 ajax 请求一样简单,且不会 ...
- 如何用java的虚拟线程连接数据库
我觉得这个很简单 首先确保你idea支持jdk21. 然后把idea编译成的目标字节码设置为21版本的 然后编写代码. 创建虚拟线程的方式有: Runnable runnable = () -> ...
- Codeforces Round 906 (Div. 2)A-E1
A. Doremy's Paint 3 记数组中数的种类数为\(k\),当\(k=1\)时,答案为\(yes\):当\(k=2\)时,记两个种类的数的个数差为\(d\),当\(d≤1\)时,答案为\( ...
- 使用.NET Core接入飞书AI
飞书AI接入教程 首先,准备俩个账号:ChatGPT账号.飞书账号. 飞书账号请自行注册,访问链接 www.feishu.cn/ 即可登录. 第一步,飞书进入开发者平台.点击创建应用. 填写应用名称和 ...
- ASR项目实战-构建Kaldi
准备工作 安装构建时依赖的基础软件 软件清单如下: bzip2 python3 automake libtool cmake gcc g++ gfortran git subversion 不同平台安 ...