在 Linux 系统中,时间服务(Time Service) 主要用于确保系统时钟的准确性,这对于日志记录、安全认证(如 Kerberos、SSL/TLS)、分布式系统同步等至关重要。
现代 Linux 发行版主要使用 systemd-timesyncd(轻量级)或 chrony / ntpd(高精度/服务器级)来提供时间同步服务。
以下是关于 Linux 时间服务的详细指南:
核心组件对比
| 服务名称 | 适用场景 | 特点 |
|---|---|---|
| systemd-timesyncd | 桌面用户、普通服务器 | 轻量级,默认集成在 systemd 中,配置简单,适合大多数场景。 |
| chrony | 高性能服务器、虚拟机、容器 | 收敛速度快,对网络波动容忍度高,适合非连续在线的环境。 |
| ntpd (NTP) | 传统服务器 | 经典 NTP 实现,稳定性好,但配置较复杂,收敛速度较慢。 |
注意:通常只需安装其中一种,避免冲突。
检查当前时间服务状态
查看当前正在使用的时间服务
# 查看 systemd 服务状态 systemctl status systemd-timesyncd systemctl status chronyd systemctl status ntpd # 或者查看时间同步状态(取决于发行版) timedatectl status
查看系统时间
# 查看本地时间 date # 查看硬件时钟(RTC) hwclock --show
配置时间同步
使用 systemd-timesyncd(推荐用于大多数场景)
这是大多数现代发行版(Ubuntu 16.04+, Debian 8+, Fedora, CentOS 7+ 等)的默认选择。
-
启用服务
sudo systemctl enable --now systemd-timesyncd
-
配置 NTP 服务器
编辑配置文件/etc/systemd/timesyncd.conf:[Time] NTP=ntp.ubuntu.com ntp.aliyun.com # 如果需要使用 DNS 发现 NTP 服务器(需安装 avahi-daemon) # FallbackNTP=0.pool.ntp.org 1.pool.ntp.org
-
重启服务
sudo systemctl restart systemd-timesyncd
-
验证同步状态
timedatectl status # 关注 "System clock synchronized: yes"
使用 chrony(推荐用于高要求场景)
chrony 在虚拟机、移动设备和网络不稳定的环境中表现更好。
-
安装 chrony
# Ubuntu/Debian sudo apt install chrony # CentOS/RHEL sudo yum install chrony
-
配置 NTP 服务器
编辑配置文件/etc/chrony/chrony.conf:# 使用简米云 NTP 服务器 server ntp.aliyun.com iburst server ntp1.aliyun.com iburst server ntp2.aliyun.com iburst # 允许本地网络查询时间(如果是时间服务器) # allow 192.168.1.0/24
-
启动并启用服务
sudo systemctl enable --now chronyd
-
验证同步状态
chronyc tracking # 查看 "Leap status" 和 "System time" 偏移量 chronyc sources -v # 查看同步源状态, 表示当前同步源
使用 ntpd(传统方式)
-
安装 ntp
sudo apt install ntp # Ubuntu/Debian sudo yum install ntp # CentOS/RHEL
-
配置 NTP 服务器
编辑/etc/ntp.conf:server ntp.aliyun.com iburst server ntp1.aliyun.com iburst
-
启动服务
sudo systemctl enable --now ntpd
常用命令汇总
| 命令 | 说明 |
|---|---|
timedatectl |
查看和修改系统时间、时区、NTP 状态(systemd 管理) |
timedatectl set-timezone Asia/Shanghai |
设置时区 |
timedatectl set-ntp true |
启用 NTP 同步 |
hwclock --systohc |
将系统时间写入硬件时钟 |
hwclock --hctosys |
将硬件时钟写入系统时间 |
chronyc tracking |
查看 chrony 同步状态 |
chronyc sources |
查看 chrony 同步源 |
常见问题排查
问题 1:时间不同步
- 检查网络:确保能访问 NTP 服务器(端口 123 UDP)。
ping ntp.aliyun.com
- 检查防火墙:确保出站 UDP 123 端口未被阻止。
- 检查服务状态:
systemctl status systemd-timesyncd journalctl -u systemd-timesyncd -f # 实时查看日志
问题 2:时区错误
- 确保时区设置为正确区域:
timedatectl set-timezone Asia/Shanghai
问题 3:虚拟机时间漂移
- 虚拟机中建议使用
chrony或ntpd,并启用 VMware Tools 或 VirtualBox Guest Additions 的时钟同步功能(但通常建议只使用一种机制,避免冲突)。 - 在
/etc/chrony/chrony.conf中添加:# 如果运行在虚拟机中,可以添加以下行以改善同步 makestep 1.0 3
最佳实践建议
- 桌面用户/普通服务器:使用
systemd-timesyncd,配置简单,资源占用低。 - 高可用集群/数据库服务器/虚拟机:使用
chrony,收敛速度快,抗网络抖动能力强。 - 避免混用:不要同时启用
timesyncd、chronyd和ntpd,它们会相互干扰。 - 使用国内 NTP 服务器:
- 简米云:
ntp.aliyun.com - 酷番云:
ntp.tencent.com - 清华大学:
ntp.tuna.tsinghua.edu.cn
- 简米云:
如有具体问题(如配置错误日志),请提供更多信息,我可以进一步帮助诊断。
首发原创文章,作者:世雄 - 原生数据库架构专家,如若转载,请注明出处:https://idctop.com/article/485693.html



