这个问题与这个问题和这是我之前在 serverfault 上问过的这个问题。
根据我之前的问题,我有兴趣以快速(理想情况下少于一秒)、同步(如果过程以 0 状态完成,则时间应该同步)和稳健的方式同步我机器上的时间(这里的“稳健”意味着只要我们收到来自 ntp 服务器的响应,时间就应该根据响应进行设置)。ntp
在此快速初始同步之后,我将在后台运行。
使用ntpdate
似乎太不稳定,而且无论如何都不推荐(我偶尔会收到“无可用服务器错误”,我认为主要是由于与 ntp 服务器不一致,而不是由于无法访问 ntp 服务器)。但是,它的一个优点是它ntpdate
有一个选项-p
,让我可以将设置时间所需的时间缩短到几毫秒(当它工作时)。
使用sudo ntpd -gq
,正如前面的问题所建议的那样,似乎可以使时钟同步更可靠,但在我的计算机上至少需要 7-8 秒,大概是因为ntpd
正在采集多个样本,中间有睡眠时间。更糟糕的是,ntpd
通常会挂起几分钟才能成功退出。我不确定为什么会发生这种情况,因为 ntp 服务器在整个时间范围内都可以访问并响应请求。
因此,我正在寻找一种方法,希望能够加快使用 同步机器时钟所需的时间ntpd -gq
,并且我愿意牺牲几毫秒的初始时钟精度以实现更快的时钟同步。我愿意做出这种牺牲的原因是同步是引导过程的一部分,我每天运行多次,每次等待 ntp 运行 8 秒到几分钟的时间会减慢该过程(以至于我别无选择,只能接受 的ntpdate
快速但已弃用且不可靠的行为)。
有没有办法实现可靠的快速性能ntpd
?
编辑:这是我的 ntp.conf(如果您对的位置感到好奇server
,它是在删除所有现有服务器后以编程方式附加到文件中的):
# /etc/ntp.conf, configuration for ntpd; see ntp.conf(5) for help
driftfile /var/lib/ntp/ntp.drift
# 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 enable
filegen clockstats file clockstats type day enable
# Specify one or more NTP servers.
# Use servers from the NTP Pool Project. Approved by Ubuntu Technical Board
# on 2011-02-08 (LP: #104525). See http://www.pool.ntp.org/join.html for
# more information.
# Use Ubuntu's ntp server as a fallback.
# Access control configuration; see /usr/share/doc/ntp-doc/html/accopt.html for
# details. The web page <http://support.ntp.org/bin/view/Support/AccessRestrictions>
# might also be helpful.
#
# Note that "restrict" applies to both servers and clients, so a configuration
# that might be intended to block requests from certain clients could also end
# up blocking replies from your own upstream servers.
# By default, exchange time with everybody, but don't allow configuration.
restrict -4 default kod notrap nomodify nopeer noquery
restrict -6 default kod notrap nomodify nopeer noquery
# Local users may interrogate the ntp server more closely.
restrict 127.0.0.1
restrict ::1
# Clients from this (example!) subnet have unlimited access, but only if
# cryptographically authenticated.
#restrict 192.168.123.0 mask 255.255.255.0 notrust
# If you want to provide time to your local subnet, change the next line.
# (Again, the address is an example only.)
#broadcast 192.168.123.255
# If you want to listen to time broadcasts on your local subnet, de-comment the
# next lines. Please do this only if you trust everybody on the network!
#disable auth
#broadcastclient
server pool.ntp.org
答案1
当您发布配置时,事情就很简单了:
改变:
server pool.ntp.org
到:
server 0.COUNTRY-CODE.pool.ntp.org iburst
server 1.COUNTRY-CODE.pool.ntp.org iburst
server 2.COUNTRY-CODE.pool.ntp.org iburst
server 3.COUNTRY-CODE.pool.ntp.org iburst
国家代码为 us / ca / uk / fr
这个响应的核心是 iburst,如果一个服务器无法访问,则额外的两个服务器线路允许设置时钟。
还要安装 fake-hwclock,这样时间在重启后会保留下来。每次机器启动时,时间不会都是 1970 年。
更新:我看到了你的回答。为什么不运行本地 ntp 服务器,这样可以非常快速地设置时间,而你不必担心连接到互联网上的 ntp 服务器?