【Chrony】一个多功能的NTP实现

在现代的计算机系统中,准确的时间同步对于许多关键应用和系统的正常运行至关重要。Linux操作系统提供了多种时间同步工具,其中Chrony是一款备受推崇的工具,为Linux系统提供了更准确、更稳定的时间同步功能。本文将介绍Chrony的工作原理、优点以及如何使用它来提升时间同步的精确性和可靠性。

Chrony 是一个多功能的 NTP (Network Time Protocol) 实现,类 Unix 系统上 NTP 客户端和服务器的替代品。它可以通过 NTP 服务或者类似 GPS 时钟接收器的硬件级参考时钟来同步系统时钟,具有更好的时钟准确度,并且对于那些间歇性互联网连接的系统很有帮助。Chrony 是免费开源的,并且支持 GNU/Linux 和 BSD 衍生版(比如:FreeBSD、NetBSD)、macOS 和 Solaris 等。

一、Chrony的工作原理

Chrony通过使用NTP协议与远程时间服务器进行通信,获取准确的时间信息,并根据网络延迟和时钟偏移进行时间校正。与传统的NTP工具相比,Chrony采用了一种称为渐进线性补偿(PLC)的算法,能够更准确地估算系统时钟的偏移和漂移,从而提供更精确的时间同步。

二、Chrony的优点

高准确性:Chrony通过综合考虑网络延迟和时钟偏移等因素,能够提供比传统NTP更高的时间同步准确性。尤其在移动设备或不稳定网络环境下,Chrony的表现更加出色。

快速时间同步:由于采用了先进的算法和优化技术,Chrony能够在短时间内快速将系统时钟调整到正确的时间,减少时间调整的延迟。

稳定性:Chrony能够有效应对网络延迟、时钟漂移和临时网络中断等问题,保持时间同步的稳定性和可靠性。通过自动选择和切换时间服务器,Chrony能够在不同网络环境下灵活适应,并保持时间同步的持续性。

三、如何使用Chrony (Ubuntu 22.04)

安装Chrony

在Linux系统中,可以使用适用于对应发行版的软件包管理工具安装Chrony,并确保启动服务。

apt install chronyroot@knight:/home/knight# chronyc activity
200 OK
0 sources online
0 sources offline
6 sources doing burst (return to online)
0 sources doing burst (return to offline)
1 sources with unknown address
root@knight:/home/knight# chronyc -v
chronyc (chrony) version 4.2 (+READLINE +SECHASH +IPV6 -DEBUG)

配置Chrony

打开Chrony的配置文件(通常位于/etc/chrony.conf),根据自己的需求进行配置。可以指定时间服务器、网络限制、时钟调整策略等参数,以满足特定的时间同步要求。

...
#pool ntp.ubuntu.com iburst maxsources 4
#pool 0.ubuntu.pool.ntp.org iburst maxsources 1
#pool 1.ubuntu.pool.ntp.org iburst maxsources 1
#pool 2.ubuntu.pool.ntp.org iburst maxsources 2
...
# Use public NTP servers
server ntp.ntsc.ac.cn iburst
server cn.ntp.org.cn iburst
server time.edu.cn iburst
server time.cloud.tencent.com iburst
server ntp.tencent.com iburst
server ntp.aliyun.com iburst
server ntp.sjtu.edu.cn iburst# Use local hardware clock as backup if no response from NTP servers
local stratum 10# Allow NTP client access from local network
#allow 192.168.0.0/16# Allow NTP clients to synchronize with this server
allow all# Ignore NTP packets from outside the local network
#deny all

重启Chrony服务

使用相应的命令启动Chrony服务,并将其设置为系统启动时自动运行。可以通过命令行或系统管理工具来进行操作。

systemctl restart chrony

设置为开机启动:systemctl enable chronyd

查看服务状态

root@knight:/home/knight# netstat -nulp | grep chronyd
udp        0      0 0.0.0.0:123             0.0.0.0:*                           649840/chronyd
udp        0      0 127.0.0.1:323           0.0.0.0:*                           649840/chronyd
udp6       0      0 :::123                  :::*                                649840/chronyd
udp6       0      0 ::1:323                 :::*                                649840/chronyd

常用命令

