Parallellaでクラスタリング その2 NFSの導入

2016/08/03追記: 新しいファームがNFSv4に対応しましたので、新たに記事を起こしました。こちらのNFSv3対応の記事は参考程度にご覧下さい。

ちょっと前の記事でクラスタリングを組んだことを書きましたが、アプリをコンパイルする度にバイナリを各ノードにコピーするのが面倒になったので、NFSを使ってファイルを共有することにしました。Parallellaのlinux kernelはNFSサーバ非対応なので、母艦をNFSサーバにします。

まず母艦のdebianにnfs-kernel-serverを入れて、設定を行います。USERNAMEは母艦でのユーザ名です。マウントポイント~USERNAME/parallellaは192.168.100.0/24以下からmountできるようにしておきます。

$ sudo apt-get install nfs-kernel-server
...
$ sudo vi /etc/idmapd.conf
...
Domain = ドメイン
...
$ sudo vi /etc/exports
/home/USERNAME/parallella 192.168.100.0/24(rw,sync,fsid=0,crossmnt,no_subtree_check)
$ mkdir parallella
$ systemctl restart nfs-kernel-server

次に、各ノード(Parallella)側にnfs-commonを入れてディレクトリを共有します。mountに失敗した時のために、タイムアウト時間(3秒)とリトライ回数(3回)を指定しておきます。

$ sudo apt-get install nfs-common
$ sudo vi /etc/idmapd.conf
...
Domain = ドメイン
...
$ sudo vi /etc/fstab
母艦.ドメイン:/home/USERNAME/parallella /home/parallella/parallella nfs defaults,timeo=30,retrans=3 0 0
$ sudo mount ~parallella/parallella

これで、マスターの演算ノードでコンパイルするだけで、各ノードへコピーする必要なくmpirunできるようになりました。ちょっと気になるポイントとしては、NFSクライアント(Parallella)側からNFSマウントしたディレクトリにファイルを作成すると、umaskは022になっているのですがパーミッションが644ではなく666になってしまうことです。

2015/01/15追記: NFSサーバ側でACL (Access Control List)を設定することで、共有ディレクトリのパーミッションを制御できました。以下、追加手順です;

$ sudo apt-get install nfs4-acl-tools
...
$ setfacl -d -R --set='u::rwx,g::r-x,o::r-x' /home/USERNAME/parallella
$ sudo service stop nfs-kernel-server
$ sudo service restart nfs-common
$ sudo service start nfs-kernel-server

ACLの設定については下記のサイトを参考にしました。ただし、サイトに記載のコマンドオプションでは私の環境(Debian stretch)ではエラーになりました。

  • http://www2.math.ritsumei.ac.jp/wordpress/?p=899
  • http://aikotobaha.blogspot.jp/2011/10/acl.html

Parallellaでクラスタリング その2 NFSの導入」への2件のフィードバック

  1. ピンバック: Parallellaでクラスタリング その3 | CB1300SFのある生活

  2. ピンバック: Parallellaでクラスタリング その6 NFSv4対応 | CB1300SFのある生活

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です