Ubuntu的时钟同步
NTP
这是一个网络协议,用于通过网络来同步系统时钟。
在Ubuntu下,你可以使用timedatectl、timedatectl(从16.04开始,用于代替ntpdate / ntp)执行时钟同步,或者安装chrony以成为NTP服务器。
timesyncd默认已经安装,用来代替ntpdate以及chrony的客户端部分。
客户端
timedatectl
要查看当前时间、时间配置,可以执行:
1 2 3 4 5 6 7 8 9 10 |
timedatectl status Local time: 四 2018-10-11 13:57:39 CST Universal time: 四 2018-10-11 05:57:39 UTC RTC time: 四 2018-10-11 05:57:39 Time zone: Asia/Shanghai (CST, +0800) # 启用时钟同步后,显示为yes Network time on: yes # 如果和远程NTP服务器成功同步,显示为yes NTP synchronized: yes RTC in local TZ: no |
要启用时钟同步,执行:
1 |
timedatectl set-ntp true |
显示可用的时区:
1 |
timedatectl list-timezones | grep Shanghai |
修改时区:
1 |
timedatectl set-timezone Asia/Shanghai |
timesyncd
这是负责执行时钟同步的后台服务:
1 |
systemctl status systemd-timesyncd.service |
配置文件位置是 /etc/systemd/timesyncd.conf、/timesyncd.conf.d/
配置文件示例:
1 2 3 |
[Time] NTP=0.cn.pool.ntp.org 1.cn.pool.ntp.org 2.cn.pool.ntp.org 3.cn.pool.ntp.org FallbackNTP=ntp.ubuntu.com |
检查状态
1 2 3 4 5 6 7 |
systemctl status systemd-timesyncd.service # 同步失败 10月 11 13:49:56 Carbon systemd-timesyncd[730]: Timed out waiting for reply from 10.0.8.1:123 (ntp.gmem.cc). # 同步成功 10月 11 13:55:22 Carbon systemd-timesyncd[44163]: Synchronized to time server 10.0.8.1:123 (ntp.gmem.cc). |
服务器
要成为NTP服务器,可以安装chrony、ntpd,或者open-ntp。推荐chrony。
Chrony也可以作为NTP客户端,因为它可以从其它NTP服务器同步时间。
安装
1 |
apt install -y chrony |
上面的命令会安装两个程序:chronyd为NTP服务守护进程,chronyc为控制chronyd的命令行接口。
配置
配置文件路径为 /etc/chrony/chrony.conf,示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
# 上游服务器列表 # 该参数表示在头四次 NTP 请求以 2s 或者更短的间隔,而不是以 minpoll x # 指定的最小间隔,这样的设置可以让 chronyd 启动时快速进行一次同步 # 其它参数 minpoll x = 6 maxpoll x = 9 server 0.cn.pool.ntp.org iburst server 1.cn.pool.ntp.org iburst server 2.cn.pool.ntp.org iburst server 3.cn.pool.ntp.org iburst # 要使用本地NTP服务器,可以将上面的删除,然后添加自己的: server 10.0.0.1 iburst # 作为服务器运行 # 允许哪些客户端访问当前NTP服务器 allow allow 192.168.1.0/24 # 即使当前服务器无法联系到上游,也允许它对外提供时钟服务 local stratum 10 # 启用内核时间与 RTC 时间同步,自动写回硬件 rtcsync |
配置完毕后,需要重启守护程序:
1 2 |
systemctl daemon-reload systemctl restart chrony.service |
chronyc
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
# 查看 NTP 服务器的在线和离线状态 chronyc activity # 查看 Chrony 服务的日志 journalctl -u chronyd # 检查 NTP 访问是否对特定主机可用 chronyc accheck # 该命令会显示有多少 NTP 源在线/离线 chronyc activity # 手动添加一台新的 NTP 服务器 chronyc add server # 在客户端报告已访问到服务器 chronyc clients # 手动移除 NTP 服务器或对等服务器 chronyc delete # 手动设置守护进程时间 chronyc settime # 校准时间服务器,显示系统时间信息 chronyc tracking # 检查 NTP 访问是否对特定主机可用 chronyc accheck # 查看时间同步源 chronyc sources -v # 查看时间同步源状态 chronyc sourcestats -v |
Leave a Reply