显示系统时钟性能的参数
root@knight:/home/knight#  chronyc tracking
Reference ID    : 11FD74FD (twtpe2-ntp-002.aaplimg.com)
Stratum         : 2
Ref time (UTC)  : Mon Nov 20 09:42:40 2023
System time     : 0.000089889 seconds slow of NTP time
Last offset     : -0.000377891 seconds
RMS offset      : 0.002584661 seconds
Frequency       : 45.411 ppm slow
Residual freq   : -2.820 ppm
Skew            : 13.079 ppm
Root delay      : 0.051119432 seconds
Root dispersion : 0.002186287 seconds
Update interval : 65.2 seconds
Leap status     : Normal
查看时间同步源的状态
root@knight:/home/knight# chronyc activity
200 OK
6 sources online
0 sources offline
0 sources doing burst (return to online)
0 sources doing burst (return to offline)
1 sources with unknown address
显示时间同步源
root@knight:/home/knight# chronyc sources -v.-- Source mode  '^' = server, '=' = peer, '#' = local clock./ .- Source state '*' = current best, '+' = combined, '-' = not combined,
| /             'x' = may be in error, '~' = too variable, '?' = unusable.
||                                                 .- xxxx [ yyyy ] +/- zzzz
||      Reachability register (octal) -.           |  xxxx = adjusted offset,
||      Log2(Polling interval) --.      |          |  yyyy = measured offset,
||                                \     |          |  zzzz = estimated error.
||                                 |    |           \
MS Name/IP address         Stratum Poll Reach LastRx Last sample
===============================================================================
^? 114.118.7.163                 2   6    10   322  +2515us[+2424us] +/-  161ms
^? 1.14.61.51                    0   8     0     -     +0ns[   +0ns] +/-    0ns
^+ time.neu.edu.cn               1   6   377     3  +5227us[+5227us] +/-   23ms
^+ 106.55.184.199                2   6   377     6  -1792us[-2026us] +/-   37ms
^+ 203.107.6.88                  2   6   277     5  +4746us[+4746us] +/-   20ms
^* twtpe2-ntp-002.aaplimg.c>     1   6   377     6   -353us[ -586us] +/-   26ms
root@knight:/home/knight# chronyc sources
MS Name/IP address         Stratum Poll Reach LastRx Last sample
===============================================================================
^? 114.118.7.163                 2   7    20   324  +2515us[+2424us] +/-  161ms
^? 1.14.61.51                    0   8     0     -     +0ns[   +0ns] +/-    0ns
^+ time.neu.edu.cn               1   6   377     5  +5227us[+5227us] +/-   23ms
^+ 106.55.184.199                2   6   377     8  -1792us[-2026us] +/-   37ms
^+ 203.107.6.88                  2   6   277     7  +4746us[+4746us] +/-   20ms
^* twtpe2-ntp-002.aaplimg.c>     1   6   377     8   -353us[ -586us] +/-   26ms

结论:

Chrony是一款强大而灵活的时间同步工具,为Linux系统提供了提升时间同步精确性和稳定性的解决方案。通过使用Chrony,我们能够更好地保证系统的时间准确性,尤其在需要高精度时间同步的应用和环境下表现突出。无论是移动设备还是服务器,Chrony都是一个值得推荐和采用的时间同步工具。

常用的NTP服务器:

  • 国家授时中心NTP服务器:ntp.ntsc.ac.cn
  • 中国 NTP 快速授时服务(NTP ORG CN) cn.ntp.org.cn
  • 教育网 time.edu.cn
  • 腾讯云NTP服务器time.cloud.tencent.com / ntp.tencent.com
  • 阿里云NTP服务器ntp.aliyun.com
  • 上海交大NTP 服务器 ntp.sjtu.edu.cn

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/156278.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

亚信面试题

文章目录 2.Java基本数据类型?3.对象三大特征?4.多态和封装的含义及作用?5.方法重写和方法重载的区别?6.String/StringBuffer和StringBuilder区别?7.String常用方法有哪些?8.==和equals有什么区别?9.两个对象hashCode相同equals为true吗?10.ArrayList和LinkedList有什么…

WordPress网站迁移实战经验

前几日,网站服务器到期,换了服务商,就把我的WordPress的网站迁移到本地电脑了。方便以后文章迁移。 本次迁移网站主要经历以下几个步骤。 1.域名转出。 2.备份数据库及网站文件下载。 3.重新搭建WordPress网站。 4.网站文件及数据库导入。 下面详细介绍下每个步骤的操作…

Linux 安全 - 扩展属性xattr

文章目录 前言一、简介二、扩展属性命名空间2.1 简介2.2 security扩展属性2.3 System扩展属性2.4 Trusted扩展属性2.5 User扩展属性 三、用户空间使用3.1 setfattr/getfattr3.2 setxattr/getxattr/listxattr 参考资料 前言 一、简介 xattr - Extended attributes扩展属性是与…

【狂神说Java】redis

✅作者简介:CSDN内容合伙人、信息安全专业在校大学生🏆 🔥系列专栏 :【狂神说Java】 📃新人博主 :欢迎点赞收藏关注,会回访! 💬舞台再大,你不上台&#xff0c…

【done】剑指 Offer 53 - II:0~n-1中缺失的数字

力扣,https://leetcode.cn/problems/que-shi-de-shu-zi-lcof/description/ solution1 线性扫描,一般情况 class Solution {public int takeAttendance(int[] records) {boolean[] visited new boolean[records.length 1];Arrays.fill(visited, fals…

解压过大文件(超过4GB)传输至服务器的问题

不能在终端执行unzip指令了。 1、通过终端 7za x 文件名.zip 2、通过jupyter notebook代码来解决 import zipfilef zipfile.ZipFile("dataset.zip",r) # 压缩文件在jupyter中的位置 for file in f.namelist():f.extract(file,"./dataset") …

