我有一台时间设置错误的NTP服务器,将来会有7个小时(机器出货后时区被更改,但不是时间)。 服务器本身不同步,但只有本地时钟。 在这个服务器上> 10个客户端同步它们的时钟,导致整个服务器组的时间错误。
我怎样才能改变NTP服务器的时间,纠正被纠正,所有的客户端也会得到纠正? 我第一次testing通过“dateMMDDhhmm”,让客户端从服务器断开连接(ntpq服务器名称前面的星号消失)只是一个修复。
我不知道如何在所有服务器上手动更改所有同步服务的时间,通过将时钟设置为7小时来引导系统拥有未来的文件。 可能会有崩溃,系统为工厂生产提供服务。
当你谈论时间,你通常谈论less量的时间。 修复是通过调用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 ,在系统启动时作为ntpd -gq运行,或者手动执行,类似于ntpdate 。 恐慌阈值大概可以在编译时configuration,所以请检查您的OS供应商的手册页。
编写一个程序会非常简单,它会根据您select的任何频率和大小进行一系列时间调整。 您可以在ntp master上执行此操作,并将调整后的时间用于其客户端,但是您需要知道客户端系统将接受的最大大小调整以及最小阈值是否会导致它们执行非常慢的转换。 为了安全起见,您应该调查客户端系统上的ntp实现。
如果您正在更新的系统具有类似于Linux上的默认ntpd而没有-x选项,那么您可以使用一个机制,例如每5秒进行一次半秒调整,并且在大约3天的时间内进行同步。 进行不跨越第二个边界的亚秒级调整可能有助于避免触发cron作业两次,但期望您可能会发现某种副作用。
如果您在服务器不再彼此同步的情况下结束,则会变得更加混乱。 如果可行的话,我想要监视时间差异,并且如果一些服务器不再遵循,自动停止自动定期更新,并提出警报。
如你所知,如果时钟变化在一个很小的时间间隔内,客户端将保持同步。 在某些系统上,这只需要五分钟。 你可能要10分钟。 您可以在该时间间隔内跳转,并且客户端将转动以跟踪。
我可以看到四个选项:
什么也不做,并且无限期地过着不正确的时间。
重置时钟四分钟(或九分钟,如果你有一个600秒的时间间隔),并在mc0e已计算的一年中重复广告nologum 是必要的 。 你真的想用脚本来做到这一点。 在今年的大部分时间里,暂时都是不正确的。 记下时间偏移的相关logging,以便与生产报告相关联。
把服务器放下七个小时的维护期(圣诞节,任何人?),并一次性修好所有钟表。
跳时钟,并确保每个人都知道将有一个七小时的报告重叠。 但是,这些人应该已经知道生产时间是七个小时,所以你可能会觉得这是可以接受的。 (显然,我不知道这会对您的晶圆厂工艺产生什么影响。)
没有一种解决scheme是理想的。 如果生产报告时间很重要,那么选项2可能是最糟糕的一堆。