我在实验室管理多台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 配置中的菜单项。
您没有说明哪个发行版,所以我无法更具体地了解设置。