Linux时间服务(ntp和chrony)

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

目录

本节实践

  1. 实践:Centos7 时间服务器搭建(ntp服务方式)(测试成功)-2022.5.31
  2. 实践:Centos7 时间服务器搭建(chrony服务方式)(测试成功)-2022.5.31

1、Centos7 时间服务器搭建(ntp服务方式)

实践:Centos7 时间服务器搭建(ntp服务方式)(测试成功)-2022.5.31

前言

Linux的两种时钟: (1)系统时钟(System Clock)由Linux内核通过CPU的工作频率进行的 (2)硬件时钟(RealTime Clock,简称RTC):主板

注意:系统时间是基于内存的,断电就会丢失;硬件时间是写在硬件中的bios程序里的

系统时钟是指当前Linux Kernel中的时钟,而硬件时钟则是主板上由电池供电的时钟,这个硬件时钟可以在BIOS中的“Standard BIOS Feture”选项进行设置。

当Linux启动时,硬件时钟会去读取系统时钟的设置,然后系统时钟就会独立于硬件运作。因此系统时钟和硬件时钟可以采用异步方式即系统时间和硬件时间可以不同。从linux启动过程来看,系统时钟和硬件时钟不会发生冲突但linux中的所有命令都是采用的系统时钟设置

1.标准时间

说到时间,我们先来了解一下标准时间的概念及演变。

早期,标准时间采用的是格林尼治时间,即GMT,也称为世界时。它是指英国伦敦格林尼治天文台的标准时间,是以地球自转为基础,根据太阳横穿格林尼治本初子午线(即0度经线)来确定标准时间,用天来定义秒的计量系统,是基于天文学的由于地球自转速度不均匀,并且正在缓慢减速,因此,在GMT下,每天的一秒在微观尺度上和其它天的都不相同,不是一种均匀的时间系统

基于某些元素的原子能级跃迁频率有极高的稳定性这一特点,1967年国际度量衡大会对秒重新进行了定义:铯133元素的两个超精细能阶之间跃迁时所辐射的电磁波的周期的9,192,631,770倍的时间定义为一秒。在此基础上,1971年由国际时间局建立了国际原子时(TAI),并取1958年1月1日0时0分0秒世界时的瞬间作为同年同月同日0时0分0秒TAI。因此,TAI是基于物理学,为一种极其精确的时间系统,是用秒来定义天。

为解决TAI和GMT之间的时间误差,协调世界时于1972年面世。协调世界时,又称世界标准时间、国际协调时间,简称UTC。以TAI秒长为基础,当GMT与TAI之间时刻相差超过0.9秒时,通过在当年的6月30日或12月31日的最后时刻增减1秒进行修正,在时刻上尽量接近GMT。这就是闰秒。自1972年以来,一共进行了27次闰秒调整,都是正闰秒,即增加一秒

闰秒在当今存在一些争议。一些国家(如美国、法国、日本)认为应该直接使用TAI,不需要闰秒。因为要让世界各国在同一个瞬间增加一个闰秒,绝非易事。稍有疏忽,很多重要系统就会因时间误差而导致混乱。而且,基于闰秒出现的无规律性和不可预知性要在设备上预留“置闰”设置也非常麻烦。总而言之,闰秒会让全世界付出更多的许多人力财力成本。而另一些国家(如中国、英国、俄罗斯)则认为,在地球越转越慢的现实之中,五千年后的人类将发现,“日居正中”将是下午1时。“作为科技进步的产物,全面采用原子时,意味着人们可以完全摆脱地球自转与日月更替,孤独地奔跑在向前的路上。”,因此需要用闰秒进行修正。就最近国际电信联盟的投票结679C而言,闰秒得以保留,UTC依然作为公认的国际标准时间

2.网络时间(NTP)协议

NTP(Network Time Protocol) 网络时间协议,工作在UDP的123端口上。是用来使计算机时间同步化的一种协议,它可以使计算机对其服务器或时钟源(如石英钟,GPS等等)做同步化,它可以提供高精准度的时间校正(局域网上与标准间差小于1毫秒,互联网上几十毫秒)且可介由加密确认的方式来防止恶毒的协议攻击

既然确定了UTC作为公认的国际标准时间。那如何保证时间的统一性和准确性,是按照A这台计算机的时间,还是按照B这台计算机的时间?这就需要用到网络时间协议,英文名称为Network Time Protocol ,简称NTP。通过该协议,可以把计算机的时钟同步到UTC,其精度在局域网内可达0.1ms,在互联网上绝大多数的地方其精度可以达到1-50ms

在NTP中,时间按照服务器的等级传播,Stratum-1(我们一般称作一级服务器)为最高层,其时间源为标准UTC,该时间源可以来自外部,如北斗、GPS也可以来自该服务器内部的原子钟。而Stratum-2(二级服务器)则从Stratum-1获取时间,Stratum-3从Stratum-2获取时间,以此类推,但Stratum层的总数最多不超过15层为防止单点故障,每一级服务器都应该有多台,且数量一般为奇数,以便于下级服务器决策。

