CentOS 7 - 网络挂载和 OpenSM 的 Systemctl 依赖问题

CentOS 7 - 网络挂载和 OpenSM 的 Systemctl 依赖问题

我遇到了以下问题。我想在 CentOS 7 客户端上通过 Infiniband 安装 glusterfs 共享。glusterfs 共享“/data”由名为 storage1 的主机切断。对于客户端 II 设置和最小 CentOS 系统。我安装了rdmaopensm让 infiniband 运行起来。两者都通过以下方式添加到启动顺序中

systemctl enable rdma.service 
systemctl enable opensm.service 

网络设备使用 NetworkManager 进行管理,ping storage1在 Infiniband 网络上运行良好。然后,我按照 gluster 文档中的描述添加了一个 fstab 条目:

storage1:/data   /net/data glusterfs       defaults,acl,_netdev    0       0 

当我重新启动系统时,net-data.mount服务失败了。启动完成后,我可以登录并手动启动:

systemctl start net-data.mount 

一切正常。分析问题后,我发现使用客户端正常以太网连接的所有其他网络共享(nfs、gluster)都是在启动期间安装的。journalctl我发现 Inifiniband 所必需的 OpenSM 在启动过程中太慢了。上述共享的安装是在 OpenSM 完成启动前 5 秒进行的。但 OpenSM 的服务描述说它是需要的,network.target因此在安装网络共享之前它就启动了。

所以我的问题是,如何在启动序列的某个地方引入一个睡眠定时器,等待 Inifiniband 网络真正准备就绪/OpenSM 正在读取。

我不使用 gluster 的 RDMA 功能。

通过 yum/rpm 安装的 OpenSM 服务文件为:

[Unit]
Description=Starts the OpenSM InfiniBand fabric Subnet Manager
Documentation=man:opensm
DefaultDependencies=false
Before=network.target remote-fs-pre.target
Requires=rdma.service
After=rdma.service

[Service]
Type=forking
ExecStart=/usr/libexec/opensm-launch

[Install]
WantedBy=network.target

编辑: 我找到了一个解决方法,但似乎很糟糕。我编辑了 /usr/libexec/opensm-launch 并在其后附加 sleep 15,然后让 systemd 等待启动脚本完成。

是否有可能将这种行为集成到 systemd 中?

相关内容