みそみそりんりんblog

勉強したことを書いていきます

NFSでファイルの内容が正しく読み込めない原因について

NFSとは

主にUNIX系OSで利用される分散ファイルシステム、 及び、そのための通信規約(プロトコル)。
ネットワークを介して別のコンピュータの外部記憶装置(ストレージ)をマウントすることができ、そこに保存されているディレクトリやファイルをあたかも手元にあるかのように扱うことができる。
ストレージを他のコンピュータに提供するコンピュータをNFSサーバ、サーバの持つストレージにアクセスして利用するコンピュータをNFSクライアントという。

今回の問題の原因について

同じファイルに対して、
一秒間の間に、
異なるNFSクライアントホストから、
同じサイズのデータを書き込んだ場合に限り発生する。

解決策

アトミックにファイルを更新する(renameというシステムコールを用いる) ↓

inodeが変わるので恐らく回避できる。  
(同じファイルに対してという懸念払拭)  
&&  
アトミックな処理  
(新規にファイルを作成するときには、ファイルの作成途中の中途半端な状態ではなく、ファイルが存在しないか、あるいは作成済みの完全なファイルが存在するかのどちらかになる。)
まとめ

NFSにおいて、 プログラムを通して、 ファイルを作成する際の注意点を把握した。
(アプリケーション側から、読み込まれることを考慮した際)

参考文献

DSAS開発者の部屋:NFS経由で正しい内容が読めない場合がある問題の原因と解決策

そのファイル、安全に更新できていますか?(アトミックなファイル操作:前編) - インフラエンジニアway - Powered by HEARTBEATS

NFS(Network File System)とは - IT用語辞典 e-Words