Chrony 取代 ntpd
网络时间协议 (NTP) 是计算机在授权系统之间提供和同步时间的标准。计算机可以通过互联网上的公共 NTP 服务获取正确的时间信息,如 NTP Pool Project。另一种选择是通过高质量硬件时钟为本地客户端提供准确时间。
在红帽企业 Linux 8 中,Chrony 是唯一可用的 NTP 服务器实施。 红帽企业 Linux 7 中与 Chrony 一起提供的 ntpd 实施不再可用。
使用 Chrony 作为默认 NTP 实施
Chrony 取代已不再可用的 ntpd。
Chrony 使用不同的配置文件,采用的格式也不同。
/usr/share/doc/chrony/ntp2chrony.py
脚本可将/etc/ntp.conf
文件转换为/etc/chrony.conf
。timedatectl 可显示当前时间相关系统设置的概览。
使用 timedatectl set-timezone 来定义系统时区。
Chrony 简介
chronyd
服务通过与配置的 NTP 服务器进行同步,使本地硬件时钟 (RTC) 保持正确运行。如果没有可用的网络连接,它将与计算出的 RTC 时钟漂移同步,该漂移记录在 /etc/chrony.conf
配置文件指定的 driftfile
变量中。
默认情况下,chronyd
使用 NTP Pool Project 的服务器同步时间,且不需要额外配置。当涉及的计算机位于孤立网络中时,可能需要更改 NTP 服务器。
/etc/chrony.conf
配置文件中的 server
行提供 NTP 服务器的 IP 地址或 DNS 名称。在服务器 IP 地址或名称之后,您可以列出适用于该服务器的一系列选项。红帽建议使用 iburst
选项,因为在服务启动后,Chrony 会在很短时间内执行四种测量,以获得更加精确的初始时钟同步。
# systemctl status chronyd
指定NTP服务器:
[root@localhost ~]# cat /etc/chrony.conf
# Ansible managed
# Allow the system clock to be stepped in the first three updates.
makestep 1.0 3
# Enable kernel synchronization of the real-time clock (RTC).
rtcsync
# Record the rate at which the system clock gains/losses time.
driftfile /var/lib/chrony/drift
server 8.8.8.8 iburst
保存退出。
在配置文件中,pool 指令类似于 server 指令,但它不是指明单个 NTP 服务器,而是指明解析为可能随时间变化的多个地址的 DNS 名称。
重启服务:
[root@localhost ~]# systemctl restart chronyd
chronyc 命令充当 chronyd
服务的客户端。设置 NTP 同步后,使用 chronyc sources 命令验证用于与系统时钟同步的 NTP 服务器,或运行 chronyc sources -v 来获得更加详细的输出:
我们看到与google的通讯:
[root@localhost ~]# chronyc sources -v
将 NTPd配置转换为 Chrony
Chrony 配置文件 /etc/chrony.conf
与 ntpd 配置文件 /etc/ntp.conf
类似 。某些配置指令特定于 Chrony,因为这两个程序具有不同的功能。
值得注意的是,Chrony 中无法使用以下 ntpd 功能。
Chrony 不实施广播和多播客户端功能。因此,
chrony.conf
中不存在broadcastclient
和multicastclient
指令。这些 NTPd 功能可以接收广播或多播 NTP 服务器发送的 NTP 消息。autokey
指令在chrony.conf
中不可用。在ntp.conf
中,该指令可激活 NTP 客户端和服务器之间的数据包验证的公钥算法。在使用对称对等指令时,Chrony 不支持临时关联。例如,
peer
指令允许同一级别的两台服务器同步其时钟。当只有一台服务器定义peer
指令时,另一台服务器可接受连接并建立临时关联。Chrony 不允许这种隐式配置,两台服务器都必须包含peer
指令。
为便于您将 ntp.conf
文件转换为 chrony.conf
,chrony 软件包在 /usr/share/doc/chrony/
中提供了 ntp2chrony.py
脚本。使用 --ntp-conf
选项来指定要转换的 ntp.conf
文件。--chrony-conf
选项指定输出 chrony.conf
文件。--chrony-keys
选项指定输出文件的路径,该输出文件包含需要身份验证的服务器的密钥对。在重新启动 chronyd
服务前,检查转换的配置文件。
python3 /usr/share/doc/chrony/ntp2chrony.py --ntp-conf ./ntp.conf --chrony-conf ./chrony.conf --chrony-keys ./chrony.keycp ./chrony.conf ./chrony.key /etcsystemctl restart chronyd
设置时区
timedatectl 命令显示当前时间相关系统设置的概览,如系统的当前时间、时区和 NTP 同步设置。
# timedatectl
系统提供了一个包含已知时区的数据库,您可以通过 timedatectl list-timezones 命令来列出这些时区。
[root@repo ~]# timedatectl list-timezones
tzselect 命令可用于识别时区的正确名称。它以交互方式向用户提示关于系统位置的问题,然后输出正确时区的名称。它不会对系统的时区设置进行任何更改。
以 root
用户身份执行 timedatectl set-timezone 命令,可以调整当前时区的系统设置。
[root@repo ~]# timedatectl set-timezone America/Phoenix
[root@repo ~]# timedatectl
Local time: Tue 2020-03-31 00:05:25 MST
Universal time: Tue 2020-03-31 07:05:25 UTC
RTC time: Tue 2020-03-31 07:05:25
Time zone: America/Phoenix (MST, -0700)
NTP enabled: yes
NTP synchronized: yes
RTC in local TZ: no
DST active: n/a
NFS的增强
Red Hat Enterprise Linux 8 支持使用网络文件系统 (NFS) 4.2。
Red Hat Enterprise Linux 8 NFS 增强功能
Red Hat Enterprise Linux 8 中默认的 NFS 版本为 4.2,支持 NFSv4 和 NFSv3 主版本,但不再支持 NFSv2。
NFS 配置文件为
/etc/nfs.conf
。/etc/sysconfig/nfs
配置文件已被淘汰。引入了新的 nfsconf 工具来管理 NFS 配置文件。
autofs 服务将
/etc/auto.master
(主映射)用作其默认配置文件。amd
格式也可识别。Red Hat Enterprise Linux 8 移除了
nfsnobody
用户,并将nobody
用户和组的 UID 和 GID 更改为65534
。任何不存在的 UID 或 GID 都映射到nobody
用户和组。NFSv4 不再需要运行
rpcbind
服务,免除了对 UDP 连接的需求。
NFS 4.2 功能
借助服务器端复制,NFS 客户端能够高效复制 NFS 文件系统内的数据,而不会浪费网络资源。
稀疏文件使文件具有多个孔,这些孔是仅由零组成的数据块。它们作为零传输,提高了整体速度。
空间预留允许在 NFS 服务器上保留可用空间,防止服务器空间不足。
标记的 NFS 强制实施数据访问权限,并在 NFS 文件系统上启用 SELinux。
nfsconf 工具
Red Hat Enterprise Linux 8 引入了 nfsconf 工具,用于管理 NFS 客户端和服务器配置文件。
nfsconf 工具可用于获取、设置或测试 NFS 配置文件。
nfsconf 工具可处理 NFSv4 和 NFSv3 配置。
默认的 nfsconf 配置文件为
/etc/nfs.conf
。nfsconf --file 可加载备用配置文件位置。
通过 nfsconf 工具进行配置,禁用标记 udp、vers2 和 vers3。通过 nfsconf 工具进行配置,启用标记 vers4、vers4.0、vers4.1 和 vers4.2。
# nfsconf --set nfsd udp n# nfsconf --set nfsd vers2 n# nfsconf --set nfsd vers3 n# nfsconf --set nfsd tcp y# nfsconf --set nfsd vers4 y# nfsconf --set nfsd vers4.0 y# nfsconf --set nfsd vers4.1 y# nfsconf --set nfsd vers4.2 y
禁用对 RPCBIND
、MOUNT
和 NSM
协议调用的侦听,NFSv4 的用例中不需要它们。禁用相关的服务:
[root@localhost ~]# systemctl mask --now rpc-statd.service rpcbind.service rpcbind.socketCreated symlink /etc/systemd/system/rpc-statd.service → /dev/null.Created symlink /etc/systemd/system/rpcbind.service → /dev/null.Created symlink /etc/systemd/system/rpcbind.socket → /dev/null.
现在查看nfs的配置文件 /etc/nfs.conf:
[root@localhost ~]# cat /etc/nfs.conf## This is a general configuration for the# NFS daemons and tools#[general]# pipefs-directory=/var/lib/nfs/rpc_pipefs#[exportfs]# debug=0#[gssd]# verbosity=0# rpc-verbosity=0# use-memcache=0# use-machine-creds=1use-gss-proxy=1# avoid-dns=1# limit-to-legacy-enctypes=0# context-timeout=0# rpc-timeout=5# keytab-file=/etc/krb5.keytab# cred-cache-directory=# preferred-realm=#[lockd]# port=0# udp-port=0#[mountd]# debug=0# manage-gids=n# descriptors=0# port=0# threads=1# reverse-lookup=n# state-directory-path=/var/lib/nfs# ha-callout=#[nfsdcltrack]# debug=0# storagedir=/var/lib/nfs/nfsdcltrack#[nfsd]udp = nvers2 = nvers3 = ntcp = yvers4 = yvers4.0 = yvers4.1 = yvers4.2 = y# debug=0# threads=8# host=# port=0# grace-time=90# lease-time=90# tcp=y# vers2=n# vers3=y# vers4=y# vers4.0=y# vers4.1=y# vers4.2=y# rdma=n#[statd]# debug=0# port=0# outgoing-port=0# name=# state-directory-path=/var/lib/nfs/statd# ha-callout=# no-notify=0#[sm-notify]# debug=0# force=0# retry-time=900# outgoing-port=# outgoing-addr=# lift-grace=y#
重启 nfs-server 服务以应用这些更改。
systemctl restart nfs-server
以 root 用户身份使用 ss 命令来检查正在侦听的端口。
[root@localhost ~]# ss --listening --tcp --udp
在 servera
上配置 firewalld
,以允许 NFSv4 服务。
[root@localhost ~]# firewall-cmd --add-service=nfs
success
[root@localhost ~]# firewall-cmd --runtime-to-permanent
success
[root@localhost ~]# firewall-cmd --list-services
cockpit dhcpv6-client dns nfs ntp ssh
配置 servera
,以使用 NFSv4 服务器导出内容。
[root@localhost ~]# mkdir /exports[root@localhost ~]# chown nobody:nobody /exports[root@localhost ~]# semanage fcontext -a -t nfsd_fs_t "/exports(/.*)?"[root@localhost ~]# cat << EOF > /etc/exports.d/example.exports> /exports *(rw,root_squash)> EOF[root@localhost ~]# exportfs -r[root@localhost ~]# exportfs/exports <world>
serverb 配置为 servera NFSv4 导出的客户端系统,并使用 autofs。
systemctl enable --now autofs
在 serverb 上创建一个挂载点文件夹。
# mkdir -p /mnt/exports
在 serverb 上配置 /etc/auto.master 文件。
# echo "/mnt/exports /etc/auto.exports" >> /etc/auto.master
在 serverb 上使用 map-file 配置 /etc/auto.exports
[cat << EOF > /etc/auto.exports> example -fstype=nfs4 192.168.137.202:/exports/example> EOF systemctl restart autofs