宝塔服务器面板,一键全能部署及管理,送你10850元礼包,点我领取

今天遇到一个ntp的同步问题。服务器上配置好了ntpd,在启动前也手动进行过同步,但是过段时间ntpq查询发现服务器即便能选出同步服务器,但是系统的时间偏差越来越大。

服务器上实际有2个时钟,一个是主板电池驱动的硬件时间(RTC或者CMOS时间),另外就是系统时间。服务器启动时会从RTC里读取一次时间,之后便靠中断来计时。可以设置ntpd同步后讲时间写回RTC.

语法:adjtimex [OPTION]… 主要参数说明:

-p, –print 输出内核时间变量的值

-t, –tick val 设置内核时钟计数间隔(微秒)

-f, –frequency newfreq 设置系统时钟偏移量

-c, –compare[=count] 比较系统时钟和CMOS时钟

-i, –interval tim 设置时钟比较间隔时间 (sec)

-l, –log[=file] 将当前时间记录到文件中

–host timeserver 查询时间服务器

-u, –utc 将CMOS时钟设置成UTC

在服务器上先比较一下系统时间和CMOS时间

# adjtimex --compare
                                      --- current ---   -- suggested --
cmos time     system-cmos  error_ppm   tick      freq    tick      freq
1381503971     1.751318
1381503981     1.721794    -2952.4  10000  -1573016
1381503991     1.692179    -2961.5  10000  -1573016   10029   2456959
1381504001     1.662619    -2956.0  10000  -1573016   10029   2097584
1381504011     1.633055    -2956.4  10000  -1573016   10029   2122584
1381504021     1.603491    -2956.4  10000  -1573016   10029   2122584
1381504031     1.573928    -2956.3  10000  -1573016   10029   2117896
1381504041     1.544361    -2956.7  10000  -1573016   10029   2142896

然后使用

# adjtimex -t 10029

修改一下tick,重新手动同步后,再启动ntpd发现时间终于正常了。