在许多关于 ntpd 的入门书中,例如这个,总会有警告,如果您的时钟相差太大,ntpd 将停止重置时钟。
“太远”到底有多远?
此外,如果服务器突然增加负载,例如从完全空闲状态变为 100% CPU,温度升高是否会导致时钟偏差“太远”?
是否可以将 ntpd 配置为即使时间“相差太远”也可以重置时钟,或者至少使“相差太远”的时间稍微远一些?
答案1
首先,正如其他人提到的,默认的最大差异是 1000 秒。正如 @kyle 所说,您可以使用该-g
标志来忽略此问题一仅用于初始设置时钟。
此后,即使在高负载下,您也不应该看到时钟在更新之间漂移 1000 秒,如果确实如此,您确实需要更换时钟。您需要的配置中的设置是minpoll
和maxpoll
。这些将允许您将间隔持续时间设置为 2 的幂(例如 10 表示 2 10 = 1024 秒)。
请注意,即使在高负载下,您的系统也可能不会出现大幅偏移,默认设置应该可以控制它。您不想每秒都用更新轰炸 NTP 服务器,因为您浪费资源,这会导致您被阻止,并且很可能致电您的 ISP NOC。如果您真的需要非常准确的时间,请使用 GPS 或设置您自己的 NTP 服务器。
答案2
如果时钟关闭,NTPD 可以缓慢调整时钟,时钟会偏移。其背后的想法是缓慢调整不会导致软件计时器出现问题、日志文件中出现奇怪的间隙等。
Unix 内核将可能的最大斜率限制为 500 百万分率 (PPM)。因此,时钟每超出可接受范围一秒,就需要花费 2000 秒的时间。
根据手册页,如果您的时钟偏差超过 1000 秒,ntpd 将无法工作。
由于将时钟调整 1000 秒至少需要 3 周,并且在此期间所有日期/时间戳仍然不正确,因此这似乎并不不合理。
该ntpdate
命令有一个-b切换为仅调整时间而不进行偏移。当本地系统时钟与“正确”时间偏差太大时,此功能非常有用。