Sun NFS サーバーの調整

各クライアントの検査

全体として見ると、調整にはクライアントの調整も含まれます。クライアントを調整した方が、サーバーを調整するより性能が改善されることがあります。例えば 100 あるクライアントの 1 台ごとに 4 MB のメモリーを増設することで、非常に効果的に NFS サーバーの負荷を小さくすることができます。

各クライアントを検査する
  1. %プロンプトに対して nfsstat -c と入力することによって、クライアント統計情報を調べ、NFS に関係する問題がないか確認します。

    エラーと再送信が発生していないかどうか調べます。


    client % nfsstat -c
    Client rpc:
    calls      badcalls   retrans    badxids    timeouts   waits      newcreds
    384687     1          52         7          52         0          0 
    badverfs   timers     toobig     nomem      cantsend   bufulocks
    0          384        0          0          0          0
    Client nfs:
    calls      badcalls   clgets     cltoomany 
    379496     0          379558     0
    Version 2: (379599 calls)
    null       getattr    setattr    root       lookup     readlink   read
    0 0%       178150 46% 614 0%     0 0%       39852 10%  28 0%      89617 23%
    wrcache    write      create     remove     rename     link       symlink
    0 0%       56078 14%  1183 0%    1175 0%    71 0%      51 0%      0 0%
    mkdir      rmdir      readdir    statfs
    49 0%      0 0%       987 0%     11744 3%

    この nfsstat -c コマンドの出力例では、合計で 384687 回のコールがあり、そのうち再送信 (retrans) と時間切れ (timeout) が、それぞれ 52 回発生しています。

    各フィールドの意味は、以下のとおりです。

    表 2-9 nfsstat -c コマンドの出力例
    calls

    コール数の合計。 

    badcalls

    RPC によって拒否されたコール数の合計。 

    retrans

    再送信回数の合計。 

    badxid

    1 つの NFS 要求に対して確認が重複した回数。 

    timeout

    タイムアウトが発生したコール数。 

    wait

    使用できるクライアントハンドルがなかったためにコールが待たされた回数。 

    newcred

    確証情報のリフレッシュが求められた回数 

    nfsstat -c コマンドの出力の説明と対処方法を以下に示します。.

    表 2-10 nfsstat -c コマンドを実行して得られる出力と、それに対する処置

    問題 

    処置 

    retrans 値が全コール数の 5 %を超える

    サーバーに要求が届いていません。 

    badxid 値と badcalls 値がほぼ等しい

    ネットワークの動作が遅くなっています。原因を究明してください。問題を解消するには、高速なネットワークにするかサブネットをインストールすることを検討してください。 

    badxid 値と timeouts 値がほぼ等しい

    大部分の要求はサーバーに届いていますが、予測よりサーバーの動作が鈍いことが考えられます。nfsstat -m を使用し予測時間を調べてください。 

    badxid 値がゼロに近い

    ネットワーク上で要求が失われています。mount オプションの rsize 値と wsize 値を小さくしてください。

    null が 0 より大きい

    null コール数が多いということは、オートマウンタが頻繁にマウントを再試行していることを意味します。マウント時のタイムアウト時間が短かすぎます。オートマウンタコマンド行のマウント時タイムパラメタ (timeo) の値を大きくしてください。

    NFS ネットワークに使用可能なサン以外のツールには、以下のような製品があります。

    • NetMetrix (Hewlett-Packard)

    • SharpShooter (Network General)

  2. %プロンプトに対して nfsstat -m と入力して、NFS マウントしている各ファイルシステムの統計情報を表示します。

    統計情報は、サーバー名とアドレス、マウントフラグ、現在の読み取り、書き込みサイズ、伝送回数、ダイナミック伝送に使われているタイマー情報から構成されます。


    client % nfsstat -m
    /export/home from server:/export/home
     Flags:
    vers=2,hard,intr,dynamic,rsize=8192,wsize=8192,retrans=5
     Lookups: srtt=10 (25ms), dev=4 (20ms), cur=3 (60ms)
     Reads:   srtt=9 (22ms), dev=7 (35ms), cur=4 (80ms)
     Writes:  srtt=7 (17ms), dev=3 (15ms), cur=2 (40ms)
     All:     srtt=11 (27ms), dev=4 (20ms), cur=3 (60ms)

    nfsstat -m コマンドの出力例の用語の意味は、以下のとおりです。

    表 2-11 nfsstat -m コマンドの出力
    srtt

    正常時の往復時間。 

    dev

    予測偏差。 

    cur

    現在のバックオフタイムアウト値。 

    上記のコードの ( ) 内の数字は、ミリ秒で表した実際の時間です。その他の値は、オぺレーティングシステムのカーネルによって保持されている未スケール値で、無視してかまいません。応答時間は、ルックアップと読み取り、書き込みの操作の組み合せ時について示されています。nfsstat -m コマンドを実行して得られる出力と対処方法を以下にまとめます。

    表 2-12 nfsstat -m コマンドを実行して得られる出力と処置

    問題 

    処置 

    srtt 値が 50 ミリ秒より大きい

    マウントポイントの反応が鈍いことが考えられます。前述の手順を参考に、ネットワークとサーバーのマウントポイントを提供しているディスクを調べてください。 

    "NFS server not responding" というメッセージが表示される。

    メッセージが表示されないようにして、かつ性能を向上させるには、/etc/vfstab ファイルの timeo パラメタ値を大きくしてください。初期 timeo パラメタ値の 2 倍を基準にしてください。vfstab ファイルの timeo パラメタ値を変更して、nfsstat -c コマンドを実行します。badxid 値を調べて、前述の nfsstat -c コマンドの推奨処置に従ってください。

    Lookups: cur 値が 80 ミリ秒より大きい

    要求の処理に時間がかかりすぎています。ネットワークかサーバーのいずれかの動作が遅いことが考えられます。 

    Reads: cur 値が 150 ミリ秒より大きい

    要求の処理に時間がかかりすぎています。ネットワークかサーバーのいずれかの動作が遅いことが考えられます。 

    Writes: cur 値が 250 ミリ秒より大きい

    要求の処理に時間がかかりすぎています。ネットワークかサーバーのいずれかの動作が遅いことが考えられます。