Sun NFS サーバーの調整

ネットワーク監視ツール

NFS 関係のネットワークの性能を監視するためのツールを以下に示します。

表 A-2 ネットワーク監視ツール

ツール 

機能 

snoop

Ethernet の指定パケットに関する情報を表示します 

netstat

ネットワーク関連のデータ構造体の内容を表示します。 

ping

ネットワークホストに ICMP ECHO_REQUEST パケットを送信します

NetMetrix Load Monitor 

リアルタイムまたは特定の時間範囲でネットワークの負荷を監視ができます。負荷情報として、時間や発信元、宛先、プロトコル、パケットの大きさを提供します。 

SunNet Manager 

ネットワーク装置の監視と障害追跡を行う管理・監視ツールです 

LAN アナライザ : Network General Sniffer, Novell/Excelan Lanalyzer 

パケットの分析を行います。 

snoop

snoop は、Solaris 2.x ソフトウェア環境で提供されているコマンドです。無制限にパケットを確保するには、snoop コマンドをスーパーユーザーで実行する必要があります。制限付きのパケットを確保したり、確保したファイルからのパケットを分析する場合は、スーパーユーザーである必要はありません。

無制限のパケット確保では、フィルターが無効になり、使用しているシステム宛のものかどうかに関係なく、サブネットのあらゆるパケットを監視することができます。使用しているシステム宛てではないパケットを、間接的に監視することもできます。無制限モードは、スーパーユーザーでだけ使用することができます。

snoop コマンドを実行すると、サンのシステムはネットワーク監視装置となり、ネットワーク上の問題を検出することが可能になります。snoop コマンドは、特定の数のネットワークパケットを確保するため、クライアントからサーバーへの呼び出しを追跡して、パケットの内容を表示することができます。パケットの内容をファイルに保存し、後で調査することもできます。

snoop コマンドは以下を行います。

snoop コマンドは、データリンクプロバイダインタフェース (DLPI) のパケットフィルタとバッファーモジュールの両方を使用し、ネットワークを介してやりとりされるパケットを効率良く捕捉します。

任意の 2 台のシステム間の、全トラフィックを表示または捕捉するには、その 2 台以外のシステムで snoop を実行してください。

snoop はパケット解析ツールなので、サブネットを構築する場合に特に有用となります。snoop コマンドを実行して得られる出力を使用し、負荷統計情報を蓄積するスクリプトを実行することができます。また、このコマンドには、パケットヘッダーを取り出す機能があり、この情報を利用してパケットをデバッグしたり、非互換の問題の原因を突き止めたりすることができます。

ここでは、snoop の使用例を紹介します。

確保したファイル (pkts) 内の選択したパケット情報の表示

統計情報には、読み取り要求を出しているクライアントが示されます。左側の列に 約 4 マイクロ秒の精度で秒数が表示されます。

読み取りまたは書き込み要求を発行したときに、サーバーが時間切れにならないようにしてください。サーバーが時間切れになると、クライアントは要求を再送信する必要があり、クライアントの IP コードによって、書き込みブロックがより小さな UDP ブロックに分解されます。デフォルトの書き込み時間は 0.07 秒です。時間切れの値は、mount コマンドで変更することができます。


例 A-1 snoop -i pkts -p99,108 コマンドの出力例d

# snoop -i pkts -p99,108
99   0.0027   boutique -> sunroof     NFS C GETATTR FH=8E6C
100   0.0046   sunroof -> boutique     NFS R GETATTR OK
101   0.0080   boutique -> sunroof     NFS C RENAME FH=8E6C MTra00192
to .nfs08
102   0.0102   marmot -> viper          NFS C LOOKUP FH=561E screen.r.13.i386
103   0.0072   viper -> marmot          NFS R LOOKUP No such file or
directory
104   0.0085   bugbomb -> sunroof    RLOGIN C PORT=1023 h
105   0.0005   kandinsky -> sparky    RSTAT C Get Statistics
106   0.0004   beeblebrox -> sunroof  NFS C GETATTR FH=0307
107   0.0021   sparky -> kandinsky    RSTAT R
108   0.0073   office -> jeremiah        NFS C READ FH=2584 at 40960
for 8192

snoop コマンドの引数の意味は、以下のとおりです。

表 A-3 snoop コマンドの引数

-i pkts

pkts ファイルに確保されているパケット情報を表示します。

-p99,108

確保したファイルから読み出すパケット範囲の指定です。パケット番号 99 から 108 のパケットの情報が表示されます。確保したファイルの先頭パケットのパケット番号は 1 です。 

  1. パケットの詳細情報を表示するには、以下のように snoop コマンドを使用します。


    # snoop -i pkts -v 101
    

snoop -i pkts -v 101 コマンドは、パケット 101 に関する詳細情報を表示します。引数の意味は、以下のとおりです。

表 A-4 snoop -i pkts -v 101 コマンドの引数

-i pkts

pkts ファイルに確保されているパケット情報を表示します。

-v

詳細モードの指定です。パケット 101 のヘッダの詳細情報を表示します。このオプションは、特定のパケットに関する情報が必要なときに使用してください。 

NFS パケットを表示するには、以下のように入力します。


# snoop -i pkts rpc nfs and sunroof and boutique
1   0.0000   boutique -> sunroof    NFS C GETATTR FH=8E6C
2   0.0046    sunroof -> boutique   NFS R GETATTR OK
3   0.0080   boutique -> sunroof    NFS C RENAME FH=8E6C MTra00192 to .nfs08

この例では、sunroof システムと boutique システム間の NFS パケットを表示しています。このコマンドの引数の意味は、以下のとおりです。

表 A-5 snoop -i pkts rpc nfs and sunroof and boutique コマンドの引数

-i pkts

pkts ファイルに確保されているパケット情報を表示します。

rpc nfs

RPC 呼び出しのパケットまたは NFS プロトコルの応答パケットを表示します。nfs の後に、/etc/rpc の RPC プロトコル名かプログラム番号オプションが続きます。

and

2 つのブール値の論理和をとります。たとえば sunroof boutique は、sunroof and boutique と同じです。

  1. 新しく確保したファイルにパケット情報を保存するには、以下のように入力します。


    # snoop -i pkts -o pkts.nfs rpc nfs sunroof boutique
    

上記の snoop コマンドの引数の意味は、以下のとおりです。

表 A-6 snoop -i pkts -o pkts.nfs rpc nfs sunroof boutique コマンドの引数

-i pkts

pkts ファイルに確保されているパケット情報を表示します。

-o pkts.nfs

pkts.nfs ファイルに表示中のパケット情報を保存します。

rpc nfs

RPC 呼び出しのパケットまたは NFS プロトコルの応答パケットを表示します。nfs の後に、/etc/rpc の RPC プロトコル名かプログラム番号オプションが続きます。

snoop コマンドの使用法およびオプションについての詳細は、snoop のマニュアルページを参照してください。