18.3. 使用 chrony
18.3.1. 安装 chrony
chrony 套件默认安装在 Red Hat Enterprise Linux 7 的一些版本中。如果需要,请以 root 用户身份
运行以下命令:
~]# yum install chrony
chrony 守护进程的默认位置为 /usr/sbin/chronyd
。命令行工具将安装到 /usr/bin/chronyc
。
18.3.2. 检查 chronyd 的状态
运行以下命令检查 chronyd
的状态:
~]$ systemctl status chronyd
chronyd.service - NTP client/server
Loaded: loaded (/usr/lib/systemd/system/chronyd.service; enabled)
Active: active (running) since Wed 2013-06-12 22:23:16 CEST; 11h ago
18.3.3. 启动 chronyd
要启动 chronyd
,使用 root
用户身份运行以下命令:
~]# systemctl start chronyd
要确保 chronyd
在系统启动时自动启动,以 root
身份运行以下命令:
~]# systemctl enable chronyd
18.3.4. 停止 chronyd
要停止 chronyd
,以 root
身份运行以下命令:
~]# systemctl stop chronyd
要防止 chronyd
在系统启动时自动启动,以 root
身份运行以下命令:
~]# systemctl disable chronyd
18.3.5. 检查 chrony 是否同步
要检查是否同步了 chrony,使用tracking
、sources
和 sourcestats
命令。
18.3.5.1. 检查 chrony 跟踪
运行以下命令检查 chrony 跟踪:
~]$ chronyc tracking
Reference ID : CB00710F (foo.example.net)
Stratum : 3
Ref time (UTC) : Fri Jan 27 09:49:17 2017
System time : 0.000006523 seconds slow of NTP time
Last offset : -0.000006747 seconds
RMS offset : 0.000035822 seconds
Frequency : 3.225 ppm slow
Residual freq : 0.000 ppm
Skew : 0.129 ppm
Root delay : 0.013639022 seconds
Root dispersion : 0.001100737 seconds
Update interval : 64.2 seconds
Leap status : Normal
这些字段如下:
- 参考 ID
-
这是当前与计算机同步的服务器的参考 ID 和名称(或
IP
)。参考 ID 是一个十六进制数字,用于避免与 IPv4 地址混淆。 - Stratum
- stratum 代表到带有一个附加的参考时钟的计算机的距离。此类计算机是 stratum-1 计算机,因此示例中的计算机是两个跃点(即 a.b.c 是 stratum-2 并且从 stratum-1 同步)。
- ref time
- (UTC)是处理参考源中最后一次测量的时间。
- System time
-
在正常操作中,
chrony
d 从不停止系统时钟,因为时间范围的任何跳转都可能会给某些应用程序程序带来负面影响。相反,系统时钟中的任何错误都会通过稍微加快或减慢系统时钟直到错误被删除,然后返回到系统时钟正常速度来解决。这是因为,系统时钟(如使用gettimeofday()系统调用
的其他程序读取,或 shell 中的 date 命令)将不同于chronyd
对当前真实时间的估算值(这在服务器模式中运行时报告NTP
客户端)。这一行中报告的数值是因此造成的不同。 - Last offset
- 这是最后一次时钟更新中估计的本地误差。
- RMS offset
- 这是位移值的一个长期平均值。
- Frequency
-
"频率"是指如果
chronyd
没有更正系统时钟会出错的速率。它以 ppm(每百万的一部分)表示。例如,1 ppm 的值意味着,当系统的时钟认为它已提前 1 秒时,它实际上已比真实时间增长 1.000001 秒。 - Residual freq
这显示了当前所选参考源的"有效频率"。这反映了来自参考源的测量结果表示频率和当前使用频率之间的差别。
原因并不总是为零,即对频率应用平滑过程。每次从参考源进行测量并计算出新的遗留频率时,都会将这一消耗的估计准确性与现有频率值的估算准确性(参见下一个
偏移
数)进行对比。为新频率计算加权平均值,权重取决于这些准确度。如果参考源中的测量结果采用一致的倾向,则持续时间会一直趋向于零。- skew
- 这是频率上估计的错误绑定。
- Root delay
- 这是到 stratum-1 计算机的网络路径延迟总数,最终与计算机同步。根延迟值以纳秒分辨率打印。在某些极端情况下,这个值可以是负数。(这可能出现在对称对等排列中,计算机的频率不会互相跟踪,并且相对于每台计算机的往返时间而言,网络延迟非常短。)
- Root dispersion
- 这是所有计算机回滚到 stratum-1 计算机的总分散积累,最终与计算机同步。分布是由系统时钟解析、统计测量差异导致的。Root 分散值以纳秒分辨率打印。
- Leap status
- 这是闰秒状态,可以是 Normal、Insert second、Delete second 或 Not syncd。
18.3.5.2. 检查 chrony 源
sources 命令显示 chronyd
正在访问的当前时间源的信息。
可以使用可选参数 -v 来包括详细信息。在这种情况下,会输出额外的标头行显示字段含义的信息。
~]$ chronyc sources 210 Number of sources = 3 MS Name/IP address Stratum Poll Reach LastRx Last sample =============================================================================== #* GPS0 0 4 377 11 -479ns[ -621ns] +/- 134ns ^? a.b.c 2 6 377 23 -923us[ -924us] +/- 43ms ^+ d.e.f 1 6 377 21 -2629us[-2619us] +/- 86ms
这些列如下:
- M
-
这表示源的模式。
^
表示服务器,=
表示对等,#
代表本地连接的参考时钟。 - S
-
此列指示源的状态。"*"表示当前同步的
chronyd
的源。"+"表示可接受的源与所选源结合使用。"-"表示合并算法排除的可接受的源。"?"表示丢失了哪个连接或者数据包没有通过所有测试的源。"x" " 表示chronyd
认为是 假勾号( 时间与大多数其他来源不一致)。"~"表示时间似乎有太多变化的来源。"?" 条件也会在启动时显示,直到从中收集了至少三个样本。 - 名称/IP 地址
-
此时会显示源的名称或
IP
地址,或者参考时钟的引用 ID。 - Stratum
- 这显示了源的 stratum,如其最近收到的示例中所报告。Stratum 1 代表有本地附加参考时钟的计算机。与 stratum 1 计算机同步的计算机处于 stratum 2。与 stratum 2 计算机同步的计算机处于stratum 3,以此类推。
- Poll
显示源轮询率(以 2 为底数进行计算,以秒为单位)。因此,数值 6 表示每 64 秒就进行一次测量。
chronyd
会自动根据需要条件来改变轮询率。- Reach
- 这将显示源的 reach 寄存器,以一个十六进制数字代表。寄存器有 8 位,并在每次从源接收或错过的数据包时进行更新。377 表示在最后的 8 个数据传输中都收到有效回复。
- LastRx
-
这一列显示了在多久前从源中获取了最后的样本。这通常以秒为单位。字母
m
、h
、d
和y
代表分钟、小时、天和年。值为 10 年表示尚未从该源收到任何样本。 - Last sample
-
这一列显示本地时钟和最后一个测量源之间的偏差。方括号中的数字显示了实际测量的误差。这可以使用
ns
(代表 nanoseconds)、us
(代表 microseconds)、ms
(代表 milliseconds)或s
(代表秒)后缀。方括号左边的数字显示了原来的测量,经过调整以允许应用本地时钟。+/-
指示符后的数字显示了测量中的错误裕度。正偏差表示本地时钟在源前面。
18.3.5.3. 检查 chrony 源统计信息
sourcestats
命令显示目前被 chronyd
检查的每个源的偏移率和误差估算过程的信息。
可以使用可选参数 -v
来包括详细信息。在这种情况下,会输出额外的标头行显示字段含义的信息。
~]$ chronyc sourcestats
210 Number of sources = 1
Name/IP Address NP NR Span Frequency Freq Skew Offset Std Dev
===============================================================================
abc.def.ghi 11 5 46m -0.001 0.045 1us 25us
这些列如下:
- 名称/IP 地址
-
这是
NTP
服务器(或 peer)的名称或IP
地址,或者引用其他行中其它部分相关参考时钟的 ID。 - NP
- 这是服务器当前保留的样本点数。偏移率和当前偏移是通过在这些点上进行线性回退来估算的。
- NR
-
这是在上一次回滚返回后运行具有相同符号的驻留的数量。如果这个数值与样本数量相比变得太小了,意味着直线不再适合于数据。如果数量太低,
chronyd
会丢弃旧的样本并重新运行回滚直到运行次数变得可以接受。 - Span
- 这是最旧和最新样本之间的间隔。如果没有单位显示,则该数值以秒为单位。在这个示例中,间隔为 46 分钟。
- Frequency
- 这是服务器估计的遗留频率,以每百万个部分为单位。在这种情况下,相比服务器,计算机的时钟预计运行速度为 109 个部分。
- freq Skew
- 这是 Freq 上估计的错误绑定(以每百万分页表示)。
- Offset
- 这是源估计的误差。
- Std Dev
- 这是估计的示例标准偏差。
18.3.6. 手动调整系统时钟
要立即调整系统时钟,绕过单机进行的任何调整,以 root
身份运行以下命令:
~]# chronyc makestep
如果使用了 rtcfile
指令,则不应该手动调整实时时钟。随机调整会影响 chrony测量实时时钟偏移速度的需求。