我有一台 AMD Athlon XP-2500+ 主机(Shuttle MN31 主板、nForce 2 IGP + MCP-T 芯片组),运行 32 位 Ubuntu 9.10(i686 2.6.31-20-generic 内核)。不幸的是,它的时钟漂移似乎非常严重(每分钟前进近一秒),以至于 ntpd 无法使机器保持同步。
我该如何处理这个问题才能让 ntpd 正常工作?
答案1
解决方案是使用 adjtimex 包让内核知道每个内核滴答期间实际经过了多少时间。如果它的想法与现实不同,系统时钟将运行得更快或更慢。我引用自使 NTP 在时钟漂移较大的硬件上工作:
安装后,该软件包通常会运行 adjtimexconfig 命令。这将在 70 秒左右的时间内将系统时钟与硬件实时时钟进行比较,并确定系统时钟快多少或慢多少。然后,它将运行带有 -t 选项的 adjtimex 命令来设置“tick”参数,即时钟应随着每个内核滴答前进的微秒数。它还将使用此信息更新 /etc/default/adjtimex 文件,以便在重新启动后保留它。
答案2
问题可能包括以下几个方面时钟或者计时器振荡器或定时器/时钟(包括 RTC)无源元件(石英晶体和任何相关电容器)特别不准确或可能有缺陷。如果这是原因,那么您可能无法完全解决它,如果准确的时间对您至关重要。
主板的 nVidia nForce2 芯片组是非常不稳定。还有一种可能是 APIC 和 ACPI,变速处理器, 和前端总线 (FSB) 扩频 (SS)振荡器/时钟问题影响精度。一个潜在的软件(内核)问题是某些版本的 2.6.x 内核错误检测 TSC(时间戳计数器)频率,而且部分AMD处理器会根据处理器的核心时钟速度来调整TSC(即为了省电,类似于Intel处理器中的SpeedStep)。
如果你还没有,请查看 NTP 文档解决 NTP 问题。
如果以上方法都不能减少时钟的不稳定行为,那么你可以使用以下方法手动校准它adjtimex 和 NTP。请务必删除/var/lib/ntp/ntp.drift
Ubuntu 上任何现有的 NTP 漂移文件(在某些其他 Unix/Linux 系统上可能位于 /etc/ntp/ 中)或 ntp.conf 中的条目。
抱歉,我可能说得太明显了,但请确保你有 3 或 4 个可达NTP 配置文件中包含的 NTP 服务器(通常/etc/ntp.conf
或类似)。请使用“靠近”您的(公共)服务器。大多数 ISP 或网络提供商都提供免费访问其自己的内部 NTP 服务器的机会,用它. 否则使用公共服务器http://pool.ntp.org/,最好位于您的省/州或至少是国家。
答案3
我目前的解决办法是从 root 的 crontab 每分钟运行一次 ntpdate。这样每分钟就会将时间调回不到一秒。我对这个解决方案不太满意。然而,它确实证明了漂移的一致性:
ntpdate[20526]: step time server 218.45.21.199 offset -0.932912 sec
ntpdate[20549]: step time server 218.45.21.199 offset -0.932647 sec
ntpdate[20572]: step time server 218.45.21.199 offset -0.922805 sec
ntpdate[20597]: step time server 218.45.21.199 offset -0.949046 sec
ntpdate[20621]: step time server 219.117.196.238 offset -0.941480 sec
ntpdate[20650]: step time server 219.117.196.238 offset -0.925179 sec
ntpdate[20673]: step time server 219.117.196.238 offset -0.930992 sec
ntpdate[20698]: step time server 219.117.196.238 offset -0.949393 sec
ntpdate[20726]: step time server 219.117.196.238 offset -0.923139 sec
ntpdate[20751]: step time server 219.117.196.238 offset -0.933554 sec
答案4
尝试从 ntpd 的命令行选项中删除“-g”选项。