如何更改NTP服务器上的修正时间并且所有客户端也将得到纠正的时间?我首先通过“date MMDDhhmm”进行测试,让客户端与服务器断开连接(ntpq中服务器名称前面的星号消失了).
我不知道当我手动更改所有服务器上的时间时,所有同步服务将如何表现,方法是将时钟设置为7小时,使系统具有未来的文件.可能存在崩溃,系统为晶圆厂生产提供服务.
解决方法
从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实现中存在一个阈值,并且可能是其他人,在这个阈值下你会得到一个非常缓慢的“转换”,但是超过这个阈值,主服务器和客户端上的系统时钟将会步进,这可以更快地进行.
还有另一个阈值,如果主服务器和客户端之间的时间差太大,客户端将承担错误而不更新.从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非常相似.恐慌阈值可能在编译时可配置,因此请查看操作系统供应商的手册页.
编写一个程序是非常简单的,它将使用您选择的任何频率和大小的调整进行一系列时间调整.您可以在ntp master上执行此操作,它将为其客户端提供调整的时间,但您需要知道客户端系统将接受的最大大小调整,以及将导致它们执行非常慢的转换的最小阈值.为安全起见,您应该调查客户端系统上的ntp实现.
如果您在没有-x选项的情况下更新具有类似于默认ntpd的特性的系统,那么您可以使用类似于每5秒进行半秒调整的方案,并且您将在大约3天的过程中进行同步.进行不超过第二个边界的亚秒级调整可能有助于避免触发cron作业两次,但预计您可能会发现某种副作用.
如果您在服务器不再彼此同步的情况下结束,那么它会变得更加混乱.如果可行的话,我想监视时差,并且如果某些服务器不再跟随,则自动停止执行自动定期更新,并发出警报.