在Linux下,默认情况下,系统时间和硬件时间,并不会自动同步。在Linux运行过程中,系统时间和硬件时间以异步的方式运行,互不干扰。硬件时间的运行,是靠Bios电池来维持,而系统时间,是用CPU tick来维持的。在系统开机的时候,会自动从Bios中取得硬件时间,设置为系统时间。有时我们会发现系统时钟和硬件时钟不一致,因此需要执行时间同步。

概述

Chrony是一个开源的自由软件是,网络时间协议(NTP)的一种通用实现, 支持LinuxFreeBSDNetBSDmacOSSolaris系统。

它由两个程序组成,分别是chronydchronycchronyd是一个后台运行的守护进程,用于调整内核中运行的系统时钟和时钟服务器同步。它确定计算机增减时间的比率,并对此进行补偿。chronyc提供了一个用户界面,用于监控性能并进行多样化的配置。它可以在chronyd实例控制的计算机上工作,也可以在一台不同的远程计算机上工作。

在像CentOS 7之类基于RHEL的操作系统上,已经默认安装有Chrony,若系统是最小化安装则需要通过yum来安装。

安装Chrony

1
2
3
4
5
6
7
8
9
10
yum install chrony -y

# 删除默认Server
sed -i "/server/d" /etc/chrony.conf

# 增加阿里云时间服务器
sed -i '$a\server ntp.aliyun.com iburst' /etc/chrony.conf

# 重启chronyd
systemctl restart chronyd

检测是否正常

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[root@test-01 ~]# chronyc tracking
Reference ID : CB6B0658 (203.107.6.88)
Stratum : 3
Ref time (UTC) : Tue Jul 02 01:54:45 2019
System time : 0.000000000 seconds fast of NTP time
Last offset : +383.934600830 seconds
RMS offset : 383.934600830 seconds
Frequency : 0.000 ppm slow
Residual freq : -326.538 ppm
Skew : 1000000.000 ppm
Root delay : 0.035907604 seconds
Root dispersion : 1.664801955 seconds
Update interval : 0.0 seconds
Leap status : Normal
[root@test-01 ~]# date
Tue Jul 2 09:54:51 CST 2019