JITAKU_SVR_Wiki
nfsチューニング †
nfsのオプションについて(クライアントの設定)
サーバ側設定は以下で。
nfs_サーバ、クライアント
検証内容 †
【検証】
# vi /etc/fstab
192.168.0.1:/home/any1 /nfsdir nfs auto,rw,noexec,nosuid,nodev,hard,intr rsize=1024,wsize=1024 0 0
fstabの書式
nfs先サーバ:ディレクトリ マウント先ディレクトリ nfs(マウントタイプの宣言) オプション
nfsでググると割と出てくるオプション。
上記のオプションで何が起きるか。
何に向けての設定なのか。
調査したオプション一覧 †
auto | クライアントを再起動したときに自動でマウントする |
noauto | クライアントを再起動したときに自動でマウントしない |
rw | 読み、書きを許可する |
noexec | 実行ファイルを許可しない |
nosuid | suidを無効 |
nodev | キャラクタ・スペシャル・デバイスやブロック・スペシャル・デバイスを使用できないようにする |
hard | nfsがタイムアウトしたときにコンソール上に"server not responding"を返す。その後も無制限に再試行を行う。 |
soft | nfsがタイムアウトになった場合にI/Oにエラーを返し、処理を中断する。 |
intr | hardオプションを選択した場合、nfsがタイムアウトになった場合デフォルトではその処理の中断を許可しない。 |
以下、コメントが必要なものについて記述
auto、noautoについて †
noautoを選択、またはオプションなしの状態で手動でマウントさせると、
サーバ側がダウンし復帰しても自動マウントはされない。
逆にautoを選択しておくと、サーバ側がダウンし、復帰した場合再マウントしてくれる。
自動でマウントさせたい場合にはautoを選択すること。
intrについて †
intrオプションを付けることで中断を許可できる。
hardを選択した場合はintrのオプションを付けないとクライアントは固まる。
no_root_squashについて †
太文字で書いたのは以前ハマった経験があるため。
今回の検証では登場しないがメモのため記述。
クライアントマシンのrootがNFSサーバのファイルにアクセスするとコピーしたファイルなどは、「anonymous、nobody」とされてしまう。
この動作をroot squashingと言い、このオプションを指定するとオフにすることが出来る。
エラー例)cp: failed to preserve ownership for `xxxx/xxxx'
hardとsoftの違い †
hard = レジューム機能あり
soft = レジューム機能なし
hardオプションはnfsマウントが切れてしまっても中断されるまで再思考を繰り返す。
softオプションはnfsマウントが切れてしまった場合、エラーを返し処理をしない。正しいデータではない可能性がある。
何も選択をしない場合にはデフォルトでhardが選択される。
softの場合にはデータをアップロード中等のときにエラーを返すと、その場で処理を中断し、
アップロード側へはゴミファイルを残してしまう。再度アップロードしなおさなくてはならない。
このことから、確実に整合性の取れたデータをnfsさせたい場合にはhardを選択した方が良い(DBやメールなど)。
オプションの選択 †
どのオプションを使用するかは環境により変わってくる。
用件が結構大事だったりするので、分かりやすく記述
【今回の目的】
apacheから見える状態のディレクトリをnfsマウントさせたい。
【結論】
192.168.0.1:/home/any1 /nfsdir nfs auto,rw,noexec,nosuid,nodev,soft,intr,timeo=300,retrans=1 0 0
【理由】
hardか、softか?
nfsマウントが何らかの理由で切断された場合、
hard => セッションが保持されたままになり、セッションが開放されない。
つまり、アクセスがあるたびにクライアント(プロセス)数が増えていきいづれapacheが固まる。
soft => 一定時間経過すると、セッションをタイムアウトさせる。
ただし、これも「一定時間」というのが問題。
確かに開放されるが、この一定時間が過ぎ、プロセスが開放される前に、MAXクライアントに達してしまうと、
結果はhardと同じくapacheが固まってしまう。
ただし、今回の用件に対してはsoftを選択することで多少安全にシステムを運用できるとの結論になった。
timeo、retransについて
上記でsoftを選択したことにより、nfsが切断された場合、nfsのタイムアウト値のチューニングが必須になる。
計算方法などは以下が参考になったので。
http://www.asahi-net.or.jp/~aa4t-nngk/nfs.html
2011-02-03