有没有一种可靠的方法来同步完全离线的 linux 服务器的时钟,它只是偶尔连接到客户端?
我想将单个“millis-since-epoch”数字传递给服务器可能并不精确,即使很简单。
想知道是否可以用客户端从 NTP 服务器获得的必要信息来“提供”NTPD(在服务器上运行)。
有没有一种可靠的方法来同步完全离线的 linux 服务器的时钟,它只是偶尔连接到客户端?
我想将单个“millis-since-epoch”数字传递给服务器可能并不精确,即使很简单。
想知道是否可以用客户端从 NTP 服务器获得的必要信息来“提供”NTPD(在服务器上运行)。
需要注意的重要一点是,机器时钟不一定值得信赖。它可以漂移,并且不同的机器以不同的速率漂移。
ntp
试图测量该漂移,但它需要足够的连接时间来计算出一个近似值。对于无法(由于某种原因)与互联网上的 NTP 服务器同步的机器,保持时钟同步的标准方法是拥有一个本地“权威”时间源。通常这是一个 GPS 接收器。现在您的机器可以访问准确的时间源。
如果没有外部时间源,您的机器上没有任何东西可以被认为是足够值得信赖的。
现在,如果您不完全关心准确性并且只想在连接上“重新同步”,那么
ntpdate
在建立链接时运行可能就足够了。您应该知道这可能会导致时钟倒退,因此不建议这样做(Unix 时间意味着单调增加),但它可能不会损害您的用例。使用 GPS 确实是同步系统时钟的最简单方法。我的互联网连接通常很好,但这是 Frontier,每年大约有几天的中断。由于我从 Internet 同步了我的 IP 安全摄像头时钟,而这些摄像头的内部时钟非常糟糕,我需要更稳定的东西。所以我去找GPS。
我尝试将 ntpd 和 gpsd 一起配置,但互联网上描述的所有步骤都假设您使用的是 PPS 信号,这需要更昂贵的 GPS 和内核补丁。我对这两个都不感兴趣,不想永远手动维护我的 Linux 内核。
另一方面,我对 NTP 和 GPS 有所了解,并且有兴趣了解更多信息。NTP 服务器实际上非常简单(客户端完成大部分工作)。我过去曾与 GPS 和 NMEA 合作过。我买了一个便宜的 USB GPS 鼠标(大约 12 美元)。我花了几个星期断断续续的工作,但我现在有一个 NTP 服务器,几乎不需要配置,很容易安装在 Raspberry Pi 或 Debian PC 上:HouseClock。
此外,我不喜欢现有的 NTP 服务器工具:我使用自己的echttp Web 服务器库嵌入了一个 Web 控制台。
总的来说,我花了更多的时间而不是弄清楚如何设置 gpsd,但我确实有能力从 web 客户端自动监控它(和其他设备)......这是我未来的宠物项目。此外,我的 IP 摄像机的时间同步出现了一些问题,并且能够监控 NTP 客户端活动帮助我解决了这个问题(闰年的摄像机固件错误)。
所有的建议是,如果没有 PPS GPS 同步超过 1 秒就不是很稳定。我的经验是它大部分是稳定的,但可能会在一段时间内下降 50 到 100 毫秒。谁在乎:我不是在做粒子物理实验。1 秒的准确度就足够了。
因为我有另一个 Raspberry Pi 的负载不是很大,所以我买了第二个 GPS 鼠标,瞧,一对冗余的自制 NTP 服务器。