两个时钟:硬件时间时钟(RTC),系统时钟(System Clock)

硬件时钟是指嵌在主板上的特殊的电路, 它的存在就是平时我们关机之后还可以计算时间的原因
系统时钟就是操作系统的kernel所用来计算时间的时钟. 它从1970年1月1日00:00:00 UTC时间到目前为止秒数总和的值 在Linux下系统时间在开机的时候会和硬件时间同步(synchronization),之后也就各自独立运行了

那么既然两个时钟独自运行,那么时间久了必然就会产生误差了,如:
[root@TestProduction qyapp]#date
Fri Feb 24 14:48:00 CST 2017
[root@TestProduction qyapp]#hwclock –show
Fri 24 Feb 2017 02:48:05 PM CST -0.381656 seconds

# hwclock –set –date=”mm/dd/yy hh:mm:ss” 设置硬件时间 也可在bios设置
# date -s “dd/mm/yyyy hh:mm:ss” 修改系统时间

# hwclock –hctosys 把硬件时间设置成系统时间
# hwclock –systohc 把系统时间设置成硬件时间

NTP服务器,即Network Time Protocol。是用来使计算机时间同步化的一种协议,它可以使计算机对其服务器做同步化,
它可以提供高精准度的时间校正(LAN上与标准间差小于1毫秒,WAN上几十毫秒),且可介由加密确认的方式来防止恶毒的协议攻击。

yum install ntp -y #安装NTP服务
ntpdate cn.pool.ntp.org #手动同步时间 中国国家授时中心服务器地址 第一次同步时间,测试命令在安装服务后是否正常使用。
hwclock -w #将目前的Linux系统时间写入BIOS中

为什么在打开NTP服务之前先要手动运行同步呢?
1. 因为根据NTP的设置,如果你的系统时间比正确时间要快的话那么NTP是不会帮你调整的,所以要么你把时间设置回去,要么先做一个手动同步
2. 当你的时间设置和NTP服务器的时间相差很大的时候,NTP会花上较长一段时间进行调整.所以手动同步可以减少这段时间

NTP Server配置
配置文件 /etc/ntp.conf
server time1.aliyun.com
server time2.aliyun.com
fudge 127.127.1.0 stratum 0 stratum #这行是时间服务器的层次。设为0则为顶级,如果要向别的NTP服务器更新时间,请不要把它设为0
driftfile /var/lib/ntp/ntp.drift

service ntpd start
chkconfig –level 345 ntpd on

工具: ntpq (NTP query)
watch -n 0.1 ntpq -p
含义

remote: 它指的就是本地机器所连接的远程NTP服务器
refid: 它指的是给远程服务器(e.g. 193.60.199.75)提供时间同步的服务器
st: 远程服务器的层级别(stratum). 由于NTP是层型结构,有顶端的服务器,多层的Relay Server再到客户端. 所以服务器从高到低级别可以设定为1-16. 为了减缓负荷和网络堵塞,原则上应该避免直接连接到级别为1的服务器的.
t: 这个…..我也不知道啥意思^_^
when: 我个人把它理解为一个计时器用来告诉我们还有多久本地机器就需要和远程服务器进行一次时间同步
poll: 本地机和远程服务器多少时间进行一次同步(单位为秒). 在一开始运行NTP的时候这个poll值会比较小,那样和服务器同步的频率也就增加了,可以尽快调整到正确的时间范围.之后poll值会逐渐增大,同步的频率也就会相应减小
reach: 这是一个八进制值,用来测试能否和服务器连接.每成功连接一次它的值就会增加
delay: 从本地机发送同步要求到服务器的round trip time
offset: 这是个最关键的值, 它告诉了我们本地机和服务器之间的时间差别. offset越接近于0,我们就和服务器的时间越接近
jitter: 这是一个用来做统计的值. 它统计了在特定个连续的连接数里offset的分布情况. 简单地说这个数值的绝对值越小我们和服务器的时间就越精确

1. 配置文件中的driftfile是什么?
我们每一个system clock的频率都有小小的误差,这个就是为什么机器运行一段时间后会不精确. NTP会自动来监测我们时钟的误差值并予以调整.但问题是这是一个冗长的过程,所以它会把记录下来的误差先写入driftfile.这样即使你重新开机以后之前的计算结果也就不会丢失了

2. 如何同步硬件时钟?
NTP一般只会同步system clock. 但是如果我们也要同步RTC(hwclock)的话那么只需要把下面的选项打开就可以了
代码:
# vi /etc/sysconfig/ntpd
SYNC_HWCLOCK=yes

