时间同步ntpd/chrony
在Linux系统中,NTP协议由运行在用户空间中的守护程序实现,用户空间守护程序更新内核中运行的系统时钟,系统时钟可以通过使用各种时钟源来节省时间。通常使用时间戳计数器(TSC),TSC是一个CPU寄存器,用于计数自上次复位以来的周期数,具有高分辨率并且没有中断。当前主流的NTP(Network Time Protocol,网络时间协议)实现包括ntpd服务、chrony服务等。在CentOS6中默认是使用ntpd来同步时间的,在Centos7中默认使用chrony服务来实现时间同步。下面具体介绍两种时钟同步服务的使用方式以及性能对比。
一、相关时间概念介绍
GMT、UTC、CST
UTC:整个地球分为二十四时区,每个时区都有自己的本地时间。在国际无线电通信场合,为了统一起见,使用一个统一的时间,称为通用协调时间 (UTC, Universal Time Coordinated)。
GMT:格林威治标准时间 (Greenwich Mean Time) 指位于英国伦敦郊区的皇家格林尼治天文台的标准时间,因为本初子午线被定义在通过那里的经线。(UTC与GMT时间基本相同)
CST:中国标准时间 (China Standard Time)
GMT + 8 = UTC + 8 = CST
硬件时间和系统时间
硬件时间:RTC (Real-Time Clock)或CMOS时间,一般在主板上靠电池供电,服务器断电后也会继续运行。仅保存日期时间数值,无法保存时区和夏令时设置。
系统时间:一般在服务器启动时复制 RTC 时间,之后独立运行,保存了时间、时区和夏令时设置。
二、NTPD
CentOS6.x中默认使用ntpd来同步时间,现存大量服务器依然在沿用该服务进行时间同步。可通过相关命令确认当前主机是否已经安装ntp。
systemctl status ntpd 或 rpm -qa | grep ntp
如果当前系统未安装ntpd服务,可以手动进行安装:yum isntall ntp
修改配置文件/etc/ntp.conf:
(1)注释掉配置文件中的 server xxx iburst xxx xxx
(2)新增 server 10.8.79.239 iburst
配置完毕后启动ntpd服务:systemctl start ntpd && systemctl enable ntpd
查看ntp[服务器的状态:ntpq -p
查看时间同步的状态:ntpstat
此外,可以手动进行时间同步:ntpdate <ntpserver_ip>
三、Chrony
chrony 是网络时间协议(Network Time Protocol )的通用实现,它不但可以提供保持系统时间与 NTP 时钟服务器同步的服务,还能作为 NTP 服务器对其他服务器提供时间同步服务。
chrony主要包括两个核心组件:
(1)chronyd:守护进程,主要用于调整内核中运行的系统时间和时间服务器同步;
(2)chronyc:命令行界面程序,用户可以借助该命令对chronyd的性能进行监控等;
chrony的主要特点包括:
(1)任何情况下都能够运行良好,即使运行在不稳定的网络或者系统中;
(2)精度非常高,通常以几十微秒为单位;
(3)开源
Centos7.x默认已安装并启用chronyd服务,使用前可通过相关命令进行确认。
systemctl status chronyd 或 rpm -qa | grep chrony
如果当前系统未安装chronyd服务,可以手动进行安装:yum install chrony
修改配置文件/etc/chrony.conf:
(1)注释掉配置文件中的 server x.centos.pool.ntp.org iburst
(2)新增 server 10.8.79.239 iburst minpoll 6 maxpoll 10
配置完毕后启动chronyd服务:systemctl start chronyd && systemctl enable chronyd
检查时间是否同步:chronyc tracking
查看时钟源的状态
如果需要立即进行时间同步,可以重启chronyd服务:systemctl restart chronyd
此外,对/etc/chrony.conf进行相应的配置,当前主机可作为时钟同步服务器供其他主机同步这台服务器上的时间。限于篇幅,这里不再具体介绍。
四、Chrony 和 NTPD 性能对比
我们可以从 Chrony 的官方网站上看到与 NTPD 各维度的详细对比。
可以看出,在稳定系统(稳定网络、稳定时钟)以及不稳定系统(不稳定网络、不稳定时钟)条件下,chrony的时钟同步性能都要优于ntp。
可以看出,chrony可以随机间歇性校准时间,而ntp需要定期轮询才能正常工作。此外,chrony拥有更小的时间轮询间隔,能够更快的同步时钟。