硬件时钟是指的在主板上的时钟设备,也就是通常可以在BIOS画面设置的时钟,即使关机状态也可以计算时间。
而系统时钟则是指Kernel中的时钟,其值是由1970年1月1日00:00:00 UTC时间至当前时间所经历的秒数总和。当Linux启动的时候,系统时钟会读取硬件时钟的设定,之后系统时钟独立运作。长时间运行两者可能将会产生误差。另外所有的Linux相关指令都是读取系统时钟指定的,如date。
我们这里讨论的是系统时间。
NTP,网络时间协议,使用 123/udp 端口进行网络时钟同步;NTP 是仍在使用中的最古老的网络传输协议之一(1985 年前开始)。
以前Linux时间同步基本是使用 ntpdate 和 ntpd 这两个工具实现的,但是这两个工具已经很古老了。
【注】ntpdate和ntpd是互斥的,两者不能同时使用。ntpd是步进式平滑的逐渐调整时间,而ntpdate是断点式更新时间。
RHEL/CentOS 7.x 已经将 chrony 作为默认时间同步工具了。
其他Linux (如 ubuntu) 使用 systemd-timesyncd 服务。
chrony 是 RedHat 开发的,它是网络时间协议(NTP)的另一种实现;
RHEL/CentOS 7.x 的默认时间同步工具;
chrony 可以同时做为 ntp 服务的客户端和服务端;安装完后有两个程序 chronyd、chronyc:
chronyd 是一个 daemon 守护进程,chronyc 是用来监控 chronyd 性能和配置参数的命令行工具。
系统版本:CentOS 7.5
chrony_server(relay):10.0.0.4
chrony_client:10.0.0.5
Edit file /etc/chrony.conf
默认已经启动,不需要调整
example:
配置 chrony
edit file: /etc/chrony.conf
再次用chronyc 命令检查,比较它与chronyd server的差异
systemd-timesyncd 是一个用于跨网络同步系统时钟的守护服务。它实现了一个 SNTP 客户端,但更轻量级,更集成systemd。
systemd-timesyncd 启动时会读取 /etc/systemd/timesyncd.conf 配置文件,内容如下:
你可以输入你希望使用的其它时间服务器,比如你自己的本地 NTP 服务器,在 NTP= 行上输入一个以空格分隔的服务器列表。
如果服务器可以直接连接internet,不用修改默认配置;如果在内网,需要单独指定。
在最新的 Ubuntu 版本中,timedatectl 替代了老旧的 ntpdate。默认情况下,timedatectl 在系统启动的时候会立刻同步时间,并在稍后网络连接激活后通过 socket 再次检查一次。
timesyncd 替代了 ntpd 的客户端的部分。默认情况下 timesyncd 会定期检测并同步时间。它还会在本地存储更新的时间,以便在系统重启时做时间单步调整。
通过 timedatectl 和 timesyncd 设置的当前时间状态和时间配置,可以使用 timedatectl status 命令来进行确认。
由于 timedatectl 的存在,各发行版已经弃用了 ntpdate,默认不再进行安装。
timedatectl
timedatectl status ,查看时间同步状态;
timedatectl set-ntp true ,开启网络时间同步;
timedatectl set-timezone ZONE ,设置时区。
NTP synchronized: yes 表示时间是同步状态。
查看服务状态以及从哪个ntp server同步时间。
NTP:软件层面实现,成本低。同步精度10ms左右。
PTP:需要网络接口具备在物理层提供时间戳的功能,同步精度优于100ns,局域网的节点需要使用支持PTP功能的交换机。局域网网络接点不支持PTP的话,只能同不到us,而且受网络背景流量影响。
第一步,选择最好的NTP服务地址 具体命令为ntpdate -q IP地址或域名广东地区NTP优选结果如下: ①time4.cloud.tencent.com ②server time.asia.apple.com ③server cn.ntp.org.cn ④server ntp.aliyun.com ⑤server cn.pool.ntp.org 检查BIOS主板时间的命令 hwclock -r NTP服务启停命令 sudo systemctl start/stop ntpd 检查查看ntp服务器有无和上层ntp连通 ntpstat 查看ntp服务器与上层ntp的状态 ntpq -pn===server选项格式=== server host [ key n ] [ version n ] [ prefer ] [ mode n ] [ minpoll n ] [ maxpoll n ] [ iburst ] 其中host是上层NTP服务器的IP地址或域名,随后所跟的参数解释如下所示: ◆ key: 表示所有发往服务器的报文包含有秘钥加密的认证信息,n是32位的整数,表示秘钥号。 ◆ version: 表示发往上层服务器的报文使用的版本号,n默认是3,可以是1或者2。 ◆ prefer: 如果有多个server选项,具有该参数的服务器优先使用。 ◆ mode: 指定数据报文mode字段的值。 ◆ minpoll: 指定与查询该服务器的最小时间间隔为2的n次方秒,n默认为6,范围为4-14。 ◆ maxpoll: 指定与查询该服务器的最大时间间隔为2的n次方秒,n默认为10,范围为4-14。 ◆ iburst: 当初始同步请求时,采用突发方式接连发送8个报文,时间间隔为2秒。===同步硬件时钟=== ntp服务,默认只会同步系统时间。 如果想要让ntp同时同步硬件时间,可以设置/etc/sysconfig/ntpd文件, 在/etc/sysconfig/ntpd文件中,添加【SYNC_HWCLOCK=yes】这样,就可以让硬件时间与系统时间一起同步。 允许BIOS与系统时间同步,也可以通过hwclock -w 命令。 hwclock命令用来查询和设置硬件时钟。 hwclock -r 读取并打印硬件时钟 hwclock -s 将硬件时钟同步到系统时钟 hwclock -w 将系统时钟同步到硬件时钟 系统时钟与硬件时钟 在Linux中有硬件时钟与系统时钟等两种时钟。硬件时钟是指主机板上的时钟设备,也就是通常可在BIOS画面设定的时钟。系统时钟则是指kernel中的时钟。当Linux启动时,系统时钟会去读取硬件时钟的设定,之后系统时钟即独立运作。所有Linux相关指令与函数都是读取系统时钟的设定。 参考文档: Linux服务器NTP客户端配置——https://www.cnblogs.com/paul8339/p/10059364.html NTP服务、客户端配置详解——https://blog.51cto.com/u_11392081/1784080欢迎分享,转载请注明来源:内存溢出
评论列表(0条)