我有一个NTP服务器有一个错误的时间设置是7小时在未来(时区是改变后,机器装运,但不是时间)。服务器本身不是同步的,而是只有本地时钟。在此服务器上,超过10个客户端同步他们的时钟,从而导致整组服务器的时间不对。
我如何更改NTP服务器上的时间,使更正被关闭,并且所有客户端也将得到纠正?我首先通过"date MMDDhhmm“进行了修复测试,它允许客户端断开与服务器的连接( ntpq中服务器名前面的星号消失了)。
我不知道当我手动更改所有服务器上的时间时,所有同步服务将如何运行,将时钟设置为7小时,从而使系统拥有未来的文件。可能会有崩溃,系统为工厂生产提供服务。
发布于 2015-10-28 13:01:33
当你谈论消磨时间时,你通常是在谈论少量的时间。修复是通过调用adjtime()来执行的,或者在linux上(可能是adjtimex() )执行。
来自ntpd手册页:
-x Normally, the time is slewed if the offset is less than the step
threshold, which is 128 ms by default, and stepped if above the
threshold. This option sets the threshold to 600 s, which is
well within the accuracy window to set the clock manually.
Note: Since the slew rate of typical Unix kernels is limited to
0.5 ms/s, each second of adjustment requires an amortization
interval of 2000 s. Thus, an adjustment as much as 600 s will
take almost 14 days to complete. This option can be used with
the -g and -q options. Note: The kernel time discipline is dis‐
abled with this option.我怀疑你们是否会希望在这个速度下等待一个7小时的修正。要花一年多的时间。在linux上,32位系统上的adjtime实际上被限制为大约2000秒的增量。64位系统可能使这成为一个无问题,但变化的速度将生效仍然是一个关注。
所以在linux实现中有一个阈值,大概还有其他的,在这个阈值下,你可以得到一个非常慢的“slew”,但是在这个阈值之上,主机和客户端上的系统时钟将被加快,这可以进行得更快。
还有另一个阈值,如果主客户机之间的时间差太大,客户端将假设出现错误而不进行更新。来自ntpd手册页:
-g Normally, ntpd exits with a message to the system log if the
offset exceeds the panic threshold, which is 1000 s by default.
This option allows the time to be set to any value without
restriction; however, this can happen only once. If the thresh‐
old is exceeded after that, ntpd will exit with a message to the
system log. This option can be used with the -q and -x options.注意,几乎肯定没有为守护进程设置-g选项。它通常用作ntpd -gq,在系统启动时作为一次性运行,或者手动运行,其行为非常类似于ntpdate。不过,在编译时,恐慌阈值可能是可配置的,因此请查看操作系统供应商的手册页(S)。
这是相当直接的,编写一个程序,将作出一系列的时间调整,使用任何频率和大小的调整,您选择。您可以在ntp主服务器上这样做,它将为它的客户端提供调整时间,但是您需要知道客户机系统将接受的最大大小调整,以及什么最小阈值将导致它们执行非常慢的调整。为了安全起见,您应该检查客户端系统上的ntp实现。
如果您在没有-x选项的情况下更新与linux上默认ntpd类似的系统,那么您可以使用一种机制,比如每5秒进行一次半秒的调整,然后在大约3天的时间内保持同步。进行不跨越第二个边界的亚秒级调整可能有助于避免触发两次cron作业之类的事情,但您可能会发现一些副作用。
如果最终您的服务器不再相互同步,则会变得更加混乱。如果可行的话,我希望监视时差,并在某些服务器不再跟踪的情况下自动停止自动定期更新,并发出警报。
发布于 2015-10-29 18:32:36
如您所知,如果时钟变化在一个小间隔内,客户端将保持同步。在某些系统中,这只需时5分钟。你的可能是10分钟。你可以在这个时间间隔内跳过时钟,客户就会拼命跟踪。
我可以看到四种选择:
没有一个解决方案是理想的。如果生产报告时间很重要,那么选项2可能是最糟糕的一堆。
https://serverfault.com/questions/730704
复制相似问题