|
发表时间:01-5-21 07:46:01 内容: 2001.05.21.00.22 by sophya 1 请参考RFC文档资料(网络时间协议RFC1305) 在下面几种情况下需要对网络中成员的时钟进行同步: (1)在备份服务器和客户机之间进行增量备份要求这两个系统之间的时钟同步。 (2)确保系统之间的RPC能够正常进行。因为为了保证一个系统调用不会重复进行,一个调用只在一个时间间隔内有效。如果系统间的时钟不同步。一个调用可能在还没有发生之前就因为超时而不能进行。 (3)有的应用程序需要知道一个用户登录系统的时间,或者文件的修改时间。 2 对于网络操作系统来说,由于要向多个客户提供服务,因此必须拥有一个精确的系统时间。可以使用date命令显示当前的时间; (在solaris上,要想按照中文方式输出时间,要指定环境变量LC_ALL为zh_CN_EUC) 3 由于用于Internet上的网络操作系统的客户可能来自不同的时区,因此计算机的时间系统必须能表示出不同的时区。计算机中的CMOS时间能设置成为两种不同的时间,一种是将CMOS时间设置成格林威治标准时间,使用时区修正给出本地时区的正确时间,另一种方法是将CMOS时间设置为本地标准时间,再使用本地时区修正得到格林威治标准时间。这样系统和其他计算机通信就能使用标准时间,避免不同时区的计算机时间的差异。 系统安装程序在进行时区设置时将询问用户使用哪种时间设置方式及时区设置,系统安装完成后,也可以使用tzsetup命令来设置时区信息。所有的时区信息保存在/usr//share/aoneinfo目录中,而本机的时区设置信息保存在/etc/localtime文件中。此外,每个用户也可以使用环境变量TZ来设置与系统不同的时区,这个设置将覆盖系统的设置。 root用户可以使用命令date加参数改变现有系统的时间,具体请参照man date. 4 手工设置时间很不方便,而且时间的精确程度值得怀疑,而且不同的计算机的时间必然存在偏差,会对要求时间同步的服务产生一些影响。在一个网络中,系统之间的时钟相差一分钟或者更少的情况很多。如果网络很大,不可能完全依靠系统管理员手工使用date命令来调节各个系统的时钟。 要解决这个问题,要将系统连接到一个能提供精确时间的服务器上进行时间同步。 tcp/ip中用于时间同步的协议为ntp。在Internet上提供ntp服务的站点有clepsydra.dec.com、ben.cs.wisc.edu、truechimer.waikato.ac.nz等。 (可以去http://www.eesic.udel.edu/~ntp找啦) 虽然ntp 协议本身考虑了网络延迟,然而网络迟延毕竟会对时间的精确度造成影响,因此应该选用一个离本地近的时间服务器。(注意呦,地理位置近的未必网络位置近,用ping和traceroute来判断一下吧) 使用ntp协议更新计算机上的时间的一个简单程序为ntpdate。 #ntpdate ben.cs.wisc.ed ntpdate在运行后就退出了。为了保证时间的长期正确性,就要每隔一段时间自动进行一次时间同步,可以将ntpdate ben.cs.wisc.ed放入cron中,每隔一段时间执行一次。 #crontab -e 追加 0 0 * * * ntpdate ben.cs.wisc.edu 5 系统还提供了另一个守护进程xntpd。它能够自动周期进行时间同步的工作。 为了运行xntpd,首先要创建/etc/ntp.conf文件,其中包括时间服务器的名字和一个临时文件名。 server ben.cs.wisc.ed driftfile /etc/ntp.drift 然后执行这个守护进程, #xntpd -c /etc/ntp.conf -p /var/run/xntpd.pid 6 可以通过修改rc.conf让ntpdate和/或xntpd在系统启动的时候自动执行。 xntpd_enable="YES" xntpd_program="xntpd" xntpd_flags="-c /etc/ntp.conf -p /var/run/xntpd.pid" 7 要想让系统中的多台计算机都进行时间同步,那么每个计算机都与外部时间服务器连接不是一个很好的办法。更好的主意是使用一个计算机与外部时间服务器同步就可以了。xntpd也可以用做本地的时间服务器。相关配置文件如下: server ben.cs.wisc.ed driftfile /etc/ntp.drift broadcast 10.1.1.255 其中增加了广播地址,向全网广播正确的时间。(注意哟,这个广播地址要按照你自己的实际情况修改) 或者这里可以使用组播地址224.0.1.1,但是网络要支持组播能力。 由于使用了广播/组播,网络内的其他服务器就不必配置xntp.conf。直接启动xntpd。xntpd就可以通过听广播/组播信息来达到精确的时间信息。 8 当然,也可以不配置广播/组播地址。然后配置每台计算机中ntp.conf文件,指定所有的计算机都访问这台时间服务器。 9 验证 这是troubleshooting中很重要的环节呀 (1)检测syslog文件 当xntpd守护进程启动,它会在/var/adm/syslog/syslog.log文件中添加几条记录,包括: xntpd启动和停止的时间 与其它的运行NTP的节点之间的关系。 /etc/ntp.conf文件中发现的错误。 (2)验证xntpd守护进程是否正在运行。 xntpd守护进程必须存在,否则就不能同步其它系统的时钟。 (3)浏览NTP服务器节点的状态和与客户端的联系。 命令:ntpg -p 查询网络中的NTP服务器,同时显示客户端和每个服务器的关系,例如: # ntpg -p remote ?refid? st ?when ?poll ?reach ?delay ?offset ?disp --------------------------------- * John ? Larry ?3 ? 64 ??64 ??377 ??0.87 ? 10.56 ??16.11 + Brian ?Renay ?3 ?100 ? 264 ??376 ??9.89 ? 5.94 ?? 16.40 Darren 0.0.0.0?15 ?- ???64 ??0 ???0.00 ? 0.00 ?? 1600.00 我已经快累死了,就写到这里吧。还有好多没有包含进去,比如时钟基准源,一级时钟服务/二级时钟服务。漂移,对等服务等等啦。 做过传输的都这些理论的。哈,我可是在我们的传输同事那里混了个一知半解的; 我们这些系统管理员没有必要知道这么多的原理啦。(要不然猴年马月都出不来了)。 |
|