![我真的需要运行 ntpd 来使我的机器时钟与 NTP 协议保持同步吗?](https://linux22.com/image/172654/%E6%88%91%E7%9C%9F%E7%9A%84%E9%9C%80%E8%A6%81%E8%BF%90%E8%A1%8C%20ntpd%20%E6%9D%A5%E4%BD%BF%E6%88%91%E7%9A%84%E6%9C%BA%E5%99%A8%E6%97%B6%E9%92%9F%E4%B8%8E%20NTP%20%E5%8D%8F%E8%AE%AE%E4%BF%9D%E6%8C%81%E5%90%8C%E6%AD%A5%E5%90%97%EF%BC%9F.png)
我在我的机器上使用 Devuan GNU/Linux (~= Debian Buster without systemd)。在基于 Debian 的系统上,我们可以安装软件包ntpdate
,它提供ntpdate
二进制文件 - 一个 NTP 客户端,可以同步您的时钟一次,以及ntp
,它提供ntpd
守护进程。除此之外,它还执行周期性同步。
现在,这个问题的公认答案:
如何保持 Debian 内部时钟同步(与 NTP 服务器)?
建议我应该安装该ntp
软件包。但我想知道这是否真的有必要。也就是说,为什么不简单地ntpdate
提供一个 cron 脚本来每 X 小时、几天或其他什么时间运行客户端一次?我是否真的需要 ntpd 的所有功能 - 正如建议的那样,当它有自己的手册页时? :
BUGS The **ntpd** utility has gotten rather fat. While not huge, it has gotten larger than might be desirable for an elevated-priority ntpd running on a workstation, particularly since many of the fancy features which consume the space were designed more with a busy primary server, rather than a high stratum workstation in mind.
注意:这个问题是关于物理机,而不是虚拟机。
答案1
drift
这取决于您允许时钟存在多少误差 ( )。
众所周知,时钟漂移随着时间的推移。时钟的每个周期可能产生的小误差会在较长的时间内累积,并且可能(并且通常确实)使时钟与“实时”分开。
许多计算机上的内部时钟是由一个硬件芯片受温度影响的漂移很小(普通石英晶体约为 10ppm)。有时它比实时速度快,有时比实时速度慢。一个月内可能会出现 20 秒(一个月 10 ppm)的不同步。定期同步可以减少最大错误。例如,ntpdate
每周使用一次,最大误差将小于 5 秒 (~20/4)。
该ntp
程序的目标是更频繁地同步到“ntp 时间”(这不完全是“实时”,但非常接近)。 ntp 同步的常见错误受到网络延迟的限制,可能小于 100 毫秒,通常小于 10 毫秒。这会将硬件时钟设置为原子时钟时间(非常接近“实时”)。那个时间将从那一点开始漂移。 ntp 客户端可以通过某些方式调整计算机时钟的漂移,以使其更接近接收到的时间。
是的,对于 ntp 协议的所有小修正和精度,它已经变得有些复杂。如今,拥有 GPS 时钟并不罕见。50纳秒内“世界时间”(UTC) 的(50.0e-09 秒)。这比任何 NTP 系统所能提供的都要多。在这种情况下,具有此类设备的计算机将被赋予 0 级别(层)以供 ntp 使用。
当然,每隔一段时间调整一次ntpdate就意味着“实时”的计算机知识会每隔一段时间就逐步改变。这意味着现在写入的文件的时间戳可能比之前写入的文件小。该ntp
系统尽力避免这种“跳跃”。
至少有ntpd和chrony作为ntp时间的服务器。您可以使用其中之一(不能同时使用两者)来保持计算机时钟,也可以使用 GPS 时钟。
答案2
是的,您可以定期运行 ntpdate 并通过经常调整来保持时钟同步。时钟可能会在每次调整时跳过(跳跃)一些时间,这可能会导致问题,具体取决于您是否运行需要一致计时的软件。
您还可以运行 ntpd,并让其使用为此目的设计的协议来管理时钟。您还可以考虑使用 chrony,它看起来是一种更新、更轻量的实现。同样,它依赖于守护进程来保持时钟同步,或者您可以使用命令行随时同步。
使用 NTP 协议的解决方案将使您的时钟得到一致且温和的调整,从而实现最小的调整和调整之间最平滑的过渡(一旦守护进程启动,时间实际上不会直接调整)。