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など)