NFSの設定
この節では,Network File System (NFS) を設定します. NFSは,異なるコンピュータ間でネットワークを介してファイルを共有するためのソフトウェアです. 今回構築するクラスタでは,実行するプログラムをマスタとスレーブの間で共有するために使用します.
NFSはサーバとクライアントの2種のソフトウェアから構成されます. NFSサーバは,コンピュータ上のファイルを公開するためのソフトウェアです. NFSクライアントはNFSサーバと通信し,NFSサーバが実行されているコンピュータ上のファイルを読み書きします.ここでは,マスタ上でNFSサーバを,スレーブ上でNFSクライアントで実行します.
マスタ
まず,NFS経由でスレーブに対して公開するディレクトリを作成します.
ここでは,/opt/nfs
を公開します.
$ sudo mkdir /opt/nfs
$ sudo chmod 777 /opt/nfs
次に,NFSサーバをインストールします.
$ sudo apt install nfs-kernel-server
NFSサーバの設定ファイルを編集し,/opt/nfs
を公開する設定を追加します.
/etc/exports
をエディタで開き,下記の行をファイルの末尾に追加します.
/opt/nfs *.naist.jp(rw,sync,no_subtree_check)
追記後のファイルの例:
# /etc/exports: the access control list for filesystems which may be exported
# to NFS clients. See exports(5).
#
# Example for NFSv2 and NFSv3:
# /srv/homes hostname1(rw,sync,no_subtree_check) hostname2(ro,sync,no_subtree_check)
#
# Example for NFSv4:
# /srv/nfs4 gss/krb5i(rw,sync,fsid=0,crossmnt,no_subtree_check)
# /srv/nfs4/homes gss/krb5i(rw,sync,no_subtree_check)
#
/opt/nfs *.naist.jp(rw,sync,no_subtree_check)
NFSサーバに設定ファイルを再読み込みさせます.
$ sudo systemctl reload nfs-server
以上で,マスタにおけるNFSの設定は完了です.
最後に,ファイルを正しく共有できているか確認するために,エディタで/opt/nfs
以下にテスト用のファイルを作成しておきましょう.中身は何でも構いません.
スレーブ
NFSクライアントをインストールします.
$ sudo apt install nfs-common
マウントポイントを作成します.
$ sudo mkdir /opt/nfs
マスタのディレクトリをスレーブからアクセス可能にします.
/etc/fstab
を編集し,下記の行をファイルの末尾に追加します.
sd-narakita01.naist.jp:/opt/nfs /opt/nfs nfs defaults 0 0
追記後のファイルの例:
proc /proc proc defaults 0 0
PARTUUID=63d8a5be-01 /boot vfat defaults 0 2
PARTUUID=63d8a5be-02 / ext4 defaults,noatime 0 1
# a swapfile is not a swap partition, no line here
# use dphys-swapfile swap[on|off] for that
sd-narakita01.naist.jp:/opt/nfs /opt/nfs nfs defaults 0 0
/etc/fstab
の設定を反映させます.
$ sudo mount -a
以上で,スレーブにおけるNFSの設定は完了です.
マスタで/opt/nfs
に作成したファイルが,スレーブから見えるか確認しましょう.
Note: NFSでは,スレーブの数が増えるとマスタの負荷が増大し,ファイルの 読み書きが遅くなってしまうという問題があります.そのため, 大規模なスパコンでは,負荷を複数のコンピュータに分散する 並列ファイルシステムが使用されています. (LustreやGPFSなど)