![当此服务器永远不会用作时间源时,是否有任何理由将 ntpd 配置为同步到 Local(0)?](https://linux22.com/image/24102/%E5%BD%93%E6%AD%A4%E6%9C%8D%E5%8A%A1%E5%99%A8%E6%B0%B8%E8%BF%9C%E4%B8%8D%E4%BC%9A%E7%94%A8%E4%BD%9C%E6%97%B6%E9%97%B4%E6%BA%90%E6%97%B6%EF%BC%8C%E6%98%AF%E5%90%A6%E6%9C%89%E4%BB%BB%E4%BD%95%E7%90%86%E7%94%B1%E5%B0%86%20ntpd%20%E9%85%8D%E7%BD%AE%E4%B8%BA%E5%90%8C%E6%AD%A5%E5%88%B0%20Local(0)%EF%BC%9F.png)
运行 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
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
我们将禁用本地同步,但仍然好奇为什么会发生本地同步。我们在同一子网上放置了一个临时时间服务器,ntpd 仍然同步到本地时间。 (* 可能的答案:ntpdc -c sysinfo stats 表明 ntp 服务器的启动值为 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 [email protected] 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
答案1
# Undisciplined Local Clock. This is a fake driver intended for backup
# and when no outside source of synchronized time is available.
如果您无法访问任何官方服务器(更多),这意味着作为后备时间源。如果您启用了漂移文件,这甚至可能使您的时间保持同步,因为漂移文件应包含针对本地时钟的实时校正值。
答案2
ntpd
不负责同步本地硬件时钟。通常,会提供一个程序来执行此操作。在 Ubuntu 上该程序是hwclock
.它用于在启动时设置系统日期并在关机时更新它。
我通常只将硬件时钟配置为本地 NTP 时间服务器上的时间源。如果我在客户端上配置它,我会将它们设置为更高的层,以便时间服务器在可访问的情况下保留时间权限。
如果您要ntpd
与本地时钟同步,请将硬件时钟设置为 UTC,并将系统配置为在启动时期望时钟为 UTC。不幸的是,如果您双启动到 Windows,则此方法效果不佳。在这种情况下,请勿使用本地时钟作为时间源。
从你的输出看来,你有一个间歇性的外部时间源,这导致你从硬件时钟来回翻转。即使可以访问,外部时间源也可能失去其自身的同步,并且不被视为时间源。如果您有稳定的网络连接,请添加更多时间源。如果网络连接间歇性,请修复硬件时钟设置,或删除硬件时钟作为源。
事实上,您的硬件时钟在启动时偏离了 1000 秒以上,这表明可能存在以下两个问题之一:
- 硬件时钟未设置为在启动序列期间设置系统时间的软件预期的时区。
- 系统断电时用于保持 CMOS 运行的电池已耗尽或即将耗尽。
-g
您可以通过在命令中添加该选项来解决启动时的同步问题ntpd
。
答案3
当本地时间源实际上不存在时,同步到本地时间源是让您的时钟失控的好方法。你通过艰难的方式发现了这一点(正如我前段时间所做的那样)。这适用于您有 GPS、原子钟或物理连接到机器的相关设备的情况。如果您没有此类硬件,请将其禁用。
答案4
如果在同一硬件上运行的其他系统同步本地时钟,则同步到本地时钟可能是个好主意。示例:在 Host1 上,VM1 运行 ntp 并同步到一些公共 ntp 服务器(例如,层 3)。在 Host1、VM2、VM3、VM4... 上运行 ntp 并同步到本地时钟。
只要 VM1 正在运行,一切都应该没问题,对吧?
恕我直言,ntp 通常是否同步硬件时钟“小步”,想到“连续”,所以在关机时不需要“hwclock -wu”。