在NTP协议中,下级服务器在指定的轮询时间范围(如64秒至1024秒)内,向上一级服务器通过UDP123端口*发送报文,进行探测,根据多次的探测结果进行时间校准。在默认配置下,时差在128ms以内,会分成多步慢慢调整时差在128ms至1000ms,时间会一次性调整到位*时差超过1000ms,NTP会判定为当前环境不可靠,而中止运行。有些系统支持对以上参数进行调整,但有些系统则不可以。

正如之前所提到的,在对时间精确度要求很高的环境下进行闰秒的调整绝非易事其最主要的原则就是不能发生时间跳变。在一个复杂网络环境中,*不是所有的系统或设备都能支持参数调整,也就是说在向上级服务器探测时间时,时差不能超过128ms。所以闰秒调整需分多步进行,以保证每一级服务时间差不超过128ms。受到网络传输延时的影响,在广域网内,越远端的服务器(如Stratum-15)的时间波动越明显,因此,在确认闰秒分步调整时,需要考虑这方面的因素,合理确定分步范围。根据笔者最近两次的调整经验,在3层服务器架构中,一次闰秒调整需分13次至15次完成。*

NTP有足够的容错性,除之前提到的1000ms中止运行外,还能根据算法,选用可靠的上一级服务器。当无法正确获得上一级服务器时间时,NTP将使用自身的时间设备(普通设备一般为晶振,一级服务器一般为原子钟)提供服务。

3.NTP服务器

NTP服务器提供准确时间,首先要有准确的时间来源,这一时间应该是国际标准时间UTC。NTP获得UTC的时间来源可以是原子钟、天文台、卫星也可以从Internet上获取。这样就有了准确而可靠的时间源。时间按NTP服务器的等级传播。按照离外部UTC 源的远近将所有服务器归入不同的Stratum(层)中。Stratum-1在顶层,有外部UTC接入,而Stratum-2则从Stratum-1获取时间,Stratum-3从Stratum-2获取时间,以此类推,但Stratum层的总数限制在15以内。所有这些服务器在逻辑上形成阶梯式的架构相互连接,而Stratum-1的时间服务器是整个系统的基础。

计算机主机一般同多个时间服务器连接, 利用统计学的算法过滤来自不同服务器的时间,以选择最佳的路径和来源来校正主机时间即使主机在长时间无法与某一时间服务器相联系的情况下,NTP服务依然有效运转。为防止对时间服务器的恶意破坏,NTP使用了识别(Authentication)机制,检查来对时的信息是否是真正来自所宣称的服务器并检查资料的返回路径,以提供对抗干扰的保护机制。

4.NTP校时方式

时间服务器可以利用以下三种方式与其他服务器对时:broadcast/multicast,client/server和Symmetric

(1)broadcast/multicast:方式主要适用于局域网的环境,时间服务器周期性的以广播的方式,将时间信息传送给其他网路中的时间服务器,其时间仅会有少许的延迟,而且配置非常的简单。但是此方式的精确度并不高,对时间精确度要求不是很高的情况下可以采用。

(2)Symmetric:的方式得一台服务器可以从远端时间服务器获取时钟,如果需要也可提供时间信息给远端的时间服务器此一方式适用于配置冗余的时间服务器,可以提供更高的精确度给主机。

(3)client/server:方式与symmetric方式比较相似,只是不提供给其他时间服务器时间信息,此方式适用于一台时间服务器接收上层时间服务器的时间信息,并提供时间信息给下层的用户。

上述三种方式,时间信息的传输都使用UDP协议。时间服务器利用一个过滤演算法,及先前八个校时资料计算出时间参考值,判断后续校时包的精确性,一个相对较高的离散程度,表示一个对时资料的可信度比较低仅从一个时间服务器获得校时信息,不能校正通讯过程所造成的时间偏差,而同时与许多时间服务器通信校时,就可利用过滤算法找出相对较可靠的时间来源,然后采用它的时间来校时。

1.ntp服务器配置

  • 安装并配置ntp时间服务器

NTP在Linux主机上默认一般都是安装过的,只是服务没有启用。如果没有安装可直接使用

yum install ntp

命令即可。

NTP的主配置文件,以下是NTP服务器可选的指令:

//特别注意:以下配置文件是服务器端即ntp时间服务器的配置方法,这里csdn文章只作为配置参考,工作中并没有亲自配置过。

vim /etc/ntp.conf

# 允许172.16.*.*的IP使用该时间服务器;
restrict 172.16.0.0 mask 255.255.0.0 nomodify

#允许任何人来同步;
restrict default nomodify notrap

# 屏蔽其他IP过来更新时间;
restrict 0.0.0.0 mask 0.0.0.0 nomodify notrap noquery notrust 
#ignore:关闭所有的NTP联机服务;
#nomodify:表示Client端不能更改Server端的时间参数;不过Client端仍然可以透过Server端来进行网络校时;
#notrust:该Client除非通过认证否则该Client来源将被视为不信任网域;
#noquery:不提供Client端的时间查询;
#notrap:允许任何人来查询;

# 同步的上层服务器(210.72.145.44国家时间服务器),NTP服务器默认也有同步的时间服务器;
server 210.72.145.44

# 同步本地时间;
server 127.127.1.0 prefer

# 本地服务器的stratum大小不能超过16;
fudge 127.127.1.0 stratum 8

