QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 2897|回复: 3

同步精确时间

[复制链接]
发表于 2005-10-14 23:08:33 | 显示全部楼层 |阅读模式
先说一段插曲,本机的电池早些时候挂了,系统时间一直不准,算起来也有几年时间了,就在坊间卖了一颗,但系统时间还是慢几分钟,每次启动都要改一下时间,看电压是V2.9-3.1之间,不知是主板还是电池问题,希望不是主板问题吧.
linux时间是复杂的东东,分系统时间,用date命令,和硬件时间,用hwclock,两者的机制如何希望有高手说说.
既然时间不准,就想办法调准她了.调节时间好像有几种方法,但NTP是最高级别的,听说是达到百万分之一秒的级别,其实时间是一个严肃的问题,神六上天和GPS都要绝对精确的时间,甚至用到爱恩斯坦的原理:地球上时间与运行在轨道上的时间是有快慢之分,足够影响到生与死之间的距离.
正文:
NTP概念简介
Network Time Protocol(NTP)是用来使计算机时间同步化的一种协议,它可以使计算机对其服务器或时钟源(如石英钟,GPS等等)做同步化,它可以提供高精准度的时间校正(LAN上与标准间差小于1毫秒,WAN上几十毫秒),且可介由加密确认的方式来防止恶毒的协议攻击。

NTP如何工作
NTP 提供准确时间,首先要有准确的时间来源,这一时间应该是国际标准时间UTC。 NTP获得UTC的时间来源可以是原子钟、天文台、卫星,也可以从Internet上获取。(如果你家有原子钟的话,也可以在网上发表时间)这样就有了准确而可靠的时间源。时间按NTP服务器的等级传播。按照离外部UTC 源的远近将所有服务器归入不同的Stratun(层)中。Stratum-1在顶层,有外部UTC接入,而Stratum-2则从Stratum-1获取时间,Stratum-3从Stratum-2获取时间,以此类推,但Stratum层的总数限制在15以内。所有这些服务器在逻辑上形成阶梯式的架构相互连接,而Stratum-1的时间服务器是整个系统的基础。一般使用的是Stratum-2层.这里是第二层服务器地址列表
http://ntp.isc.org/bin/view/Servers/StratumTwoTimeServers
应选取最近的服务器地址.

网络校时协议(NTP)的实现,时间服务器可以利用以下三种方式与其他服务器对时:
broadcast/multicast
client/server
symmetric

broadcast/multicast方式主要适用于局域网的环境,时间服务器周期性的以广播的方式,将时间信息传送给其他网路中的时间服务器,其时间仅会有少许的延迟,而且配置非常的简单。但是此方式的精确度并不高,对时间精确度要求不是很高的情况下可以采用。

symmetric的方式得一台服务器可以从远端时间服务器获取时钟,如果需要也可提供时间信息给远端的时间服务器。此一方式适用于配置冗余的时间服务器,可以提供更高的精确度给主机。

client/server方式与symmetric方式比较相似,只是不提供给其他时间服务器时间信息,此方式适用于一台时间服务器接收上层时间服务器的时间信息,并提供时间信息给下层的用户。

我用的是gentoo
#USE="-x" emerge ntp (安装NTP软件)
手册 #man ntpd

使用NTP地址
复旦大学的NTP服务器地址:ntp.fudan.edu.cn
香港大学的NTP服务器地址:ntp.cuhk.edu.hk
使用如下命令可同步时间并检查服务器地址的可用性
#ntpdate ntp.fudan.edu.cn

/etc/ntp.conf文件的设置
server ntp服务器IP地址或主机名  (server:只接受时间, peer:接受和对外提供时间)
server XXX.XXX.XXX.XXX (可以是IP地址,使用多个地址可以提高精度和保持联系)
peer IP地址 (你如果有子网,可向她提供服务)
driftfile /etc/ntp.drift

其中的 server host_name 表示本机同host_name这台机器以client模式作时间矫正, peer host_name就是以peer模式的方式作时间矫正,所以,就上述而言,本机和三台时间服务器作矫正,且与二台以clientmode的方式,一台 peer模式。driftfile的用处是当ntpd启动后它会去计算机器内部时钟频率的误差,计算第一次的误差通常需要很长的时间,但一旦计算出来了, 接下来的误差只要计算相对与初始值的差值就可以了,但若不小心在计算初始值时ntpd停了,下次启动又要花时间去重算,若我们在 /etc/ntp.conf内加入这行,则ntpd会储存现在的值于ntp.drift中,下次启动时,可省下不少时间计算误差,所以 driftfile/etc/ntp.drift通常都会出现在/etc/ntp.conf内。

启动服务 #/etc/init.d/ntpd start (stop)

我原来的时间是local模式,改文件/etc/conf.d/clock,改为UTC模式.
基本就设置好,欢迎指正.
发表于 2005-10-15 09:00:13 | 显示全部楼层
好文章,支持,试试
回复

使用道具 举报

发表于 2005-10-15 23:55:33 | 显示全部楼层
好文章...不过汗一个....
回复

使用道具 举报

发表于 2005-10-20 10:37:26 | 显示全部楼层
很不错的冬冬,推荐可以加精了。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-3 04:15 , Processed in 0.043055 second(s), 16 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表