職場にはクラスタがあります。

クラスタと聞くと、HA( High Availability ), 高可用性のものを想像する人が多いと思います。けど、High Paformance 、つまり科学技術演算用のクラスタです。

そのクラスタの設定ですが、職場の同僚が行ったのですが、どうも変なんです。
どこが変といいますと、クラスタのアプリケーションが使用しているある共通のデータ(計算データではなく、クラスタの管理データ)が置かれているNFSの領域のマウントの仕方が変なんですね。
このNFSの領域て、各ノードが参照し更新するので、私は、”noac” でマウントしなければいけない、と主張したんですが。。。。

以下のようなオプションで各ノードをマウントしているんです。

rw,bg,intr,actimeo=0,async,rsize=32768,wsize=32768

actimeo=0 は良いんですよ。
ただ、async,,,,,これはだめだろう。というか、あれ、これサーバー側で使用するオプションじゃなかったっけ。

案の定、計算用クラスタで問題が発生したのですが、設定した本人は知らん振りをしています。

そこで、noac と actimeo=0 の違いをまとめてみました。

 

共通点

ファイル属性のキャッシュが無効化され、そのつどNFSサーバーを参照する。

 

相違点
actimeo=0 の場合

ディレクトリ属性のキャッシュも無効化される。
NFSサーバーへの同期書き込みは行わない

noacの場合

ディレクトリ属性のキャッシュは有効
NFSサーバーへの同期書き込みを行う

 

つまり、actimeo=0 の場合、毎回サーバーを参照するけど、同期書き込みは行われていないので、その内容が最新かどうかは保障できない。ということになります。
ということは、ファイルが更新されない領域の場合、問題は無いと思うのですが、不特定のノードが更新する領域の場合、noac をオプションによるマウントの方が安全ではないかと思います。

広告