すべてのプロダクト
Search
ドキュメントセンター

File Storage NAS:NAS パフォーマンスのトラブルシューティングツール

最終更新日:Apr 25, 2025

nasiostat ツールは、Alibaba Cloud NAS ファイルシステム (NAS) チームによって開発され、Linux クライアントでのネットワーク ファイル システム (NFS) 操作のレイテンシなどのリアルタイム メトリックを収集します。

はじめに

Linux クライアント カーネルでは、NFS クライアントがアプリケーション層で開始された NFS 操作を実行すると、操作レイテンシなどのメトリックがクライアントの /proc/self/mountstats ファイルに記録されます。 nasiostat ツールは、このファイルを読み取って解析し、メトリックの結果をより理解しやすい方法で表示するように設計されています。そのため、このツールは実行時に非常に軽量であり、CPU やメモリ リソースをあまり占有しません。

メトリック

メトリック

説明

ops/s

1 秒あたりに完了した I/O またはメタデータ操作の数。

kB/s

1 秒あたりのスループット。

kB/op

1 秒あたりのすべての I/O またはメタデータ操作の平均ブロック サイズ。

avg RTT (ms)

NFS クライアントが I/O またはメタデータ リクエストを送信してから、NFS クライアントが応答を受信するまでの平均時間。この時間には、I/O またはメタデータ リクエストがネットワーク経由で送信される時間 (T2)、NAS サーバーがリクエストを処理する時間 (T3)、および応答が NFS クライアントに到達する時間 (T4) が含まれます。

avg exe (ms)

NFS クライアントがカーネルで I/O またはメタデータ リクエストを作成してから、リクエストが完了するまでの時間。この時間には、リクエストが NFS クライアントのカーネルでキューに入れられる時間 (T1)、T2、T3、および T4 が含まれます。

avg queue (ms)

I/O またはメタデータ リクエストが NFS クライアントのカーネルでキューに入れられる時間 (T1)。

avg RTT、avg exe、および avg queue

image

nasiostat のダウンロード

  1. nasiostat ツールのスクリプトをダウンロードします。

    • Elastic Compute Service (ECS) インスタンスがインターネット経由でアクセス可能な場合は、次のコマンドを実行して nasiostat ツールのスクリプトをダウンロードします。

      wget https://raw.githubusercontent.com/aliyun/nas-client-tools/master/linux_client/nasiostat -O /tmp/nasiostat
    • ECS インスタンスがインターネット経由でアクセスできない場合は、nasiostat ツールのスクリプトをローカル コンピューターにダウンロードしてから、ECS インスタンスにアップロードできます。

      1. nasiostat をローカル コンピューターにダウンロードします。

      2. ダウンロードした nasiostat スクリプトを ECS インスタンスにアップロードします。詳細については、「Linux インスタンスにファイルをアップロードする」をご参照ください。

  2. 次のコマンドを実行して、nasiostat スクリプトに実行権限を付与します。

    sudo chmod +x /tmp/nasiostat

NFS 操作のパフォーマンスを表示する

次のコマンドを実行して、NFS 操作のパフォーマンスを表示します。

/tmp/nasiostat 1 10 -A write,read,getattr,setattr,access,rename,lookup,create,readdir,readdirplus,remove <NAS マウント ディレクトリ>

次のリストでは、パラメーターについて説明します。これらのパラメーターの値を実際の値に置き換えてください。

  • 1: データ サンプルを収集する頻度。単位: 秒。

  • 10: データ サンプルを収集する回数。

  • -A: write、read、getattr など、サンプリングされる NFS 操作。一般的な NFS 操作の詳細については、「一般的な NFS コマンド」をご参照ください。

  • <NAS マウント ディレクトリ>: NAS ファイルシステムがマウントされているマウント ディレクトリ。 mount -l | grep nas コマンドを実行して、マウント ディレクトリを表示できます。

    1ca404****.cn-hangzhou.nas.aliyuncs.com:/ /mnt を例にとります。

    • 1ca404****.cn-hangzhou.nas.aliyuncs.com: マウントポイントのドメイン名。ドメイン名を表示するには、次の手順を実行します。NAS コンソールにログオンします。左側の [ナビゲーションウィンドウ] で、[ファイルシステム リスト] をクリックします。 [ファイルシステム リスト] ページで、ファイルシステムを見つけて、[アクション] 列の [管理] をクリックします。表示されるページで、[マウントポイント] をクリックします。 [マウントポイント] タブで、マウントポイントのドメイン名を表示します。詳細については、「マウントポイントのドメイン名を表示する」をご参照ください。

    • /: NAS ファイルシステムのディレクトリ。

    • /mnt: 現在の ECS インスタンスにあるマウント ディレクトリ。

出力例:

           ops/s     concurrency      bklogqueue       sendqueue       pendqueue
         777.085               2               0               1               1
op                 ops/s            kB/s           kB/op         retrans    avg RTT (ms)    avg exe (ms)  avg queue (ms)
write              0.722         738.623        1023.263        0 (0.0%)         155.534         823.704         667.887
read             776.335        3296.389           4.246        0 (0.0%)           7.971           8.085           0.091
getattr            0.005           0.001           0.218       1 (14.3%)           2.857           2.857           0.000
setattr            0.001           0.000           0.262        0 (0.0%)           1.000           1.000           0.000
access             0.004           0.001           0.230        0 (0.0%)           0.200           0.200           0.000
rename             0.000           0.000           0.000        0 (0.0%)           0.000           0.000           0.000
lookup             0.001           0.000           0.234        0 (0.0%)           0.000           0.000           0.000
create             0.001           0.000           0.379        0 (0.0%)           1.000           1.000           0.000
readdir            0.000           0.000           0.000        0 (0.0%)           0.000           0.000           0.000
readdirplus        0.000           0.000           0.000        0 (0.0%)           0.000           0.000           0.000
remove             0.000           0.000           0.000        0 (0.0%)           0.000           0.000           0.000

