我现在管理的服务器存在时钟漂移,并且希望纠正差异而不导致服务器上的时间跳回。
我读过有关闰秒涂抹的技术,想知道是否有类似的方法来涂抹 ntp 校正(特别是校正是否会将系统时钟调回)?
答案1
NTP 应该自动处理这个问题,而不需要残酷的时钟跳跃或任何其他事情。
您可以运行ntpd -q
一次同步时间并退出。
请注意,如果时钟偏差太大(>1000 秒),NTP 将出现紧急情况并退出。即使在这种情况下,运行 NTP 守护程序以ntpd -g
强制其调整时钟。
避免使用ntpdate
已弃用的。
答案2
感谢 dr01 的指点,我在邮件列表回复中找到了答案这里。主要区别在于我使用的术语。 ntp 使用“step”而不是“jump”,使用“slew”而不是“smear”。
步进:时间以大单位快速变化 使用“Step”方法(settimeofday),时间以较高的速率逐渐变化,或者时间立即变化到正确的时间。
步骤==将时钟重置为正确的时间一瞬间的一步。阶梯式时钟可以“倒退”。
slew == 通过加快或减慢时钟来调整时钟。旋转的时钟永远不会“倒退”
总之,如果差异低于阈值(128ms),ntp 将改变时间,如果差异高于该阈值,则步进时间。
在里面ntpd 文档它详细介绍了-x
允许您强制 ntp 始终进行修正的选项,即使差异高于默认阈值:
-x 通常,如果偏移量小于步长阈值(默认为 128 毫秒),则时间会被转换,如果高于阈值,则时间会步进。此选项强制在所有情况下都改变时间。如果步进阈值设置为零,则所有偏移量都会步进,无论值如何,也无论 -x 选项如何。一般来说,这不是一个好主意,因为它绕过了时钟状态机,该时钟状态机旨在应对较大的时间和频率误差。 注意:由于转换速率限制为 0.5 ms/s,因此每一秒的调整都需要一个摊销间隔2000秒。因此,数秒的调整可能需要数小时或数天的时间才能摊销。该选项可以与 -q 选项一起使用。
但最大转换率为 500ppm(百万分之一),这意味着纠正 5 分钟的差异大约需要 7 天。