第 39 章 systemd 网络目标和服务
NetworkManager 在系统引导过程中配置网络。但是,当使用远程 root(/)引导时,例如,如果 root 目录存储在 iSCSI 设备上,网络设置会在 RHEL 启动之前在初始 RAM 磁盘(initrd
)中应用。例如,如果使用 rd.neednet=1
在内核命令行上指定了网络配置,或者指定了挂载远程文件系统的配置,则网络设置被应用在 initrd
上。
在应用网络设置时,RHEL 使用 network
和 network-online
目标以及 NetworkManager-wait-online
服务。另外,如果这些服务无法动态重新加载,您可以将 systemd
服务配置为在网络完全可用后启动。
39.1. network 和 network-online systemd target 的不同
systemd 维护 network
和 network-online
目标单元。特殊单元,如 NetworkManager-wait-online.service
,具有 WantedBy=network-online.target
和 Before=network-online.target
参数。如果启用了,这些单元将启动 network-online.target
,并延迟要达到的目标,直到建立了某种形式的网络连接。它们会延迟 network-online
目标,直到网络连接了。
network-online
目标启动一个服务,这会对进一步执行增加更长的延迟。systemd 会自动使用这个目标单元的 Wants
和 After
参数来向所有 System V(SysV) init
脚本服务单元添加依赖项,这些服务单元具有一个指向 $network
工具的 Linux Standard Base(LSB)头。LSB 头是 init
脚本的元数据。您可以使用它指定依赖项。这与 systemd
目标类似。
network
目标不会显著延迟引导进程的执行。到达 network
目标意味着,负责设置网络的服务已启动。但并不意味着已经配置了一个网络设备。这个目标在关闭系统的过程中非常重要。例如,如果您在引导过程中有一个排在 network
目标之后的服务,则这个依赖关系在关闭过程中会反过来。在服务停止后,网络才会断开连接。远程网络文件系统的所有挂载单元都会自动启动 network-online
目标单元,并在其之后排序。
network-online
目标单元只在系统启动过程中有用。系统完成引导后,这个目标不会跟踪网络的在线状态。因此,您无法使用 network-online
来监控网络连接。这个目标提供了一个一次性系统启动概念。