各系统NTP服务启用微调同步的方法(可防止闰秒引起的系统问题)
生产服务器上一般都要启用NTP服务,来保持各服务器的时间一致。
但是默认,一般各系统都是没有开启微调同步的,一旦时间跨度差距比较大,服务器是会对时间进行大的跳跃性同步的。
如Linux中的加-x参数表示启用微调:
从上面可以看出,0-128ms的差距时,不管有没有加-x参数,都是会进行微调的,但是当差距大于128ms,小于600s时,加了-x还是会进行微调,但是没有加-x参数的就会进行跳跃同步,这就可能引起一些不可预知的问题了。
转载本站文章请注明出处:haibing.org
一般应用服务器还好,但是对于数据库服务器来说,一秒都是相差很大的一个数值了,可能会引起各种问题。
所以对于数据库服务器来说,一定要开启微调模式。
下面讲一些各个系统启用微调同步的方法:
其中Linux的都相对比较简单,网上也有很多教程,后面我主要讲一下solaris10和solaris11的不同和设置方法。
redhat系Linux:
修改/etc/sysconfig/ntpd 里面有一句: OPTIONS="-u ntp:ntp -p/var/run/ntpd.pid -g" 在最后加上-x OPTIONS="-u ntp:ntp -p/var/run/ntpd.pid -g -x" 重启ntpd服务 #service ntpd restart 转载本站文章请注明出处:haibing.org
SUSE:
修改/etc/sysconfig/ntp 里面有一句: NTPD_OPTIONS="-g -u ntp:ntp" 在最后加上-x NTPD_OPTIONS="-g -u ntp:ntp -x" 重启ntpd服务 #rcntp restart
HP-UX:
打开/etc/rc.config.d/netdaemons XNTPD_ARGS="-x" 看是否有以上参数,并添加了-x
solaris
solaris10中有两个版本的NTP,要先确定是启用了哪个版本。
一般solari10及更老的版本,都是用xntpd(NTPv3)版本,但同时也是有NTPv4的,而solaris11是使用NTPv4版本,也只有NTPv4。两个版本启用微调同步的文法不同。
转载本站文章请注明出处:haibing.org
验证方法:
solaris10:
#svcs -a|grep ntp disabled Dec_08 svc:/network/ntp4:default online Dec_09 svc:/network/ntp:default #ps -ef|grep ntp root 426 1 0 Dec 19 ? 1:24 /usr/lib/inet/xntpd
可以看到solaris10只启用了NTPv3,而NTPv4并没有启用。
solaris11
#svcs -a|grep ntp online 16:39:31 svc:/network/ntp:default #ps -ef|grep ntp root 11874 1 0 17:37:08 ? 0:02 /usr/lib/inet/ntpd -p /var/run/ntp.pid -g
只有一个NTPv4.
solaris启用微调同步的方法:
solaris10:
比较简单,直接在/etc/inet/ntp.conf中添加以下两句即可: slewalways yes disable pll 再重启服务 #svcadm -v restart ntp
如果solaris10中是用的NTPv4的话,设置方法如下:
先查看有没有启用微调同步: # svcprop -p config/slew_always ntp4 如果是false的话,就没有启用 启用: #svccfg -s svc:/network/ntp4:default setprop config/slew_always = true # svcadm refresh svc:/network/ntp4:default # svcadm restart svc:/network/ntp4:default 验证: # svcprop -p config/slew_always ntp4 true #ps -ef|grep ntp root 11874 1 0 17:37:08 ? 0:02 /usr/lib/inet/ntpd -p /var/run/ntp.pid -g --slew
ntp进程中带有–slew参数即表示成功。
solaris11
跟上面NTPv4差不多
# svccfg -s svc:/network/ntp:default setprop config/slew_always = true # svcadm refresh svc:/network/ntp:default # svcadm restart svc:/network/ntp:default