4 对 “NTP客户端设置”的想法;

  1. 若出现the NTP socket is in use, exiting
    先停止ntpd服务,再执行ntpd XXX即可

    date #sys time
    hwclock –show #hw time
    hwclock –hctosys #把硬件时间设置成系统时间
    hwclock –systohc #把系统时间设置成硬件时间
    hwclock –set –date=”mm/dd/yy hh:mm:ss” #设置硬件时间
    date -s “dd/mm/yyyy hh:mm:ss” #修改系统时间

  2. 阿里的ntp:
    内网NTP服务器

    阿里云为云服务器ECS提供了内部的NTP时间服务器,如下:

    10.143.33.50
    10.143.33.51
    10.143.33.49
    10.143.0.44
    10.143.0.45
    10.143.0.46
    公共NTP服务器

    虽然非阿里云的设备不能用阿里云的内网NTP服务器,但是阿里云提供了公共NTP服务器,供互联网上的设备使用。其主要特性是GPS、北斗授时、原子钟守时的一级时间源多机房、多链路冗余。

    服务域名是:

    Unix类系统:time1-7.aliyun.com
    Windows: time.pool.aliyun.com
    另外,阿里云还提供了其他的互联网基础服务,例如:

    公共DNS:223.5.5.5/223.6.6.6,域名是 http://www.alidns.com
    公共镜像站:http://mirrors.aliyun.com/ 镜像同步频率是每天凌晨2:00-4:00,覆盖了大多数开源软件及Linux发行版。

  3. 常用NTP服务器:
    210.72.145.44 (国家授时中心服务器IP地址)
    133.100.11.8 日本 福冈大学
    time-a.nist.gov 129.6.15.28 NIST, Gaithersburg, Maryland
    time-b.nist.gov 129.6.15.29 NIST, Gaithersburg, Maryland
    time-a.timefreq.bldrdoc.gov 132.163.4.101 NIST, Boulder, Colorado
    time-b.timefreq.bldrdoc.gov 132.163.4.102 NIST, Boulder, Colorado
    time-c.timefreq.bldrdoc.gov 132.163.4.103 NIST, Boulder, Colorado
    utcnist.colorado.edu 128.138.140.44 University of Colorado, Boulder
    time.nist.gov 192.43.244.18 NCAR, Boulder, Colorado
    time-nw.nist.gov 131.107.1.10 Microsoft, Redmond, Washington
    nist1.symmetricom.com 69.25.96.13 Symmetricom, San Jose, California
    nist1-dc.glassey.com 216.200.93.8 Abovenet, Virginia
    nist1-ny.glassey.com 208.184.49.9 Abovenet, New York City
    nist1-sj.glassey.com 207.126.98.204 Abovenet, San Jose, California
    nist1.aol-ca.truetime.com 207.200.81.113 TrueTime, AOL facility, Sunnyvale, California
    nist1.aol-va.truetime.com 64.236.96.53 TrueTime, AOL facility, Virginia
    ————————————————————————————————————
    ntp.sjtu.edu.cn 202.120.2.101 (上海交通大学网络中心NTP服务器地址)
    s1a.time.edu.cn 北京邮电大学
    s1b.time.edu.cn 清华大学
    s1c.time.edu.cn 北京大学
    s1d.time.edu.cn 东南大学
    s1e.time.edu.cn 清华大学
    s2a.time.edu.cn 清华大学
    s2b.time.edu.cn 清华大学
    s2c.time.edu.cn 北京邮电大学
    s2d.time.edu.cn 西南地区网络中心
    s2e.time.edu.cn 西北地区网络中心
    s2f.time.edu.cn 东北地区网络中心
    s2g.time.edu.cn 华东南地区网络中心
    s2h.time.edu.cn 四川大学网络管理中心
    s2j.time.edu.cn 大连理工大学网络中心
    s2k.time.edu.cn CERNET桂林主节点
    s2m.time.edu.cn 北京大学

  4. 将任务写入crontab
    $ vim /etc/crontab #加入这一行
    10 5 * * * (/usr/sbin/ntpdate cn.pool.ntp.org && /sbin/hwclock -w) &>/dev/null
    使用crontab之后,每天05:10Linux系统就会自动的进行网络较时。这种方式仅适合不启动NTP的情况。当主机数量大于10台时,可以通过客户端启动NTP服务,NTP去主动地更新时间。

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注

Captcha Code