1.为何须要时间同步
在了解这个问题前linux中文乱码,须要先了解RTC、CST、UTC这种时间概念。
(1)RTC
在linux的系统中我们还可以看到一个RTC时间,这个时间通常称作硬件时间。也就是由计算机显卡上的专门时钟芯片硬件形成的滴答讯号计时得到。
(2)UTC
世界协调时间,UTC是世界上不同国家拿来统一时间的标准。可以理解为我们月球的标准时间,基于SI标准的原子时间,由精度十分高的铯原子钟形成的滴答讯号计时得到。UTC也就是零时区的时间。
(3)CST
关于CST有多重富含,但简单点理解就是各个国家所在时区的具体时间。
CentralStandardTime(USA)UT-6:00(日本cst时间:零区时减6个小时)
CentralStandardTime(Australia)UT+9:30(美国cst:加9个半小时)
ChinaStandardTimeUT+8:00(中国cst:加8个小时)
CubaStandardTimeUT-4:00(法国cst:减4个小时)
例如当UTC时间为0点时,中国的上海时间处于东8时区,因而中国CST时间为8点(UTC时间+8小时)。
如今就可以解释为何须要时间同步了,由于RTC采用显卡上的专门时钟芯片硬件计时,一方面是每位人笔记本上的RTC起始计时时间都不一样,另一方面RTC计时精度偏差较大。为了统一你们的时间,就须要让RTC在一段时间内去与UTC做个同步。可以理解为每晚下午8点整中央电视台在报时的时侯,我们每位人将自己腕表的时间同步调准。只不过计算机中的这个同步调准的周期要频繁好多,例如几分钟一次。
尽管RTC与UTC同步能解决时间统一的问题,而且假如世界上所有地方的人都使用UTC时间的话可能在生活上并不便捷。最简答的一个反例就是,每位地区太阳升起的时间将不一样arm2440平台linux系统时间的设置修改方法,对人们的借助日出而作日落而息的生活习惯将有很大影响。因而须要依照UTC时间和地区所在的时区,将UTC换算成具体时区的时间CST,之后让RTC与CST进行同步。
2.常用时间同步工具
时间同步工具,虽然就是在计算机之间执行时间同步恳求的一个软件。遵守一套合同,让本地计算机向远程提供时间同步功能的服务器发起同步恳求,之后远程提供时间同步功能的服务器将同步时间值返回给本地计算机,之后本地计算机借助服务器返回的时间值经过一定的估算得到本地时间。
目前比较流行的时间同步工具有ntp和chronyarm2440平台linux系统时间的设置修改方法linux就该这么学,ntp采用123/UDP端口通讯,chrony采用323/UDP端口通讯。因为ntp比较旧了,这儿就采用chrony来进行时间同步。在ubuntu系统安装chrony,只须要运行下边这句命令:
sudo apt install chrony
chrony分为服务端程序chronyd和顾客端程序chronyc,我们既可以用chronyd为其他计算机提供时间同步服务,也可以借助chronyc向其他时间同步服务器发起时间同步恳求。下边将依次介绍chrony服务端和chrony顾客端的配置方式。
3.配置chrony服务端
假如要让我们的chrony服务端能为互联网的所有计算机提供时间同步服务,须要将这个chrony服务端运行在网段服务器上,一般选用云服务器(我这儿选的是一台阿里云服务器)。因为chrony采用323/UDP端口通讯,因而须要先去我们的服务器控制台将步入服务器的323/UDP端口权限打开。
之后步入ubuntu服务器的/etc/chrony/chrony.conf对chrony服务端进行配置,这儿主要关注一下几个参数:
这儿server源地址可以直接用阿里云默认提供的源,如下所示:
server ntp.cloud.aliyuncs.com minpoll 4 maxpoll 10 iburst
server ntp.aliyun.com minpoll 4 maxpoll 10 iburst
server ntp1.aliyun.com minpoll 4 maxpoll 10 iburst
server ntp1.cloud.aliyuncs.com minpoll 4 maxpoll 10 iburst
server ntp10.cloud.aliyuncs.com minpoll 4 maxpoll 10 iburst
server ntp11.cloud.aliyuncs.com minpoll 4 maxpoll 10 iburst
server ntp12.cloud.aliyuncs.com minpoll 4 maxpoll 10 iburst
server ntp2.aliyun.com minpoll 4 maxpoll 10 iburst
server ntp2.cloud.aliyuncs.com minpoll 4 maxpoll 10 iburst
server ntp3.aliyun.com minpoll 4 maxpoll 10 iburst
server ntp3.cloud.aliyuncs.com minpoll 4 maxpoll 10 iburst
server ntp4.aliyun.com minpoll 4 maxpoll 10 iburst
server ntp4.cloud.aliyuncs.com minpoll 4 maxpoll 10 iburst
server ntp5.aliyun.com minpoll 4 maxpoll 10 iburst
server ntp5.cloud.aliyuncs.com minpoll 4 maxpoll 10 iburst
server ntp6.aliyun.com minpoll 4 maxpoll 10 iburst
server ntp6.cloud.aliyuncs.com minpoll 4 maxpoll 10 iburst
server ntp7.cloud.aliyuncs.com minpoll 4 maxpoll 10 iburst
server ntp8.cloud.aliyuncs.com minpoll 4 maxpoll 10 iburst
server ntp9.cloud.aliyuncs.com minpoll 4 maxpoll 10 iburst
为了便捷测试,这儿allow配置成allowall,也就是容许所有网关的顾客端发送恳求过来:
allow all
这儿设置localstratum10,容许在外部时间同步服务器不可用时,使用服务器本地时间作为返回值返回给发起恳求的顾客端计算机。
local stratum 10
对chrony服务端进行启动、停止、状态检测的方式,如下:
#启动chrony服务
service chrony start
#重动chrony服务
service chrony restart
#查看chrony服务状态
service chrony status
#停止chrony服务
service chrony stop
4.配置chrony顾客端
对应ubuntu系统顾客端,步入ubuntu服务器的/etc/chrony/chrony.conf对chrony顾客端进行配置。配置参数与前面chrony服务端的类似,只不过顾客端不须要对外提供时间同步服务而只去恳求数据,因而allow参数可以不用。
这儿server源地址指定为前面我们chrony服务端的IP地址(具体IP地址去自己的云服务器控制台查看一下就晓得了),你们可以将下边替换成自己的服务器地址,如下所示:
server my_chrony_test.aliyuncs.com minpoll 4 maxpoll 10 iburst
对chrony顾客端进行启动、停止、状态检测的方式与前面服务端一样,如下:
#启动chrony客户端
service chrony start
#重动chronyd客户端
service chrony restart
#查看chrony客户端
service chrony status
#停止chrony客户端
service chrony stop
之后就是chrony顾客端上的一些常用命令:
#查看可用的时间同步源
chronyc sources -v
#查看时间同步源的状态
chronyc sourcestats -v
#对客户端系统时间进行强制同步
chronyc -a makestep
使用timedatectl管理本地系统时间:
#修改本地系统时间
timedatectl set-time "2022-03-01 10:01:01"
#查看时区列表
timedatectl list-timezones
timedatectl list-timezones |grep Asia/S
#修改时区
timedatectl set-timezone Asia/Shanghai
#让RTC去和UTC进行同步
timedatectl set-local-rtc 0
#让RTC去和本地系统时间CST进行同步(不推荐)
timedatectl set-local-rtc 1
#启用向外部时间同步服务器发起同步的功能
timedatectl set-ntp yes
#关闭向外部时间同步服务器发起同步的功能
timedatectl set-ntp no
5.总结
假定本地顾客端计算机叫A,我们的服务器计算机叫B,内网时间同步源计算机叫C,时间同步的过程实际上就是A->B->C->...
A向B发起时间同步恳求,让A与B的时间保持一致;
B为了维护自身的系统时间,以同样的方式要向C发起时间同步恳求,让B与C的时间保持一致;
C可能还要进一步与其他内网时间同步源保持同步,其实就是时间同步时一层一层进行的。