一般的な NFS コマンド

コマンド

説明

getattr

ファイル属性を取得します。

このコマンドは、指定されたファイルシステム オブジェクトの属性を取得するために使用されます。オブジェクトは、LOOKUP、CREATE、MKDIR、SYMLINK、MKNOD、または READDIRPLUS プロシージャの応答 (または他の場所で説明されている MOUNT サービスから) でサーバーによって返されるファイル ハンドルによって識別されます。

setattr

ファイル属性を変更します。

このコマンドは、サーバー上のファイルシステム オブジェクトの1 つ以上の属性を変更するために使用されます。SETATTR 操作はアトミックではない場合があります。失敗した SETATTR 操作は、ファイルの属性を部分的に変更する場合があります。SETATTR 操作を使用してファイル サイズを変更すると、間接的に mtime が変更されます。

access

アクセス許可を確認します。

このコマンドは、ユーザー (リクエストの資格情報によって識別される) がファイルシステム オブジェクトにアクセスする権限を持っているかどうかを確認するために使用されます。クライアントは、チェックする権限のセットをビットマスクとしてエンコードします。サーバーは、ビットマスクにエンコードされた権限を確認します。通常、サーバーは NFS3_OK ステータスと、クライアントに付与された権限を含むビットマスクを返します。

lookup

ファイル名を検索します。

このコマンドは、指定されたファイル名についてディレクトリを検索し、対応するファイルシステム オブジェクトのファイル ハンドルを返します。

read

ファイルからデータを読み取ります。

このコマンドは、ファイル ハンドルに基づいてファイルからデータを読み取ります。

write

ファイルにデータを書き込みます。

このコマンドは、ファイル ハンドルに基づいてファイルにデータを書き込みます。

create

ファイルを作成します。

このコマンドは、ファイルを作成するために使用されます。NFS v3 は、デバイス ファイルと FIFO ファイルの作成を処理するために MKNOD プロシージャを導入しています。

mkdir

ディレクトリを作成します。

このコマンドは、サブディレクトリを作成するために使用されます。多くのサーバー実装では、ピリオド (. または ..) のみを含むファイル名に対して MKDIR 操作を実行することはできません。この場合、サーバーは NFS3ERR_EXIST を返します。

remove

ファイルを削除します。

このコマンドは、ディレクトリからエントリを削除するために使用されます。ディレクトリ内のエントリが対応するファイルシステム オブジェクトへの最後の参照である場合、オブジェクトは破棄される可能性があります。通常、REMOVE 操作はディレクトリ以外のオブジェクトを削除するために使用され、RMDIR 操作はディレクトリを削除するために使用されます。

rename

ファイルまたはディレクトリの名前を変更します。

RENAME 操作は、ファイルまたはディレクトリを元の場所から新しい場所に移動し、ファイルまたはディレクトリの名前を変更します。操作の整合性と完全性を確保するために、ソース ディレクトリとデスティネーション ディレクトリは同じファイルシステムとサーバー上にある必要があります。

readdir

ディレクトリを読み取ります。

READDIR 操作は、ディレクトリから可変数のエントリを順番に取得し、各エントリのファイル名とファイル識別子を返します。一方、READDIR 操作は、クライアントが後続の READDIR リクエストで追加のディレクトリ エントリを取得できるようにするための情報を提供します。たとえば、ls -l コマンドはこの操作を呼び出してディレクトリを走査します。

readirplus

ディレクトリ拡張を読み取ります。

READDIRPLUS 操作は、ディレクトリから可変数のエントリを取得し、各エントリに関する完全な情報を返します。一方、READDIRPLUS 操作は、クライアントが後続の READDIRPLUS リクエストで追加のディレクトリ エントリを取得できるようにするための情報を提供します。READDIRPLUS は、返される情報の量のみが READDIR と異なります。READDIR 操作は、各エントリのファイル名とファイル識別子 (fileid) のみ返します。READDIRPLUS 操作は、各エントリのファイル名、ファイル識別子 (fileid)、属性 (ファイル識別子を含む)、およびファイル ハンドルを返します。たとえば、ls -l コマンドはこの操作を呼び出してディレクトリを走査します。

例外シナリオ

シナリオ 1: avg exe メトリックが高く、avg RTT メトリックも高いが、avg queue メトリックは低い

ボトルネックは NFS クライアントにはありません。NAS サーバーがリクエストにゆっくり応答する場合、またはネットワーク レイテンシが高い場合は、チケットを送信 してください。

シナリオ 2: avg exe メトリックが高く、avg RTT メトリックは低いが、avg queue メトリックは高い

ボトルネックは NFS クライアントにあります。リクエストは NFS クライアントでキューに入れられます。単一の ECS インスタンスのスループットを上げて NAS にアクセスすることをお勧めします。詳細については、「Linux で NAS にアクセスするスループットを上げるにはどうすればよいですか?」をご参照ください。