如果我$ ntpq -p
立即启动,重新启动后,我可以看到系统时钟最多有 600 毫秒的偏差。
它需要一段时间才能收敛到正确的 NTP 时间,因此在我们的用例中有点令人恼火。 (Ceph 监视器,对时间敏感)。接下来的重新启动将再次显示时钟倾斜。
重新启动后是否会出现这种情况,即 PC 的 RTC 是否不准确?
我已经做过调查的事情:
- 在多台(虽然非常相似)服务器(HP dl360 gen9)上看到过它。但也是 2009 年的旧白色标签桌面。
- 将聚合后的NTP时间保存到RTC,然后从RTC复制到系统时钟。我只能看到大约 10 毫秒的偏差。也许很天真,但是就系统时间而言,这基本上模仿了重新启动。
- 重启前显式保存到 RTC;它仍然发生
- 使用 kexec-reboot;它仍然发生。
- 到目前为止仅在 ubuntu 16.04 上进行了测试。
答案1
RTC 很可能只存储秒,因此(除非内核能够判断何时从一秒切换到下一秒)它本质上会关闭 1/2 秒,即 500 毫秒。向 RTC 节省时间时也是如此;除非内核可以控制 1 秒滴答发生的时间,否则保存最多会延迟 500 毫秒。
明显的解决方法是让 NTP 更快地修复它:如果您使用-g
(或更强制地,-G
)启动 ntpd,它将被允许(或强制)在启动时步进时钟。与iburst
您的server
/线路一起pool
,这应该可以在十秒左右的时间内为您提供准确的时钟。
然后,您可以使用,例如,ntp-wait
在 NTP 准备就绪之前不启动时间敏感的工作负载。