NTP同步时钟与系统时钟一起

NTP守护进程(ntpd)是否提供某种types的虚拟时钟,并且不接触系统时钟?

目标:

在实时Linux操作系统上,NTP同步时钟与系统时钟一起,所以ntp时间的改变不会引起系统问题,但是我可以使用NTP时间来进行debugging,比如sysloging。

问题:

我们将NTP添加到已经存在的系统中,以前不用担心系统时间,但是现在我们添加NTP来启用更好的debugging

build立:

  • 系统上的一些应用程序依赖REALTIME而不是MONOTONIC时间
  • 我有本地时钟作为NTP服务器之一
  • 默认情况下不设置外部NTP服务器
  • 启动时,ntpd被设置为即时将系统时钟同步到第一个可用的非本地时钟并退出,然后正常启动另一个ntpd实例
  • 当没有外部的NTP服务器设置时,系统只会使用带本地时钟的ntpd运行

场景:

  • 让我们说开机时间没有NTP服务器设置,一个决定不设置任何NTP服务器
  • 应用程序开始运行REALTIME,没问题
  • 有人决定设置一个NTP服务器,但不要重启系统
  • 假设新join的NTP服务器比当地时钟好,但是有一个偏移量(可能是一分钟,一天甚至一个月)
  • 如果启动时的ntpd被设置为允许巨大的偏移步进,那么这样做没问题,但系统上的应用程序可能会出现混乱(超时等)
  • 如果启动时的ntpd被设置为只允许摆动,但是没有步进,由于巨大的偏移量,系统可能会永远同步到实际的NTP服务器时间

在我看来,你在问怎么让Linux有一个脑裂时钟:一个从不改变,但对内核来说可能是错误的,一个是正确的,但是可能会改变一切。 可悲的是,Linux不支持这个想法,要做到这一点还需要很多工作。

在你的情况下,我认为你可以做的事情包括:

  1. 除非本地时钟非常准确(在你的情况下不是这样,否则问题不会出现),否则不要运行configuration为本地时钟的ntpd

  2. 除非他们知道自己在做什么,否则不要让人们在正在运行的系统下重新configuration和/或启动ntpd

  3. 确保系统在关机时运行hwclock --systohc ,以便将系统时间写入硬件时钟。 在某个时候,系统可能会获得一个很好的时间信号,这将有助于保持它。 在这之后,系统将会有一个相当不错的开机时钟,而引导后的一个体面的ntp服务器的采集将在时钟摆动的校正能力之内。