# 将时间同步到硬件时钟
SYNC_HWCLOCK=yes
  • 启动NTP服务器
systemctl enable ntpd
systemctl start ntpd
  • 查看NTP信息

1.查看NTP状态:

ntpq -p

(注意,客户端上也是可以用这个命令的)

可以使用ntpq –p查看ntp状态。正常情况下:remote列的各个服务器前, 应该有一个*,其它为+

注意:本次这个时间是与阿里云源同步的;

注意:NTP服务器配置完成启动之后,NTP自身或者与其server的同步需要一个时间段这个过程可能是5-10分钟,在这个时间段内客户端运行ntpdate命令时会产生

no serversuitable for synchronization found

的错误。

输出说明如下:

remote: 对应的NTP服务器,服务器名字前的符号含义如下:

*:选定的时间服务器
+: 处于候选状态的服务器
#: 选定的时间服务器,但距离超过最大值(这句话不太容易理解,但就经验判断,一般是上级之上的服务器存在问题)。
空格:该服务器不可用,原因为未能同步(可能是刚启动还未同步,也有可能是其它原因)。
-: 该服务器不可用。被集群算法所放弃。
x: 该服务器不可用。被交集算法所放弃。

refid: 对应的NTP服务器的上一级NTP服务器。

st: 对应的NTP服务器所在的Stratum(即服务器级别,1为第一级,2为第二级,以此类推)

t:……

when: 上一次探测ntp服务器到现在的时间(默认单位为秒,如果时间较长,会出现m、h,分别代表分钟和小时)

poll: 探测ntp服务器的轮询时间,单位为秒。

reach:为8进制,转换为二进制后,代表最近8次探测ntp服务器的状态。失败为0,成功为1。

delay:与ntp服务器的网络时延,单位为毫秒。

offset:与NTP服务器的时间(协议值)偏差,单位为毫秒。本机时间+offset=NTP服务器时间

jitter:有的版本为disp。多数情况下为最近两次有变化的offset差的绝对值。

2.查看实时时间偏差:

ntpdate -q 对方ip

(注意,客户端上也是可以用这个命令的)

正常输出如下:

server 192.168.11.33, stratum 2, offset 0.000843, delay 0.02579
24 Jan 20:09:19 ntpdate[10420968]: adjust time server 192.168.11.33 offset 0.000843

offset的值即为实时偏差值,单位为s。

如果显示如下:

server 192.168.11.44, ***\*stratum 0, offset 0.000000, delay 0.00000
24 Jan 20:11:26 ntpdate[15139008]: no server suitable for synchronization found

则说明无法从上级服务器获得时间信息,产生原因有可能是网络不通,也有可能是上级服务器未开启ntp服务。

  • 将时间同步到硬件时钟

[root@centos77-test ~]#vim /etc/ntp.conf

SYNC_HWCLOCK=yes # 添加如下内容到此配置文件中去。

2.ntp客户端配置

注意:一般客户端建议的配置做法如下

1、确保服务器安装了ntp服务:

yum install -y ntp

systemctl enable ntpd
systemctl start ntpd 

2、配置ntp配置文件

本人在工作中常用到的配置如下:

vim /etc/ntp.conf

注释上面4个server行,添加如下2个ntp时间服务器ip,然后重启ntpd服务即可。

server 主时间服务器 preferserver

从时间服务器server 从时间服务器

3、与服务器端同步时间

注意,一般工作中,没用到下面这些脚本,是从配置openstack中Get到的方法,可以作为参考。

ntpdate 172.16.16.1 # 注意,这个ip就是ntp时间服务器的ip

需要注意的是,这个命令将一次性把时间同步到位,会产生时间的跳变,需确定无影响后再执行。

//写到脚本中去。
crontab -e
*/10 * * * * /usr/sbin/ntpdate time1.aliyun.com && hwclock -w

# */10 * * * * /usr/sbin/ntpdate ntp时间服务器ip && hwclock -w 

4、查看ntp服务状态

systemctl status ntpd 
ntpq -p 
ntpdate -q ip  

测试结束

2、Centos7时间服务器搭建(chrony服务方式)

实践:Centos7 时间服务器搭建(chrony服务方式)(测试成功)-2022.5.31

前言

Chrony是一个开源的自由软件,它能保持系统时钟与时钟服务器(NTP)同步,让时间保持精确。它由两个程序组成:chronyd和chronyc

chronyd是一个后台运行的守护进程,用于调整内核中运行的系统时钟和时钟服务器同步。它确定计算机增减时间的比率,并对此进行补偿。

chronyc 提供了一个用户界面,用于监控性能并进行多样化的配置。它可以在chronyd实例控制的计算机上工作,也可以在一台不同的远程计算机上工作

配置文件:Chrony启动时,它会读取

/etc/chrony.conf

配置文件中的设置。

1、服务端时间同步配置

服务端安装chrony:

[root@localhost ~]# yum install chrony –y  #安装chrony

服务端配置chrony主机: cat /etc/chrony.conf 备注:以下配置内容为csdn博客当时配置的信息,具体内容视情况而定。

设置开机自启:
#systemctl start  chronyd
#systemctl status chronyd --查看chronyd服务状态
#systemctl enable chronyd --开机启动

查看时间同步源:

# chronyc sources -v

2、客户端时间同步配置

客户端安装chrony
[root@localhost ~]# yum install chrony –y

客户端配置文件:
cat  /etc/chrony.conf

客户端启动服务:
#systemctl start  chronyd
#systemctl status chronyd --查看chronyd服务状态
#systemctl enable chronyd --开机启动

查看时间同步源:

# chronyc sources -v 

* 符号就代表客户端已经正常与时间服务器进行时间同步。

引用

csdn:https://blog.csdn.net/genglei1022/article/details/77833406

3、chrony和ntpd精度对比测试

一般搭建NTP时间服务器的搭建有2种方式:

\1. 利用ntp服务搭建;

\2. 利用chrony服务搭建;

尽量优先使用chrony配置时间同步(较好适配centOS7及以上版本)。并且,常规的ntp服务可能会涉及一些系统相关信息,不安全。

1. chrony和ntpd精度对比测试

Redhat从RHEL 7.0开始使用chrony替换ntpd作为默认的ntp同步工具。从chrony的官方网站上可以看到与ntpd各维度详细对比:

在测试之前,从理论上说chrony的主要优点在于:

\1. 支持Hardware timestamping,时间戳会更加准确,因为从网卡到内核之间的延迟可能有几十us。

\2. 支持xleave,可以提升对网络延迟的测量精度。

为了评估内部是否需要使用chrony来替换ntpd,我自己也做了一些测试。主要是从集群的延迟稳定性和时钟偏差2个维度来衡量。

测试集群选择三个城市的多个机房内服务器做测试。

1.chrony的延迟稳定性

2.ntpd延迟稳定性

****

3.chrony时钟稳定性

4.ntpd的时钟稳定性

从上面的4个图可以看到,实际上NTPD的同步稳定性相对比较好一些。NTP协议本身精度的瓶颈是在于网络延迟稳定性,NTPD在这一块有大量的算法保证:

\1. Clock Filter Algorithm (huff-n’-puff filter)

\2. Clock Select Algorithm

\3. Clock Cluster Algorithm:

\4. Clock Discipline Algorithm:

整体的流程如下:

正因为NTP的设计者一开始就考虑的非常全面,使得目前NTP的授时精度早已经达到理论瓶颈。广域网的授时精度要想稳定性&精度超越ntpd,几乎不太可能(PTP只能用户局域网),因此短期内我还是会继续选择NTPD作为时钟同步软件。

对于NTP这种古老的协议,目前还有人愿意投入精力去改进实际是非常难能可贵的,真心希望chrony能早日从稳定性&精度两个方面超越ntpd。

参考链接:https://chrony.tuxfamily.org/comparison.html

引用:https://blog.gnuers.org/?p=1483

2. 关于时间服务(ntpd、chrony)的应用场景

一般来说在中大型的网络环境中时间服务器基本上来说是必须的,在内网中建立一台时间服务器,其他的服务器都来此服务器同步时间。 像虚拟机如果关机或者是被暂停了之后再开机的时候时间还是原来的时间,这个时候就需要从新同步时间。如果时间不对可能对业务环境有影响。 比如说像一些分布式系统集群等相互协调工作的应用都需要时间同步服务来确保每个服务器的时间是一致的。 ntpd、chrony这两款时间管理服务应该怎样选型呢?centos7.4之前的系统默认是提供的ntpd来作为时间管理服务的,之后就是chrony。其实两个都差不多,看个人喜好。

4、Linux时间服务相关命令

1、显示与设定系统时钟:date命令

date命令使用“+”来传递参数。常用参数如下:

1.显示系统时间

例子:显示系统时间:date;hwclock;clock

[root@gitlab-runner ~]#date
Wed May 18 07:23:01 CST 2022
[root@gitlab-runner ~]#hwclock 
cWed 18 May 2022 07:23:04 AM CST  -0.282491 seconds
[root@gitlab-runner ~]#clock
Wed 18 May 2022 07:23:05 AM CST  -0.065940 seconds

例子

%Y表示年、%m表示月、%d表示天、 %H表示小时、%M表示分钟、%S表示秒;(%T==%H:%M:%S)

例子:获取年月日:date +%Y-%m-%d ;date %F

方法1:

[root@gitlab-runner ~]#date +%F
2022-05-18

# 说明:
%F 显示当下日期

方法2:

[root@gitlab-runner ~]#date +%Y-%m-%d
2022-05-18 

例子:

date +%y-%m-%d %H:%M:%S

%y 代表年份最后2位数

利用变量输出当前时间:

[root@gitlab-runner ~]#DATETIME=$(date "+%Y-%m-%d %H:%M:%S %A")
[root@gitlab-runner ~]#echo $DATETIME
2022-05-18 07:25:48 Wednesday

例子:获取时间戳:date +%s

[root@gitlab-runner ~]#date +%s #%s表示时间戳
1652830295

[root@gitlab-runner ~]#date --date=20150820 +%s  #获取2015/08/20 的时间戳。
1440000000

# %s表示linux时间戳的秒数。
#  Unix时间戳(英文为Unixepoch, Unix time, POSIX time 或 Unix timestamp)
#  是从1970年1月1日(UTC/GMT的午夜)开始所经过的秒数,不考虑闰秒。

