慢性文档警告
注意:某些软件会受到系统时间跳跃的严重影响。(这就是 chronyd 通常使用 slewing 的原因。)文档
但文档没有给出示例。有哪些软件会受到严重影响?操作系统或任何后台进程是否面临风险?
是否有一种现有的机制可以在在线时将 linux 系统与 NTP 同步,并在离线时与可预测的漂移 RTC 同步?
我们操作远程“收集器”:收集和时间戳传感器数据的嵌入式 Linux 系统。我们需要他们的时钟误差保持在相当小的范围内,比如低于 5 秒。通常我们使用 NTP 来同步他们的时钟,只要系统在线,就可以正常工作。
问题是一些收集器的上行链路非常糟糕,可能会中断数小时、数天甚至数周。这不会停止本地数据收集,但如果没有 NTP,Linux 系统时钟漂移严重且不可预测。
OTOH,硬件的 RTC 漂移也很大,但速率恒定。RTC 漂移率因板而异,但每块板都是恒定的,并且可以测量。
我想我们需要的是一种执行以下操作的机制:
对于“机制”,我指的是一些维护良好、记录在案的软件和/或配置,可以处理“在线”与“离线”两种状态,确保系统时钟与正确的时间源(ntp 与 ntp 与 ntp 同步)。 rtc),检测状态变化,并校正 RTC 漂移。无论是作为特殊的 ntpd 配置/插件、作为单独的守护程序、作为 cron 作业还是其他方式实现,都没有多大关系。
我看过Chrony,但根据它的文档,它试图预测系统时钟的漂移,在我们的例子中,它的漂移比 RTC 更难以预测。Chrony 似乎只使用 RTC 来保持重新启动的时间。
(1) 注意 ntpd 激活内核的“11 分钟模式”(每 11 分钟从系统时钟更新 rtc)。当前的内核和 ntpd 似乎没有办法阻止 11 分钟模式。因此,任何 rtc 漂移信息在 ntpd …
Centos 7.0
chronyc (chrony) 3.1 版 (+READLINE +IPV6 +DEBUG)
我想找到一种方法来强制 chronyd 立即更改硬件时钟而无需等待。
该程序chronyd目前正在我的机器上运行:
[root@localhost ~]# ps -ef | grep chronyd
chrony 599 1 0 21:59 ? 00:00:00 /usr/sbin/chronyd
root 6710 4779 0 22:31 pts/0 00:00:00 grep --color=auto chron
Run Code Online (Sandbox Code Playgroud)
chronyd实际上在文件中是这样配置的/etc/chrony.conf:
# Record the rate at which the system clock gains/losses time.
driftfile /var/lib/chrony/drift
# Allow the system clock to be stepped in the first three updates
# if its offset is larger …Run Code Online (Sandbox Code Playgroud) # timedatectl输出
Local time: Tue 2020-10-06 13:35:31 PDT
Universal time: Tue 2020-10-06 20:35:31 UTC
RTC time: Tue 2020-10-06 20:35:30
Time zone: America/Los_Angeles (PDT, -0700)
System clock synchronized: no
NTP service: active
RTC in local TZ: no
Run Code Online (Sandbox Code Playgroud)
/etc/chrony.conf是 RHEL 8 中的默认设置(带有预配置的池)。
# chronyc sources输出
210 Number of sources = 8
MS Name/IP address Stratum Poll Reach LastRx Last sample
===============================================================================
^? excalibur.prolixium.com 0 9 0 - +0ns[ +0ns] +/- 0ns
^? paladin.latt.net 0 9 0 - +0ns[ +0ns] …Run Code Online (Sandbox Code Playgroud) 我有两个 NTP 层 3 服务器正在运行,并且想要创建一个简单的检查,我可以判断其中任何一个服务器的时间是否漂移并警告它没有与公共层 2 服务器正确同步。
我的第一个想法是从多个第 2 层服务器中提取时间,并将该时间与我的 ntp 服务器发送的时间进行比较。然后提醒漂移是否超过 X delta。
是否有更标准的方法或更好的方法来验证 NTP 服务器发送的时间是否正确?
我已将 Chrony 设置为与 4 个 NTP 服务器(下面的配置文件)同步。当我运行chronyc tracking和 时chronyc sources,看起来我的机器为 NTP 连接的服务器不正确。当我询问正在跟踪的服务器及其使用的源时,我希望看到我在 chronyd.conf 文件中指定的服务器列表。
追踪:
$ chronyc tracking
Reference ID : 216.152.240.220 (216.152.240.220)
Stratum : 3
Ref time (UTC) : Thu Feb 18 19:05:11 2016
System time : 0.000564536 seconds fast of NTP time
Last offset : +0.000280794 seconds
RMS offset : 0.000322653 seconds
Frequency : 19.616 ppm fast
Residual freq : +0.003 ppm
Skew : 0.053 ppm
Root delay : 0.039604 seconds
Root dispersion : …Run Code Online (Sandbox Code Playgroud) 您好,目前我有一个本地 ntp 服务器(chrony)和一个 ntp 客户端(chrony),它们都在工作,但是当我尝试将 ntp 服务器时间更改为从当前时间减去 6 年时。ntp 客户端无法与其同步,它只会在 syslog 上说:
Jan 9 17:29:11 localhost chronyd[9192]: 系统时钟错误 6780812.328260 秒,调整开始
ntp 客户端 (chrony) /etc/chrony.conf 是默认配置,除了服务器指向我的本地 NTP 服务器 (chrony)。这是我的配置
# Use public servers from the pool.ntp.org project.
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
#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
server local.ntp.server iburst
# Ignore stratum in source selection.
stratumweight 0
# Record the rate at which the system clock gains/losses time.
driftfile /var/lib/chrony/drift
# …Run Code Online (Sandbox Code Playgroud) 我正在使用 chronyd 设置时间服务器,但无法同步。
# chronyc sources
210 Number of sources = 5
MS Name/IP address Stratum Poll Reach LastRx Last sample
===============================================================================
^? smtp.visionnet.us 0 10 0 10y +0ns[ +0ns] +/- 0ns
^? nist1-lnk.binary.net 0 10 0 10y +0ns[ +0ns] +/- 0ns
^? c-73-98-218-154.hsd1.ut.c 0 10 0 10y +0ns[ +0ns] +/- 0ns
^? clock.xmission.com 0 10 0 10y +0ns[ +0ns] +/- 0ns
^? time-c.timefreq.bldrdoc.g 0 10 0 10y +0ns[ +0ns] +/- 0ns
Run Code Online (Sandbox Code Playgroud)
几个小时后,它仍然无法同步。
但是,如果我在具有相同 ntp 服务器的同一主机上配置 ntpd,它会立即同步:
# ntpq -p …Run Code Online (Sandbox Code Playgroud) 我们使用 chrony 来将 Red Hat (7.2) 服务器与 NTP 服务器同步。
为此,我们配置了logdir /var/log/chronyinchrony.conf并通过 重启了 chrony systemctl restart chronyd。
但该文件夹仍然/var/log/chrony是空的,没有任何日志。
这种行为的原因可能是什么?
我的任务是重建一个 LAN 服务器,该服务器充当数百台客户端计算机的 NTP 服务器。不幸的是,它是在虚拟机上,正如诸如在虚拟机中运行 NTP 服务器的限制是什么?这远非理想。
然而,在当前情况下,这就是我必须处理的问题,直到依赖该服务器的数百台机器在未来的某个地方被重新配置为更强大的 NTP 设置。
幸运的是,客户端不依赖毫秒精度。我一直计划在新服务器上运行 Chrony,并将其配置为使用四个本地 2 层服务器。
我是 NTP 服务的新手,也是 Chrony 的新手。您认为哪些服务器端设置对于这种情况至关重要?首先,考虑到在虚拟机上运行 NTP 服务器的基本限制,我们的目标是最大限度地减少不准确性。