docker部署gitlab 12.10.6过程

docker部署gitlab 12.10.6过程 1.docker安装 docker指定版本安装【官方文档步骤】 官方文档地址:https://docs.docker.com/engine/install/centos/ # 1.安装yum工具及设置docker-ce镜像库 sudo yum install -y yum-utils# 国外的镜像下载太慢了改成阿里云镜像库 s…

pipeline传参给job

场景:pipeline实现自动部署,job实现自动测试,但是只有部署dddd环境时,才调自动测试的job,所以需要在调自动测试job时,把参数传给测试job 上一个任务会显示下一步调谁 ------------------------------------…

解决:ERR This instance has cluster support disabled

问题描述 在使用Redisson做分布式锁,连接redis时,提示以下错误: 问题定位 通过指令: cluster nodes查看,发现 出现这种提示的原因,是因为此Redis实例已经禁用了集群(默认状态下是禁用状态)。 解决 …

Flowable工作流高级篇

文章目录 一、任务分配和流程变量1.任务分配1.1 固定分配1.2 表达式分配1.2.1 值表达式1.2.2 方法表达式 1.3 监听器分配 2.流程变量2.1 全局变量2.2 局部变量2.3 案例讲解 二、候选人和候选人组1.候选人1.1 定义流程图1.2 部署和启动流程实例1.3 任务的查询1.4 任务的拾取1.5 …

Linux进程通信——消息队列

概念 消息队列,是消息的链接表,存放在内核中。一个消息队列由一个标识符(即队列ID)来标识。 特点 1.消息队列是面向记录的,其中的消息具有特定的格式以及特定的优先级。(消息队列是结构体) 2.消息队列独立于发送与接…

jemalloc 库的编译(Linux 下面)

1、从 github 上面下载源代码 2、解压到编译的目录里面去 3、安装 autoconf 工具链 4、执行 autogen.sh,成功(done)后就直接 make -j编译线程数 如果没有执行下面的配置语句编译出来的 jemalloc 库,是不能被其它程序链接C符号&…

如何制作动态表情包?一个方法快学起来

在当代的通讯工具中,动态表情包已经是人们日常交流不可缺少的一部分了。但是,很多时候网络上常见的动态表情包不能够很好表达出我们的需求时应该怎么办呢?这时候,我们可以使用gif动图制作(https://www.gif.cn/&#xf…

操作系统的运行机制--操作系统内核负责的内容

操作系统的运行机制是指操作系统如何管理和控制计算机系统的各个组成部分以实现任务调度、资源管理、进程管理、文件系统管理等功能。 操作系统内核是操作系统的核心部分,负责管理和控制计算机系统的各种硬件资源,并提供系统调用接口供应用程序使用。通…

用VS编译ROS包

扩展安装 在扩展中搜索并安装ROS、C、python、CMake和CMake Tools。 打开工作空间 文件→打开文件夹 新建功能包 右键src文件夹,选择新建功能包(通常是最后一条命令) 编译 如果需要新建终端的话,就点击下图中的加号 创建la…

14. UART串口通信

14. UART串口通信 1. UART1.1 UART 通信格式1.2 UART 电平标准1.3 I.MX6U UART 简介1.3.1 控制寄存器1 UARTx_UCR1(x1~8)1.3.2 控制寄存器2 UARTx_UCR21.3.3 控制寄存器3 UARTx_UCR31.3.4 状态寄存器2 UARTx_USR21.3.4 UARTx_UFCR 、 UARTx_UBIR 和 UARTx_UBMR1.3.5 UARTx_URXD…

【原创】CentOS7.9解决mdadm组raid阵列后resync非常慢的问题

前言 前几日我买了4块16TB的硬盘使用mdadm组了一个raid10阵列,具体如何搭建的可以看我之前的博客。 【报错记录】疯狂踩坑之RockyLinux创建Raid1镜像分区,Raid分区在重启后消失了!外加华硕主板使用Raid模式后,硬盘在系统中无法找…

【LeetCode刷题-链表】--23.合并K个升序链表

23.合并K个升序链表 方法:顺序合并 在前面已经知道合并两个升序链表的前提下,用一个变量ans来维护以及合并的链表,第i次循环把第i个链表和ans合并,答案保存到ans中 /*** Definition for singly-linked list.* public class List…

C语言的基础概念

1、编译和链接 C语⾔是⼀⻔编译型计算机语⾔,C语⾔源代码都是⽂本⽂件,⽂本⽂件本⾝⽆法执⾏,必须通过编译器翻译和链接器的链接,⽣成⼆进制的可执⾏⽂件,可执⾏⽂件才能执⾏。 C语⾔代码是放在 .c 为后缀的⽂件中的…

缓冲区的奥秘:如何模拟实现C库的FILE结构体和接口

📟作者主页:慢热的陕西人 🌴专栏链接:Linux 📣欢迎各位大佬👍点赞🔥关注🚓收藏,🍉留言 本博客主要内容模拟实现了C库内部的FILE结构体及其对应的接口然后从内…