例子:显示周几:date +%A ;date +%a

[root@gitlab-runner ~]#date +%A
Wednesday

[root@gitlab-runner ~]#date +%a
Wed

# 说明:
%A 显示周
%a 显示周(前3个字母,其缩写形式)

例子:显示月份:date +%B;date +%b

[root@gitlab-runner ~]#date +%B
May

[root@gitlab-runner ~]#date +%b
May

# %B %b 显示月份

例子:时间格式的2种输出

[root@localhost ~]# date +%F_%H-%M-%S #方法1
2021-03-10_14-26-39

[root@localhost ~]# date +%Y-%m-%d_%H-%M-%S #方法2
2021-03-10_14-28-31

例子:显示昨天和明天

#当前日期:
[root@k8s-master ~]#date
Mon May 30 21:49:36 CST 2022

[root@k8s-master ~]#date -d yesterday
Sun May 29 21:51:58 CST 2022
[root@k8s-master ~]#date -d tomorrow
Tue May 31 21:52:03 CST 2022

或者:
[root@k8s-master ~]#date +%Y%m%d -d "-1 day"
20220529
[root@k8s-master ~]#date +%Y%m%d -d "+1 day"
20220531

例子:显示本月和下月

[root@k8s-master ~]#date +%Y%m%d -d "-1 month"
20220430
[root@k8s-master ~]#date +%Y%m%d -d "+1 month"
20220630

或者:
[root@k8s-master ~]#date +%Y%m%d --date="-1 month"
20220430
[root@k8s-master ~]#date +%Y%m%d --date="+1 month"
20220630

例子:shell脚本指定日期减去一天或几天

date -d参数可以根据当前日期获取更多我们需要的日期。
#如果只减去一天的话,直接写就可以了。
#date -d"yesterday 20150401" +%Y%m%d
[root@k8s-master ~]#date -d"yesterday 20150401" +%Y%m%d
20150331

#如果要减去几天,还可以这样写,如果用负数是往前数,
#date -d"10 day ago 2015-04-01" +%Y-%m-%d
[root@k8s-master ~]#date -d"10 day ago 2015-04-01" +%Y-%m-%d
2015-03-22

#在指定的日期上加上指定的小时
[dc@dc010.tj.momo.com init_env]$ date -d "20150416 12 3 hour" +"%Y%m%d%H"
2015041615

#在指定的日期上减去指定的小时
[dc@dc010.tj.momo.com init_env]$ date -d "20150416 12 -1 hour" +"%Y%m%d%H"
2015041611

#在指定的日期上加上指定的分钟
[dc@dc010.tj.momo.com init_env]$ date -d "20150416 12:20 10 minute" +"%Y%m%d%H%M"
201504161230

2.修改系统时间

例子:修改日期和时间

date -s '2015-04-11 13:15:15' 

date命令修改完时间后,系统时间立即且永久生效,再次登录shell发现已经是修改后的时间了:

例子:修改日期

[root@localhost ~]# date -s 2015/08/23 #设置日期
Sun Aug 23 00:00:00 CST 2015

或者:

例子:修改时间

[root@localhost ~]# date -s 19:18:30 #设置时间
Sun Aug 9 19:18:30 CST 2015

2、显示与设定硬件时钟:clock命令 & hwclock命令

命令介绍

hwclock命令是一个硬件时钟访问工具,它可以显示当前时间、设置硬件时钟的时间和设置硬件时钟为系统时间,也可设置系统时间为硬件时钟的时间。

