1.3 时间同步

1.3.1 同步网络时间

1.概述

长时间运行Linux服务器时,其系统时间可能会存在一定的误差,一般情况下可以使用date命令进行时间修正。但是当不同设备上的系统时间不一致时,则会在协同处理、网络管理、执行顺序上出现问题。

网络时间协议(Network Time Protocol,NTP)是用来使各个主机时钟同步的一种协议,它可以直接将主机的时钟同步到世界协调时间(Universal Time Coordinated,UTC),也可以通过NTP服务器从权威时钟源或网络接收外部UTC源,客户端再从服务器请求和接收时间。

时间按照NTP服务器的等级传播,按照离外部UTC源的远近将所有服务器归入不同的Stratum(层)中。Stratum-1在顶层,有外部UTC接入,而Stratum-2则从Stratum-1获取时间,Stratum-3从Stratum-2获取时间,以此类推,但Stratum层的总数限制在15以内。

2.目标

单台服务器同步网络时间。

3.准备

操作系统:CentOS 7.3。

4.考点:单台服务器同步时间

(1)使用date查看虚拟机当前时间

Linux系统中时钟有两个,一个是系统时钟,即Linux系统Kernel时间,另一个是硬件时钟,即主板上的BIOS时间。系统启动时,系统时间会读取硬件时钟的设置并独立于硬件运行,这个过程可能存在时区换算,导致系统时钟和硬件时钟不一致。

结果中可以看到,其系统时间为“07:31:33”,时区为“+0000”表示为0时区,和硬件时间(东八区)时间相差8个小时。

(2)修改时间与时区

①使用date-s命令修改当前时间。

结果中可以看到,系统时间虽然已经修改,但是其时区依然没有变化。

②使用ntpdate命令使网络时间同步。

参数说明:-u:越过防火墙与主机同步。ntp常用服务器:NTP服务器(上海):ntp.api.bz;中国国家授时中心IP地址:210.72.145.44。

③使用timedatectl命令查询和更改系统时钟和设置,使用“set-timezone”设定对应时区。

④使用tzselect查找和修改时区。

注:tzselect命令只是告诉提示时区的方法,根据得到的提示“TZ=′Asia/Shanghai′;export TZ”,需要将TZ环境变量写入.profile文件。

⑤修改配置文件,将/usr/share/zoneinfo中相应的时区文件(如Asia/Shanghai)替换当前的系统时区文件/etc/localtime,此种修改方式对date命令是即时生效的。

⑥使用hwclock同步本地系统时钟和BIOS时间。