16.4 时间同步服务

在分布式系统环境中,准确的系统时间是确保日志一致性、证书有效性、分布式事务协调以及网络协议正常工作的基础。本章详细介绍 FreeBSD 系统的时区配置与网络时间协议(Network Time Protocol,NTP)时间同步服务的部署与管理。时间同步的准确性直接关系到系统安全与数据一致性。

调整时区

时间同步首先需要正确设置系统时区。本节将介绍如何设置系统时区。

全局时区设置

设置系统时区有两种方式,一是通过图形化工具,二是通过命令行。

  • 使用 bsdconfig 设置时区。

  • 使用命令行设置系统时区为上海时间:

# cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

用户级时区

除了全局时区设置,每个用户也可以单独设置自己的时区。在用户的 shell 配置文件中设置 TZ 变量即可。

对于 sh、bash、zsh

export TZ=CST-8             # 设置时区为中国标准时间(CST-8)
#
export TZ=Asia/Shanghai      # 设置时区为上海

对于 csh

定时计划

在 crontab 配置文件中,设置 CRON_TZ 变量即可。

在每天 08:00(CST-8 时区)执行 date 命令并将输出追加到 ~/date.log

将 RTC 时间视为地方时

兼容 Windows 时间,防止差 8 小时。

该文件存在则表示将机器的实时时钟视为地方时,不存在则表示将实时时钟视为 UTC 时间。

重启系统使该设置生效:

查看当前 CMOS 时钟设置:

参考文献

  • adjkerntzarrow-up-right,即"adjust real-time clock (rtc) and kernel timezone offset",调整实时时钟 (RTC) 与内核时区偏移,该手册页详细说明了系统时区调整机制。

时间服务

时区设置完成后,需要配置和启用时间同步服务。网络时间协议(Network Time Protocol,NTP)是常用的时间同步协议。

设置启动 NTP 服务

设置 NTP 服务在系统启动时自动启动:

设置 NTP 服务启动时同步

设置 NTP 服务在启动时自动同步时间:

编辑 /etc/ntp.conf 文件,添加附加时钟服务器:

NTP 服务

  • 启动 NTP 服务

  • 重启 NTP 服务

时间信息查看

显示当前系统日期和时间:

手动时间同步方法

使用 Windows 时间服务器同步系统时间:

当时间相差较大时必须使用该命令,其他命令不会生效:

使用 pool.ntp.org 服务器更新系统时间,-u 表示使用非特权端口。

最后更新于