前言:
Linux系统有两个时间同步服务:ntpd和chrony,一般较低版本的系统使用ntpd,新版本系统使用chrony。
ntpd有两种校时策略slew和step:
slew是平滑、缓慢的渐进式调整(adjusts the clock in small steps所谓的微调)。
step的同步方式指一个一个的跳跃(跳跃式调整)。
Chrony服务默认采用了渐进式模式。
时间跳跃式调整可能会对服务器业务造成影响,比如数据库事务。这里主要针对ntpd服务配置微调模式。
微调模式配置:
配置ntpd的参数,我们主要强调的是要配置成"微调模式" 也就是在options中要加入 -x的选项:
[root@nts ~]# vi /etc/sysconfig/ntpd
OPTIONS="-x -u ntp:ntp -p /var/run/ntpd.pid -g"
修改完成后保存。保存成功后,重启ntpd服务:service ntpd restart
如何确认我们的NTP服务器已经更新了自己的时间呢?
[root@nts ~]# ntpstat
synchronised to NTP server (192.168.6.202) at stratum 2
time correct to within 41 ms
polling server every 1024 s
# 该指令可列出NTP服务器是否与上层联机。由上述输出结果可知,时间校正在41毫秒内,且每隔1024秒会主动更新时间。该同步间隔会根据本地时钟与时间服务器的时钟误差大小而进行自动改变,同步间隔:最小64秒,最大1024秒。
注:当出现unsynchronised
时,请检查配置,如无误,那就需要等待,ntpd服务开启之后需要等待一段时间才能同步上。
扩展:
Linux中ntpd的-x选项的说明:
offset值 | 0-128ms | 128ms~600s | 600s~1000s | 1000s以上 |
有-x参数 | 微调 | 微调(0.5ms/s,调整600s需要14天) | 跳跃 | 退出(加-g参数可忽略一次) |
无-x参数 | 微调 | 跳跃 | 跳跃 | 退出(加-g参数可忽略一次) |
注1:ntp在没有开启slew方式时,会一直使用step的方式,即跳跃调整偏差。在开启了slew方式时,在600s内的偏差会使用slew方式以0.5ms/s的速度缓慢平滑的进行微调,整个过程<=14天消除偏差,如果此时偏差查过了600s(10分钟)的话会继续使用step的方式分步分阶段调整偏差。
注2:不管哪种同步方式,如果系统时间与服务器时间差别太大(默认是1000秒),ntpd会退出服务并记录日志到文件。如果加上-g参数,可忽略,不退出服务,但只能有效一次,下次客户端时差依然超过1000s,则ntpd会自动退出,并记录日志到文件。一般该命令与-x组合使用。