如何在不使用作业调度程序的情况下设置一堆具有共享文件系统的Linux服务器?

如何在不使用作业调度程序的情况下设置一堆具有共享文件系统的Linux服务器?

我在实验室管理多台GPU服务器,主要用于深度学习任务。我们希望这些机器共享相同的文件系统,这样在它们之间切换就更容易了。

目前,我正在使用 NFS 共享/home所有计算机的文件夹,但在所有计算机上安装系统更新(例如 NVIDIA 驱动程序,在主文件夹之外)非常痛苦,因为我必须在每台计算机上执行此操作。

我想知道是否有任何方法可以共享整个文件系统(根/)。我担心的是,由于这些机器具有不同的配置(不同的CPU、GPU、内存)并运行不同的作业,并且存在诸如/dev/proc、之类的文件夹/tmp。直接分享是个好主意吗/

我读过一些关于如何设置 Linux 集群的文章,其中大多数建议使用像 Slurm 这样的调度系统。然而,我们的服务器主要用于算法开发(调试),因此首选从客户端计算机直接连接它们。是否可以在不使用作业队列系统的情况下共享整个文件系统?

答案1

这是可以做到的,而且事实上相对简单。您可以使用 NFS 挂载 / 就可以了。我过去就是这样运行Linux的。

像 /dev /proc /sys /tmp /run 这样的文件夹应该已经是单独安装的。因此,即使 / 是 NFS,那些也不会是。

您可能认为不共享的另一个文件夹可能是 /etc。这可能更棘手,因为您想从系统升级中继承文件,但您可能还想保留每个服务器中的本地更改。一种解决方案可能是使用具有 NFS 下层和本地文件系统上层的 overlayfs。

如果您确实需要,我只会以这种方式使用 /etc。最好保持事情一致。

另一方面,/var 用于可变数据,这意味着每个服务器都会尝试修改它。如果有的话,你不太可能希望在这方面有太多的分享。

要将 / 作为 NFS 挂载,您需要指示 initramfs 为您挂载它。在许多发行版上,您可以使用实际上由 initramfs 读取的内核参数来执行此操作。看这里https://www.kernel.org/doc/Documentation/filesystems/nfs/nfsroot.txt

这需要修改引导加载程序中的引导选项。例如,您需要修改 grub 配置中的菜单项。

您没有说明哪个发行版,所以我无法更具体地了解设置。

相关内容