hwclock和clock用来显示与设定硬件时钟,不过hwclock和clock可以视为一个命令。(clock是hwclock的软连接。

```bash

type -a hwclock

hwclock is /sbin/hwclock hwclock is /usr/sbin/hwclock

type -a clock

clock is /sbin/clock

ls -l /sbin/clock

lrwxrwxrwx. 1 root root 7 12月 13 2013 /sbin/clock -> hwclock ```

命令选项

–debug  显示hwclock执行时详细的信息。
–directisa  hwclock预设从/dev/rtc设备来存取硬件时钟。若无法存取时,可用此参数直接以I/O指令来存取硬件时钟。
–set –date=<日期与时间>  设定硬件时钟。
–show   显示硬件时钟的时间与日期。
–systohc    将硬件时钟调整为与目前的系统时钟一致。
–test   仅测试程序,而不会实际更改硬件时钟。
–utc    若要使用格林威治时间,请加入此参数,hwclock会执行转换的工作。
–version    显示版本信息。
-w, --systohc 以系统时钟为准,校正硬件时钟
-s, --hctosys 以硬件时钟为准,校正系统时钟

1. 查看硬件时间:clock 或者 hwclock

[root@k8s-master ~]#clock
Tue 31 May 2022 06:51:04 AM CST  -0.178876 seconds
[root@k8s-master ~]#hwclock 
Tue 31 May 2022 06:51:08 AM CST  -0.677708 seconds

2. 设置硬件时钟

例子:设置硬件时钟

clock --set --date='2015/08/23 19:33:00' #设置硬件时间
hwclock --set --date '2015-04-11 13:36:11'

例子:将系统时钟同步-->到硬件时钟

方法1  clock -w
# date
2015年 04月 11日 星期六 20:36:26 CST
# clock
2015年04月11日 星期六 13时41分18秒  -0.437760 seconds

# clock -w       #将系统时钟同步到硬件时钟
# clock
2015年04月11日 星期六 20时37分36秒  -0.515922 seconds

方法2   clock --systohc
# clock --set --date="08/16/2013 13:26:00"
# clock
2013年08月16日 星期五 13时26分04秒  -0.390867 seconds
# date
2015年 04月 11日 星期六 20:41:13 CST
# clock --systohc
# clock
2015年04月11日 星期六 20时43分18秒  -0.094007 seconds

例子:将硬件时钟同步-->到系统时钟

# clock --set --date="08/16/2013 13:26:00" 

# clock
2013年08月16日 星期五 13时26分03秒  -0.281525 seconds
# date
2015年 04月 11日 星期六 20:45:14 CST

# clock --hctosys   \\时钟同步
# date
2013年 08月 16日 星期五 13:26:22 CST
# clock
2013年08月16日 星期五 13时26分25秒  -0.406511 seconds

例子:一般,我们把系统时钟与网络时钟同步,再同步到硬件时钟

#1 ntpdate 0.rhel.pool.ntp.org
11 Apr 13:48:03 ntpdate[5786]: step time server 202.112.29.82 offset 52100210.175926 sec
# date
2015年 04月 11日 星期六 13:48:14 CST

#2 clock -w
# clock
2015年04月11日 星期六 13时48分30秒  -0.750266 seconds

3、时区:timedatectl命令

例子:查看日期时间及NTP状态(包括时区)

[root@k8s-master ~]#timedatectl 
      Local time: Tue 2022-05-31 07:14:15 CST
  Universal time: Mon 2022-05-30 23:14:15 UTC
        RTC time: Mon 2022-05-30 23:14:15
       Time zone: Asia/Shanghai (CST, +0800)
     NTP enabled: n/a
NTP synchronized: no
 RTC in local TZ: no
      DST active: n/a

例子:配置时区

(1)查看当前时区:

查看时间:

或者用如下命令查看:

ll /etc/localtime

(2)配置时区

#查看有哪些时区:timedatectl list-timezones |more
[root@k8s-master ~]#timedatectl list-timezones |more
Africa/Abidjan
Africa/Accra
Africa/Addis_Ababa
Africa/Algiers
Africa/Asmara
Africa/Bamako
Africa/Bangui
Africa/Banjul
……

(3)配置为亚洲/上海时区:

timedatectl set-timezone Asia/Shanghai

(4)再次查看当前时区:

例子:OpenStack中配置时间同步服务方法

注意:

同步时间 //注意这里原来装系统时已经选好了上海时区,这里就不再选择时区了。

[root@openstack-template ~]# date
Sun Oct 11 09:28:12 CST 2020
#1
[root@openstack-template ~]# ntpdate time1.aliyun.com # 和阿里云同步时间

#2
11 Oct 09:36:35 ntpdate[1618]: step time server 203.107.6.88 offset 5.388041 sec
[root@openstack-template ~]# hwclock -w # 同步时间到硬件

[root@openstack-template ~]# date
Sun Oct 11 09:36:57 CST 2020
[root@openstack-template ~]#

#3
这边做个定时任务:由于后期虚机可能要迁移
[root@openstack-template ~]# whereis ntpdate
ntpdate: /usr/sbin/ntpdate /usr/share/man/man8/ntpdate.8.gz
crontab: installing new crontab
*/10 * * * * /usr/sbin/ntpdate time1.aliyun.com && hwclock -w

例子:自己vmwareworkstation虚机系统时钟与当前时间不一致问题(2021.3.10)(已解决)

注意,自己的vmwareworkstation虚机date查看的系统时钟比实际慢了好几个小时。且clock显示的硬件时钟时间是12格式制的,这个貌似正常。

#默认无ntp服务,因此无法用ntpdate命令与网络时间同步
[root@localhost ~]# rpm -qa|grep ntp
#安装ntp

[root@localhost ~]# yum install -y ntp
#与阿里云ntp服务同步
[root@localhost ~]# ntpdate time1.aliyun.com 
10 Mar 14:21:24 ntpdate[18073]: step time server 203.107.6.88 offset 126659.756107 sec
[root@localhost ~]# hwclock -w #同步时间到硬件时钟
[root@localhost ~]# date #总这里可以看到,date显示的系统时钟是4进制格式,而clock显示的硬件时钟依然是12进制格式。
Wed Mar 10 14:21:37 CST 2021
[root@localhost ~]# clock
Wed 10 Mar 2021 02:21:39 PM CST  -0.149360 seconds

注意:CST概念,utc为标准时区

#中国比美国快13个小时:

#GMT+8 东八区

#CST可视为美国、澳大利亚、古巴或中国的标准时间。

注意:ntpdate可同步的时区

例子:和阿里云同步时间

[root@openstack-template ~]# ntpdate time1.aliyun.com

4、显示日历:cal命令

例子:cal # 默认显示当月日历

例子:cal 2030 # 显示某年的日历

例子:cal -y # -y选项代表本年的日历

例子:cal 11 2020 # 显示某年某个月份

Linux 硬件时间(RTC time)、系统时间(UTC时间、Universal time) 本地时间是系统时间经过时区转换后的时间。时区是根据地理位置确定的,全球分为24个时区,每个时区大约代表15度的经度。例如,北京时间是UTC+8,而伦敦时间是UTC+0。时区是为了方便统一时间而划分的地理区域。全球被划分为24个时区,每个时区大约代表15度的经度。各时区的时间以UTC(协调世界时)为基准,东边的时区比UTC时间晚,西边的时区比UTC时间早。夏令时是为了利用日照时间而在夏季调整时间的做法。通常情况下,夏令时会在春末将时间提前一小时,然后在秋初再把时间延后一小时。 阅读详情

相关推荐

linux 配置 NTP 服务器

NTP 是用于同步网络中计算机时间的协议,全称为网络时间协议(Network Time Protocol)。时区时间一致性对于服务器运行非常重要,有时会直接影响到任务执行的结果。例如,在更新数据库或者分析日志时,时间顺序对结果有很大影响。为避免在节点上运行业务时出现逻辑混乱网络请求错误等问题,我们需要统一相关 ECS 实例的时区设置,所以需要安装一个 NTP 服务用于同步各个节点之间的时间(尤其环境各类节点比较多的时候,更需要做时间同步。)...

Shallow的博客 5428

Linux 时间

工作中时常会遇到关于linux时间异常的情况,需要我们自己设置一下才行。下面整理了一些关于Linux时间的知识。 Linux时间分为System Clock(系统时间Real Time Clock (硬件时间,简称RTC)。 系统时间 / 本地时间(System time / Local time):当前Linux Kernel中的时间Linux系统内部的时间。我们在系统任务栏中能直接看到的时间就是系统时间。当Linux系统启动时,硬件时钟会读取系统时钟的设置,然后系统时钟会独立于物理层面的

prz0590的博客 2481

Linux 内核学习(1) --- 时钟子系统

使用clk_hw结构向 CCF 框架注册一个时钟设备,返回一个struct clk结构,其中clk_hw结构中 包含了结构,结构包含对时钟操作的具体函数集合为了简化操作,CCF将clock设备抽象为六中不同的类型,并且做了相应的接口封装,比如,对于Gate类型的设备,直接使用等类型的函数就可以进行注册CCF 框架会为每个注册的都分配一个结构,其中包含了操作函数的结构体结构,本质就是关联到init_data中的clk_opsconsumer通过clk_get等函数 获取的struct clk。

小猪佩奇的博客 3172

LinuxLinux中的时间

介绍LinuxJavsScirpt下的时间相关的操作。

jiangwei0512的博客 3923

LinuxNTP时间服务器Chrony配置详解

Chrony 是网络时间协议 (NTP) 的通用实现。Chrony是一个开源的软件,如果在chrony配置文件中指定了ntp服务器的地址,那么chrony就是一台客户端,会去同步ntp服务器时间,如果在chrony配置了允许某些客户端来向自己同步时间,则chrony也充当了一台服务器,所以,安装了chrony即可充当客户端也可以充当服务端。

康师傅没有眼泪 1万+

Linux 时间一致性环境NTP/Chrony服务器部署配置

背景 生产环境中,一个业务系统往往涉及几十台甚至上百台主机或云主机构成,有些管理系统对整个环境时间一致性由强要求,即使没有,保证环境中时间的一致性,有利于业务交互时时间匹配,保证事务的一致性,甚至环境中的监控系统,也需要监测时间一致性,保证数据上报正常。 ntp架构 下图来源网络,在前端管理节点上部署ntp服务器,且采取主备模式,局域网的ntp服务器先于外网ntp同步完成,局域网内再同本地ntp服务器同步时间。实际环境中,可借助类似架构,两个管理节点可以用HAproxy+keepalive做Heartbea

企业实战系列集 ●●● https://ximenjianxue.blog.csdn.net 6487

如何在CentOS Linux 8上安装时间同步服务chrony集群?(ntp被代替了)

为什么要用chrony代替ntp? 这里要分清一个概念ntpd软件NTP协议不是一个东西,NTP协议是网络时间同步协议。而chronyntpd都是实现NTP协议的软件。我们所谓的的“chrony代替ntp”,只是chrony代替了ntpd这个软件。 再强调一遍:chrony是实现NTP协议的其中一个软件。 之所以chrony会代替ntp,Tristone认为主要有如下几个原因: 1、chrony是新的设计,ntpd是老的设计,chrony的设计思想更先进; 2、chrony的配置参数比ntpd稍微简单一

Tristone的博客 3088

终极Linux时间同步指南:NTP服务配置与chrony工具使用

Linux系统管理中,时间同步是确保系统稳定运行的关键环节。无论是服务器集群、分布式系统还是日常运维,准确的时间都是系统正常工作的基础。本文将详细介绍Linux系统中的NTP时间同步服务配置以及chrony工具的使用方法,帮助您快速掌握Linux时间同步技术。 ## 🕒 为什么需要时间同步? 在分布式系统网络环境中,时间不一致会导致各种问题: - 日志记录时间错乱,影响问题排查 - 数据

gitblog_00587的博客 680

Linuxchrony时间同步服务ntp协议

chrony概述 chrony是RHEL7.x上自带的时间同步开源的自由软件,它能保持系统时钟与时钟服务器NTP)同步,让时间保持精确。是一个ntp协议的实现程序,既可以当做服务端,也可以充当客户端;它专为间歇性互联网连接的系统而设计,当然也能良好应用于持久互联网连接的环境; 三个时间参考: 硬件时钟、实时时钟以及手动同步。 组成: chronyd 是一个后台运行的守护进程,用于调整内核中运行的系统时钟时钟服务器同步。它确定计算机增减时间的比率,并对此进行补偿。 chronyc 客户端程序。 c

日积月累 4661

linux服务器通过NTPChrony工具实现时间同步

linux服务器通过NTPChrony工具实现时间同步

Yang的博客 1750

Linux 系统上配置 Chrony NTP 时间服务器

systemctl stop firewalld 关闭防火墙。192.168.159.131/22 可以访问本机进行同步。vim /etc/chrony.conf 添加阿里的。设置要连接的时间服务主机192.168.159.133。

2302_81866765的博客 233

别再手动改时间了!用Chrony在Rocky Linux上搭建企业级NTP服务器全记录

本文详细介绍了如何在Rocky Linux上使用Chrony搭建高精度企业级NTP服务器,解决分布式系统中时间不同步问题。通过优化配置、安全加固客户端接入管理,实现微秒级时间同步,提升系统稳定性合规性。

weixin_28672681的博客 161

Linux服务器时间管理:从时区、NTP同步到Chrony配置的完整指南

在分布式系统服务架构中,时间同步是保障系统稳定运行的基础设施。其核心原理在于通过NTP协议,使多台服务器的系统时间与权威时间源保持一致,从而解决因时间偏差引发的日志错乱、定时任务失效等连锁问题。这项技术的工程价值在于,它确保了跨服务器事务的时序一致性,是数据库主从同步、安全证书验证及分布式事务协调的关键依赖。典型的应用场景包括金融交易系统、日志聚合分析平台容器化集群,这些环境对时间精度要求极高。本文将聚焦Linux环境,深入解析时区配置、硬件时钟校准以及如何通过Chrony实现高精度NTP同步,为运维

weixin_34357928的博客 310

Linux服务器时间不准?5分钟搞定Chrony配置(附最佳NTP服务器推荐)

本文针对Linux服务器时间不准的问题,提供了5分钟快速配置Chrony的完整指南。详细介绍了从诊断时间偏差、安装启用Chrony服务、优化核心配置文件,到监控验证与排错的完整流程,并推荐了高可靠性的NTP服务器源,帮助管理员构建稳定高效的时间同步架构。

potato的博客 564

Linux时间同步服务NTPChrony

NTP全称Network Time Protocol网络时间协议,用于同步计算机时间,帮助计算机与时间服务器时间保持一致,并支持使用加密确认的方式防止恶意协议攻击。在Linux上,NTP并非默认安装,但其使用仍然非常简单,以CentOS为例:安装:yum install ntp启动:systemctl start ntpd查看状态:systemctl status ntpd设置开机启动:systemctl enable ntpd然而,在某些系统上,你可能无法安装NTP。 这是因为传统的NTP已经成为过

Dancen的专栏 1893

linux NTP时间服务器Chrony配置

chrony中包含两个程序,chronyd是一个可以在引导时启动的守护进程,chronyc是一个命令行界面程序,可用于监视chronyd的性能并在其运行时更改各种操作参数。它旨在在广泛的条件下运行良好,包括间歇性网络连接、严重拥塞的网络、不断变化的温度(普通计算机时钟对温度很敏感)以及不能连续运行或在虚拟机上运行的系统。chrony相比ntp时间同步配置更简单高效,它是一个开源的软件能保持系统始终与服务器时间同步。(3)等待客户端自动同步(测试同步时间较为缓慢)(2)client端配置。...

yekui006的博客 4515

29.Linux时间服务-ntpchrony

Linux系统下,一般使用ntp服务器来同步不同机器的时间。一般局域网内部有一台自己的ntp服务器,其他服务器向它进行同步时间,它通过网络为自己进行时间校准。ntpdate:强制性的将系统时间设置为ntp服务器时间(但会使日志出现空白时间段或对个别应用产生影响)5.ntptrace –n 127.0.0.1 :列出目前NTP服务器与上层NTP服务器彼此之间的关系。优势:可以快速的进行时间校准并不影响系统与服务,兼容ntp。/etc/ntp/drift:记录联机时所花费的时间。端口号:udp/123。

weixin_43812198的博客 508

linux服务NTPchrony时间同步

一、NTP时间同步 NTP(Network Time Protocol,网络时间协议)是由RFC 1305定义的时间同步协议,用来在分布式时间服务器客户端之间进行时间同步。NTP基于UDP报文进行传输,使用的UDP端口号为123。 目的:使用NTP的目的是对网络内所有具有时钟的设备进行时钟同步,使网络内所有设备的时钟保持一致,从而使设备能够提供基于统一时间的多种应用。 对于运行N...

weixin_30666943的博客 233
上一篇: ansible 常用模块2
下一篇: openeuler 添加路由
smucff
博客等级 码龄18年 100粉丝 5原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值