私は主にディープラーニング作業のために研究室で複数のGPUサーバーを管理しています。私たちは、これらのマシンが同じファイルシステムを共有しているため、マシン間の移行がより簡単になります。
現在、NFSを使用して/home
すべてのコンピュータでフォルダを共有していますが、すべてのコンピュータにシステムアップデート(デフォルトのフォルダ以外のNVIDIAドライバなど)をインストールすることは、各コンピュータで行う必要があるため面倒です。
フルファイルシステム(root)を共有する方法があるかどうか疑問に思います/
。私の関心事は、これらのコンピュータが異なる構成(異なるCPU、GPU、メモリ)を持ち、異なるタスクを実行するため、、などのフォルダが/dev
ある/proc
ことです/tmp
。ただ共有するのは良いアイデアですか/
?
Linuxクラスタの設定方法についていくつかの記事を読んで、ほとんどSlurmなどの予約システムを使用することをお勧めします。ただし、当社サーバーは主にアルゴリズム開発(デバッグ)に使用されるため、クライアントコンピュータから直接接続することを好みます。ジョブキューシステムを使用せずにファイルシステム全体を共有できますか?
答え1
それは可能であり、実際には比較的簡単です。 NFSを使用してマウントできます。これが私がLinuxを実行する方法でした。
/dev /proc /sys /tmp /run などのフォルダは、すでに別々にマウントされている必要があります。したがって、/がNFSであってもそうではありません。
共有されていないと思われる他のフォルダ可能はい/等。システムのアップグレードからファイルを継承しようとしているため、これはより難しいかもしれませんが、各サーバーのローカルな変更を保存することもできます。 1 つの解決策は、NFS サブレイヤーとローカルファイルシステムの上位レイヤーで overlayfs を使用することです。
本当に必要な場合にのみ、/ etcをこの方法で使用します。一貫性を保つのが最善です。
一方、/ varは変更可能なデータに使用されます。つまり、すべてのサーバーがそのデータを変更しようとします。これについて多くを共有したくないでしょう。
/をNFSとしてマウントするには、initramfsにそれをマウントするように指示する必要があります。多くのディストリビューションでは、initramfsが実際に読み取るカーネルパラメータを使用してこれを実行できます。ねえhttps://www.kernel.org/doc/Documentation/filesystems/nfs/nfsroot.txt
これを行うには、ブートローダの起動オプションを変更する必要があります。たとえば、grub設定でメニュー項目を変更する必要があります。
どのディストリビューションも指定していないため、設定について詳しく説明することはできません。