我遇到了以下问题。我想在 CentOS 7 客户端上通过 Infiniband 安装 glusterfs 共享。glusterfs 共享“/data”由名为 storage1 的主机切断。对于客户端 II 设置和最小 CentOS 系统。我安装了rdma
并opensm
让 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 中?