广西财经学院图书馆 林 源
我馆已启用图书馆管理系统。系统运行一段时间后,每当客户端启用图书馆管理系统时,总会提示客户端时间与服务器时间相差三分钟以上,是否与服务器时间保持一致,如同意则修改本机时间并进入系统,如不同意则直接退出系统。特别是对于一些无Administrator权限的用户,管理系统无法自动修改本机时间,导致系统无法运行。
我们都知道,所有计算机的时钟都是由本机的电脑晶振以固定频率振荡产生的。由于晶振的不同,会导致各计算机之间存在时间上的差异。
为了解决各计算机之间存在的时间差异,出现了网络时间协议NTP(Network Time Protocol),NTP是用来使计算机时间同步化的一种协议,它可以使计算机对其服务器或时钟源(如石英钟,GPS等等)做同步化,提供高精准度的时间校正。使用该协议的NTP服务器是架设在Internet上的时间服务器,客户端可以通过互联网,从时间服务器获取国际标准时间,使用各计算机之间时间保持一致,称之为时间同步。局域网内与标准时间差小于1毫秒,广域网与标准时间相差约几十毫秒。
考虑到图书馆管理系统服务器安全性的问题,在进行网络规划时将该服务器设置为内网服务器,不能访问外网,外网也不能访问该服务器。由于客户机能够访问外网,可以通过操作系统自带的“自动与Internet时间服务器同步”获取国际标准时间UTC;而图书馆管理系统服务器的时间只能由电脑晶振以固定频率振荡产生,运行时间长后,服务器时间与客户机时间差异变大,出现上述问题。
为彻底解决该问题,需要在图书馆内构建一台可供全馆所有计算机和服务器可以访问的时间服务器。
目前较为常用的服务器操作系统有Windows、Linux、FreeBSD。
Windows是大家最为熟悉的操作系统,拥有友好的界面和方便的操作,易于安装和配置。但系统占用硬件资源较多,系统的稳定性和可靠性相对较弱。据有关资料显示,Windows系统的服务器年宕机时间为9个小时。
FreeBSD是一个自由的,源于AT&T UNIX的操作系统,是一种i386的网络操作系统,属于UNIX家庭之一。FreeBSD是一个完整的操作系统,包含了从开发工具到各种各样的应用程序。它由一个软件开发的核心团队来维护,整个原始程序代码会有组织地进行更新,所以程序代码比较有一致性。
FreeBSD的目标是提供一个坚如磐石的系统。十几年的开发使它成为一个“坚如磐石”的网络操作系统,有许许多多的大网站和ISP在运行着FreeBSD,系统完全免费,源代码完全开放,可根据用户的需求自行修改等特性使得它成为商业计算机和科学研究的极佳平台。
FreeBSD提供先进的联网能力,优秀的性能,较好的安全性及兼容性等特点。这些直到今天也是在其他操作系统甚至是一些最好的商业操作系统中都没有的。
FreeBSD是以PC为主要的开发平台,所以FreeBSD在PC机上的执行效率和稳定性较高。
Linux作为完全免费的兼容UNIX操作系统,在近几年来得到了飞速发展。其源代码的开放,以及近乎免费的价格,都使其获得了大量的用户。但是与FreeBSD比,还不是真正意义上的UNIX系统。在网络的负载非常高时,FreeBSD的性能比Linux好一些。
考虑到时间服务器需要7*12小时不间断运行,尽可能少的人工干预服务器的运行以及病毒的防治,本项目使用FreeBSD 9.0操作系统。
可通过http://download.chinaunix.net/download/0013000/12434.shtml下载
一般情况下,可以直接选择国家授时中心服务器,IP地址:210.72.145.44,也可以通过搜索引擎,搜索出距离本地较近的时间服务器。搜索出的时间服务器必须经过测试,看其是否可提供正确的时间。
FreeBSD时间同步ntpd服务使用的标准端口是123,基于UDP协议,因此需检查出口防火墙UDP站123端口是否已开放。
1.自定义安装FreeBSD操作系统,在系统安装过程中需选择安装Ports系统,配置好服务器的IP地址、掩码、网关,确保服务器可以正常上网。
2.使用Ports方式安装NTP服务
# cd/usr/ports/net/ntp
# make install clean
3.在互联网上选择合适的时间服务器做为本时间服务器的上级服务器,并测试是否可获得正确时间。
# ntpdate 210.72.145.44
29 Jun 17:03:43 ntpdate[25103]:step time server 210.72.145.44 offset 2566438.315735 sec
如无法获取时间,需检查上级时间服务器是否正常或出口防火墙的UTP 123端口是否开放。
4.修改启动配置文件
# cd/etc
# vi rc.conf
增加下面内容
ntpdate_enable="YES"
ntpdate_program="ntpdate"
ntpdate_flags="210.72.145.44"
5.修改时间服务器配置文件
编辑文件ntp.conf
# vi/etc/ntp.conf
server 210.72.145.44 #指定上级时间服务器
restrict 172.16.0.0 mask 255.255.0.0#172.16.0.0网段里面的客户端可以进行网络校时
driftfile/etc/ntpd.drift
至此,时间服务器端已安装配置完毕。
服务器端的测试主要是为了检验时间服务器运行是否正常,是否能为其他客户端提供时间查询服务。一般情况下服务器运行ntpd服务后,是需要5-10分钟才能为其他客户端提供服务。
可通过查看进程来进行检查,如该进程存在则显示如下:
# ps axww|grep ntpd
81078 ?? Ss 0:00.05/usr/local/bin/ntpd-c/opt/etc/ntpd.conf-p/var/run/ntpd.pid-l/opt/var/log/ntpd.log-s/opt/var/ntpd-stat
# sockstat -l | grep":123"
root ntpd 81078 20 udp4 *:123 *:*
root ntpd 81078 22 udp4 61.129.59.109:123 *:*
root ntpd 81078 26 udp4 127.0.0.1:123*:*
root ntpd 81078 21 udp6 *:123 *:*
root ntpd 81078 24 udp6 ::1:123 *:*
root ntpd 81078 25 udp6 fe80:5::1:123*:*
在ntpd服务启动10分钟后,在其他BSD系统或Linux系统上,运行ntpdate来进行时间同步,测试ntpd服务是否正常服务。
如果运行结果如下,则说明ntpd服务正常:
# ntpdate 172.16.11.101
26 Jul 16:12:22 ntpdate[92216]:step time server 61.129.59.109 offset 0.949830 sec
如果运行结果如下,则说明ntpd服务不正常:
# ntpdate 172.16.11.101
26 Jul 15:41:24 ntpdate[89554]:no server suitable for synchronization found
在Linux上面进行网络校时,执行ntpdate即可:
#ntpdate 172.16.11.101
#172.16.11.101是本地NTP服务器的IP
不要忘了使用hwclock命令,把时间写入bios
hwclock-w
如果想定时进行时间校准,可以使用crond服务来定时执行。
编辑/etc/crontab文件
加入下面一行:
30 8 * * * root/usr/sbin/ntpdate 172.16.11.101;/sbin/hwclock-w #172.16.11.101是NTP服务器的IP地址
然后重启crond服务
service crond restart
这样,每天8:30 Linux系统就会自动的进行网络时间校准。
双击桌面任务栏上的时间,弹出“日期和时间”属性窗口,选择Internet时间,在服务器中填入配置好的NTP服务器的IP地址,然后点击立即更新,系统时间就会立即更新。如果想定时更新,把左上角的自动与Internet时间服务器同步选中,然后点击右下角的应用即可。
在图书馆内构建时间服务器,图书馆管理系统服务器与各客户端计算机都通过该时间服务器校准本机时间,客户端不再出现与服务器时间偏差提示。时间服务器运行正常,至今已运行半年多,从未出现故障。
[1]王波.FreeBSD使用大全[M].北京市:机械工业出版社,1999.
[2]http://download.chinaunix.net/download/0013000/12434.shtml[EB/OL].
[3]FreeBSD NTP服务器配置笔记.http://www.bsdart.org/archives/20101122/338.html[EB/OL].
[4]FreeBSD用NTP更新系统时间.http://www.info110.com/freebsd/in26252-1.htm[EB/OL].