NTP时间同步需要很长时间

NTP时间同步需要很长时间

我使用 Raspberry Pi 3,需要在重新启动系统后通过 ntp 更新时间。

它应该通过带有 dhcp 的 wifi 进行更新。一般来说它可以工作,但是同步需要大约。半个小时,我不明白为什么。

当我想手动启动 ntp 服务时

>>sudo /etc/init.d/ntp restart

它说“好的”,但系统什么也没做 - RTC 上仍然显示错误的时间。

您知道可能是什么问题吗?

另一个信息是,Pi 以只读模式运行...但如果它没有写访问权限就无法工作,那么半小时后它就不会更新,不是吗?

更多细节:

要完成我的问题,这里是 ntp.conf:

# /etc/ntp.conf, configuration for ntpd; see ntp.conf(5) for help

Driftfile /var/lib/ntp/ntp.drift

Statistics loopstats peerstats clockstats
Filegen loopstats file loopstats type day enable
Filegen peerstats file peerstats type day enable
Filegen clockstats file clockstats type day enable

...

Server 0.de.pool.ntp.org iburst
Server 1.de.pool.ntp.org iburst
Server 2.de.pool.ntp.org iburst
Server 3.de.pool.ntp.org iburst

Server 127.127.1.0 #local clock
Fudge 127.127.1.0 stratum 10

...

扩展我对我的项目的解释。我想使用 Pi 作为 NTP 服务器。第一个问题是 RTC 在重新启动后或当 Pi 关闭时“失控”——尤其是长时间关闭。这就是为什么我有这样的想法,Pi 应该首先作为 NTP 客户端来设置 RTC,之后 Pi 需要成为设备的 NTP 服务器,该设备通过以太网与 Pi 相连。所以我通过Wifi连接Pi来获取当前时间。正如我已经说过的,它通常有效,但需要太多时间。

然后我想用我之前发布的这个命令手动进行同步。我的想法是作为一个 cronjob 来执行此操作,但存在下一个问题: 1. Pi 忽略了该命令; 2. cronjob 也会被忽略,或者在重新启动后被删除。

但我想一步一步来,我想解决的第一个问题是减少同步时间。

我希望您现在对我的情况有更好的了解......

您需要更多详细信息吗?

新信息:2018 年 2 月 1 日

好吧,我现在有了我想要的解决方案,但是有一种我不明白的行为。配置是正确的。不过,我使用板载 WiFi 通过 NTP 服务器同步系统时间,该服务器是我在 ntp.conf 中配置的。我使用以太网(有线 LAN)作为有线设备到 RPi 的 NTP 服务器。这里是IP设置:

WLAN (DHCP): 192.168.1.x
Ethernet (static): 192.168.10.10

我将两个接口放在不同的网络中,因为否则只有一个连接可以工作 - 但实际上为什么呢?这就是主要问题,为什么同步花了这么长时间。当我用本地时钟注释掉该行时

Server 127.127.1.0

然后网络同步立即生效...为什么会发生这种情况?

答案1

rpi 没有 RTC,因此它总是在 1970 年 1 月 1 日启动 - 让服务器和 NTP 缓慢且增量同步的时间更长;因此,默认情况下,在纠正 NTP 与系统之间的差异之前,NTP 不会开始正常运行。

我将添加到您的ntp.conf文件作为第一行(它必须是第一行):

tinker panic 0

建议对虚拟机进行此设置物联网设备。

Tinker Panic - 指定恐慌阈值(以秒为单位),默认为 1000 秒。如果设置为零,则禁用恐慌健全性检查,并且将接受任何值的时钟偏移。

我还会考虑购买 RTC,因为它很便宜,特别是如果您打算进行没有互联网连接的项目。看hwclock 无法打开 rtc 文件

答案2

通过将“flag1 1”添加到 /etc/ntp.conf 中的软糖行,我解决了这个问题。我们使用 GPS 来设置时间。如果系统时钟电池耗尽,系统将无法在正确的时间启动。我们需要NTP来快速修复它。这是我们的 /etc/ntp.conf 文件:

# "flag1 1" means skip the difference limit check and fix the time even if it is far off.
# If the battery for the system clock fails the system clock will start with a default time.
# The date will be years off, more than the sanity check limit, we need for ntp to correct the time anyway.
#
# GPS Serial data reference
server 127.127.28.0 minpoll 4 maxpoll 4 true
fudge 127.127.28.0 time1 0.0 refid GPS flag1 1

# GPS PPS reference 
server 127.127.28.1 minpoll 4 maxpoll 4 prefer true
fudge 127.127.28.1 refid PPS flag1 1

driftfile /var/lib/ntp/drift

# By default, exchange time with everybody, but don't allow configuration.
restrict -4 default kod notrap nomodify nopeer noquery limited
restrict -6 default kod notrap nomodify nopeer noquery limited

# Allow unrestricted acces from the localhost
restrict 127.0.0.1 mask 255.255.255.0
restrict -6 ::1

# Enable this if you want statistics to be logged.
statsdir /var/log/ntpstats/

statistics loopstats peerstats clockstats
filegen loopstats file loopstats type day enable
filegen peerstats file peerstats type day disable
filegen clockstats file clockstats type day enable

我在这里找到了这个解决方案:NTP文档

答案3

使用 ntpdate 实用程序作为一次性启动实用程序,以使时钟足够接近以供 ntpd 管理。

如果您的发行版有它,请检查 chrony RPM 包;它比传统的 NTP 更容易管理。

相关内容