如果服务器不用作时间源,是否有任何理由将 ntpd 同步到 Local(0)?

Vin*_*tor 6 ntpd

运行 CentOS 5.8 版

我在我修复的服务器上遇到了时间漂移问题 - 它没有同步 hwclock,因此在重新启动时 ntp 将关闭超过 1000 秒并且永远不会同步时间。

在调查问题时,我注意到 ntpd 定期与 Local(0) 同步。

当此服务器永远不会用作时间源时,是否有任何理由将 ntpd 配置为同步到 Local(0)?

“答案” - 您不需要使用 Undisciplined Local Clock,除非您想在连接到其他时间服务器失败时将此服务器用作本地时间服务器。

来自 ntpd 的日志消息:

Jul 20 03:47:49 localhost ntpd[5441]: synchronized to 110.14.8.1, stratum 3
Jul 20 04:21:06 localhost ntpd[5441]: synchronized to LOCAL(0), stratum 10
Jul 20 04:38:09 localhost ntpd[5441]: synchronized to 110.14.8.1, stratum 3
Jul 20 04:55:26 localhost ntpd[5441]: synchronized to LOCAL(0), stratum 10
Run Code Online (Sandbox Code Playgroud)

ntpd.conf:

# Use public servers from the pool.ntp.org project.
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
server 10.4.58.21
# Undisciplined Local Clock. This is a fake driver intended for backup
# and when no outside source of synchronized time is available.
server  127.127.1.0     # local clock
fudge   127.127.1.0 stratum 10
Run Code Online (Sandbox Code Playgroud)

我们将禁用本地同步,但仍然好奇为什么会发生本地同步。我们在同一个子网上放置了一个临时时间服务器,并且 ntpd 仍然同步到本地时间。(* 可能的答案:ntpdc -c sysinfo stats ntp 服务器的 startum 是 11,这比我们告诉 ntpd 用于本地的 10 更糟糕。是时候查看 ntpd 的源代码了 *)

Jul 24 17:11:32 localhost ntpdate[5432]: step time server 227.220.222.220 offset 1629.764734 sec
Jul 24 17:11:32 localhost ntpd[5434]: ntpd 4.2.2p1@1.1570-o Fri Nov 18 13:21:21 UTC 2011 (1)
Jul 24 17:11:32 localhost ntpd[5435]: precision = 1.000 usec
Jul 24 17:11:32 localhost ntpd[5435]: Listening on interface wildcard, 0.0.0.0#123 Disabled
Jul 24 17:11:32 localhost ntpd[5435]: Listening on interface wildcard, ::#123 Disabled
Jul 24 17:11:32 localhost ntpd[5435]: Listening on interface eth0 Enabled
Jul 24 17:11:32 localhost ntpd[5435]: Listening on interface lo, ::1#123 Enabled
Jul 24 17:11:32 localhost ntpd[5435]: Listening on interface lo, 127.0.0.1#123 Enabled
Jul 24 17:11:32 localhost ntpd[5435]: Listening on interface eth0, 192.12.140.55#123 Enabled
Jul 24 17:11:32 localhost ntpd[5435]: kernel time sync status 0040
Jul 24 17:11:32 localhost ntpd[5435]: frequency initialized 0.000 PPM from /var/lib/ntp/drift
Jul 24 17:14:48 localhost ntpd[5435]: synchronized to LOCAL(0), stratum 10
Jul 24 17:16:55 localhost ntpd[5435]: synchronized to 192.12.140.200, stratum 3
Jul 24 20:11:06 localhost ntpd[5435]: synchronized to LOCAL(0), stratum 10
Jul 24 20:20:50 localhost ntpd[5435]: synchronized to 192.12.140.200, stratum 3
Run Code Online (Sandbox Code Playgroud)

Bil*_*hor 1

ntpd不负责同步本地硬件时钟。通常,会提供一个程序来执行此操作。在 Ubuntu 上该程序是hwclock. 它用于在启动时设置系统日期和在关机时更新它。

我通常只将硬件时钟配置为本地 NTP 时间服务器上的时间源。如果我在客户端上配置它,我会将它们设置为更高的层,以便时间服务器在可访问的情况下保留时间权限。

如果您要ntpd与本地时钟同步,请将硬件时钟设置为 UTC,并将系统配置为在启动时期望时钟为 UTC。不幸的是,如果您双启动到 Windows,则此方法效果不佳。在这种情况下,请勿使用本地时钟作为时间源。

从你的输出看来,你有一个间歇性的外部时间源,这导致你从硬件时钟来回翻转。即使可以访问,外部时间源也可能失去其自身的同步,并且不被视为时间源。如果您有稳定的网络连接,请添加更多时间源。如果网络连接间歇性,请修复硬件时钟设置,或删除硬件时钟作为源。

事实上,您的硬件时钟在启动时偏离了 1000 秒以上,这表明可能存在以下两个问题之一:

  • 硬件时钟未设置为在启动序列期间设置系统时间的软件预期的时区。
  • 系统断电时用于保持 CMOS 运行的电池已耗尽或即将耗尽。

-g您可以通过在命令中添加该选项来解决启动时的同步问题ntpd