タスクスケジューラを使用せずに共有ファイルシステムを持つ複数のLinuxサーバーをどのように設定しますか?

タスクスケジューラを使用せずに共有ファイルシステムを持つ複数のLinuxサーバーをどのように設定しますか?

私は主にディープラーニング作業のために研究室で複数の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設定でメニュー項目を変更する必要があります。

どのディストリビューションも指定していないため、設定について詳しく説明することはできません。

おすすめ記事