jameshd
作者jameshd2009-06-08 11:19
技术总监, 胜科金仕达数据系统(中国)有限公司

NTP简介

字数 4072阅读 3929评论 0赞 1

http://computer.mblogger.cn/qdb/posts/17563.aspx

NTP简介

1、什么是NTP?

NTP主要用于调节系统时钟从而与外部时间源达到同步。外部时间源可以是原子钟、天文台、卫星,也可以从Internet上公开的时间服务器获取。如果无法与Internet连接,也可以指定内部的一些主机做为时间服务器。虽然这种方案无法与标准时间严格同步,但是却可以保证内部主机之间时间同步。
       为了保证时间同步的高可用性,一般每台主机建议至少配置3个时间服务器, 而且这些时间服务器不能存在于同一建筑物内。NTP的后台进程会利用统计学的算法来选择最佳路径和时间源来校正主机时间。如果目前使用的时间服务器由于网络或其它原因无法联络,NTP会自动选择下一个最佳的时间源继续同步。

 有关NTP的详细信息可以访问以下网址:

http://www.eecis.udel.edu/~ntp  www.ntp.org

2、什么是SNTP?

SNTP是NTP的简化版本,没有NTP复杂的算法,一般在windows上的实现(免费版本,如nettime)。UNIX机器上的实现一般都是NTP完整版本。

3、 NTP的简要配置

Windows系统目前有很多免费的系统,一般都是SNTP实现,感觉nettime不错。

Unix系统的简单配置基本就下面一句就可以了:

        Server IP_ADDRESS_OF_THE_TIME  

        #这个ip可以是你认为时钟比较准确的机器的ip地址,也可以是外部NTP设备的

#ip地址。或者可以为127.127.1.1将自己作为标准时间,用于其他机器参考(如果#这样,那么需要增加fudge 127.127.1.1 statum 10用于指定ntp的时间级别)

一般来说,为了减少ntpd启动后重新计算本机的偏移,最好在每个ntp.conf文件中再指定drift文件,这样ntpd在启动的时候可以直接得到这个偏移值。

Driftfile /etc/ntp.drift

              也就是说简单的ntp.conf文件就是下面2或三句

              server 192.168.1.1

              driftfile /etc/ntp.drift

              或者

              server 127.127.1.1

              fudge 127.127.1.1 stratum 10

              driftfile /etc/ntp.drift

       不同的unix实现有不同的额外工作才能启动ntpd,对于HPUX还需要修改/etc/rc.config.d/netdaemons文件,对于linux,必须参考/etc/init.d/ntpd修改或增加其他文件(如/etc/ntp/step-tickers文件等等)

4、 NTP配置中易出现的问题

a.       No Server suitable for synchronization found

这个是最容易出现的问题,比较常见的是配置好服务器并启动服务器进程后,马上启动客户进程,那么客户进程就会报错。解决方法是,在大约5分钟以后启动进程就行了(具体时间应该是5分钟20秒,即64秒x5 )

如果你的unix机器是和外部GPS设备相连的话,如果天线损坏超过一天,NTP设备无法和GPS卫星同步的话,你的unix机器和NTP设备同步的时候也会出现这个问题(从而不能同步时间)。这是由NTP的一个参数决定的。在linux下,你可以修改NTP_MAXAGE(却省为86400,即一天)。在HPUX下,无法解决这个问题。

b.       Last adjustment did not complete

This message is nothing to worry about. It means that NTP is trying to make a slew adjustment bigger than your system's maximum slew rate allows in one clock tick, so the remainder is pushed to the next clock tick. This is handled automatically and the user or sysadmin hardly knows the difference. You will often see this message in the first hour after the NTP daemon is started. If you continue to see it after a few days of steady operation, then you probably have a very drifty system clock or are losing contact with your network timeservers.(原文,很少出现这个,主要是NTP的同步过程不是一次的,而是慢慢的slew到同步时间)

c.       Synchronization lost

This message indicates that NTP has cleared all of the statistics registers and has begun the startup procedure of evaluating all available timeservers and choosing the "best" one. This message appears whenever a step adjustment (greater than 128 milliseconds) is made, since the step leaves the system unsynchronized by definition. If your system is making a lot of step adjustments, it probably means that you have network congestion problems. Run "ntpq -p" and examine the dispersion statistics.(原文。一般来说,如果发现时间差在128ms以下,NTP使用slew adjustment来实现同步,如果在128ms到1000秒之中,是使用step来实现同步。如果超过1000秒,ntpd就不能同步,只能是用ntpdate –b命令)

d.       Ntpd进程丢失

在保证不是人工kill的情况下,请检查一下log文件,一般会有log说明。一个主要的原因是你人工使用date命令更改过本机或者server(ntp.conf里面定义的server)的时间,而且这两个时间差超过了1000秒。也就是说,如果ntpd发现本地时间和server时间超过了1000秒的话,就自动退出。超过1000秒的情况,必须使用ntpdate –b server使之和服务器同步一次(也就是在HP的/sbin/init.d/xntpd里面有一句ntpdate –b的原因)

5、 其它

a.调试中经常使用到的命令是:

ntptrace (等同于windows下面的traceroute)

ntpdate –q HOSTNAME (查询其他主机的时间)

ntpdate –d HOSTNAME (debug模式)

ntpq –p 以及 ntp命令

2004年10月7日 0:07

 

如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!

1

添加新评论0 条评论

Ctrl+Enter 发表

作者其他文章

X社区推广