时间服务器(Linux ntp)

系统时间和硬件时间

硬件时间:记录在主板CMOS上的时间,由主板上的纽扣电池供电运行,电脑关机后也在正常运行。

系统时间:Linux kernel中的时钟,操作系统启动时,会去读取硬件时间,之后就独立运行。

运行久了,两者之间会有较大的偏差。集群也一样,运行久了不同的机器之间在时间上会有偏差。这是就需要进行时间上的同步。


1)查看系统时间:date

date直接查看:

[root@baby-virt-4 ~]# date
Sat Jun  6 00:01:08 CST 2015

也可以对输出进行格式化:

[root@baby-virt-4 ~]# date +"%Y-%m-%d %H:%M:%S"
2015-06-06 00:00:58

重设系统时间:date -s 或 date --set="pattern"

[root@baby-virt-4 ~]# date --set="2015-06-11 15:15:00"
Thu Jun 11 15:15:00 CST 2015
[root@baby-virt-4 ~]# date +"%Y-%m-%d %H:%M:%S"
2015-06-11 15:15:16


2)查看硬件时间:hwclock

hwclock直接查看:

[root@baby-virt-4 ~]# hwclock
Thu 11 Jun 2015 11:18:26 PM CST  -0.345021 seconds

重设硬件时间:

[root@baby-virt-4 ~]# hwclock --set --date="2015-06-06 00:00:00"
[root@baby-virt-4 ~]# hwclock
Sat 06 Jun 2015 12:00:06 AM CST  -0.594816 seconds

硬件时间同步至系统时间:hwclock -s 或 hwclock --hctosys

系统时间同步至硬件时间:hwclock -w 或 hwclock --systohc


时间和时区

时区(Time Zone)是地球上的区域使用同一个时间定义。在不同的时区,时间也不一致,为了统一这个时间,就有了UTC协调世界时,又称世界统一时间),计算机设置的就是这个时间,在从时间服务器出同步时间时,对方提供的也是这个时间,然后在本地计算机由于时区文件的设置,使得显示的时间为当地时区的时间。下面就介绍下如何设置时区。

在/usr/share/zoneinfo目录下有已经编译好的timezone文件,各国的大城市基本都在这儿了,可以通过file查看文件格式:

[root@baby-CentOS zoneinfo]# file UTC
UTC: timezone data, version 2, 1 gmt time flag, 1 std time flag, no leap seconds, no transition times, 1 abbreviation char

如果想查看某个时区的时间可通过zdump命令,直接指定某个时区文件进行查看

[root@baby-CentOS zoneinfo]# zdump America/New_York 
America/New_York  Thu Jun 11 04:22:14 2015 EDT

那么如何设置本机的时区呢?这里有两种方法:

1)修改/etc/localtime这个文件,可以复制/usr/share/zoneinfo目录下某个时区文件/etc目录下,重命名位localtime:

[root@baby-CentOS zoneinfo]# cp -a America/New_York /etc/localtime
[root@baby-CentOS zoneinfo]# date
Thu Jun 11 04:28:17 EDT 2015

也可以直接将/etc/localtime文件软链接至/usr/share/zoneinfo目录下的某个时区文件:

[root@baby-CentOS zoneinfo]# ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
[root@baby-CentOS zoneinfo]# date
Thu Jun 11 16:32:28 CST 2015

2)修改TZ环境变量也可以实现时区的更换,通过tzselect命令选择时区(按照提示输入1,2.....就行),选择完成之后会输出类似这样的信息:

You can make this change permanent for yourself by appending the line
	TZ=‘Asia/Shanghai‘; export TZ
to the file ‘.profile‘ in your home directory; then log out and log in again.

直接在命令行输入 TZ=‘Asia/Shanghai‘; export TZ 即可。在date查看时间时,系统是先去查找TZ环境变量,TZ没有设置采取寻找/etc/localtime文件,所以TZ环境变量设置之后会覆盖/etc/localtime文件信息,但是环境变量的设置在下次登录时就无效了,若要永久有效,可将命令写到/etc/profile文件中。


时间服务器搭建

在集群环境中,时间的准确性和统一性非常重要,ntp就用来解决这个问题。NTP(Network Time Protocol,网络时间协议)是用来使网络中的各个计算机时间同步的一种协议。它的用途是把计算机的时钟同步到世界协调时UTC,其精度在局域网内可达0.1ms。我们可以将本地的几台计算机同步到网上的NTP server,然后再将这几台计算机做成NTP Relay Server,给本地的其他计算机提供同步服务。下面开始介绍如何搭建。

[root@baby-virt-4 ~]# yum install ntp

/etc/ntp.conf是ntp的主配置文件,介绍下里面的参数(部分参数直接copy from官方网站,具体怎么用我也不清楚):

server     #指定向哪台ntp server同步时间

restrict   #访问控制(对指定的ip地址进行访问控制)

    restrict参数:

                Parameters        Definitions

                ignore                 Deny all packets and queries   #估计是所有从123号端口进来的数据包都丢弃

                kod                      Send Kiss-Of-Death packet on access violation  

                                                         #若违反了连接规则,则直接发送Kiss-Of-Death数据包

            nomodify            Deny ntpq / ntpdc queries that attempt to modify the server

                                                        #客户端不能更改服务端的时间参数

                notrap                 Deny control message trap service    #......

                noquery              Deny all ntpq / ntpdc queries       #拒绝所有ntpq和ntpdc的查询

                noserve                Deny all queries - except ntpq / ntpdc    

                                                        #拒绝除ntpq和ntpdc的所有查询,这项添加后客户端将无法同步

                notrust                 Deny access unless cryptographically authenticated (ver 4.2 onwards)

                            #客户端除非通过认证,否则该客户端来源将被视为不信任子网 

                nopeer                 Deny all packets that attempt to establish a peer association

#

#restrict default kod nomodify notrap nopeer noquery

#restrict -6 default kod nomodify notrap nopeer noquery

#restrict 127.0.0.1

#默认的是上面这几项,允许本地的所有操作,对所有的ipv4,ipv6进行这几项设置“kod nomodify 

#notrap nopeer noquery”

#

#restrict 192.168.0.0 mask 255.255.255.0 notrap nomodify

#也可以通过上面的设置放宽对指定网段的限制

#

#restrict default kod nomodify notrap nopeer noquery noserve

#restrict -6 default kod nomodify notrap nopeer noquery noserve

#restrict 127.0.0.1

#restrict cn.pool.ntp.org kod nomodify notrap nopeer noquery

#restrict 0.cn.pool.ntp.org kod nomodify notrap nopeer noquery

#restrict 192.168.0.0 mask 255.255.255.0 notrap nomodify

#server cn.pool.ntp.org prefer    #指定网络上的NTP server

#server 0.cn.pool.ntp.org           #指定网络上的NTP server

#还可以通过上面的设置只对192.168.0.0/24这个网段开放同步服务,这个需要在最上面的两行加上noserve,

#不过这会阻止NTP server进来的信息,使得这台时间服务器服务和指定的NTP server进行同步,

#还需要加上红色的两行。




郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。