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
nasiostat のダウンロード
nasiostat ツールのスクリプトをダウンロードします。
Elastic Compute Service (ECS) インスタンスがインターネット経由でアクセス可能な場合は、次のコマンドを実行して nasiostat ツールのスクリプトをダウンロードします。
wget https://raw.githubusercontent.com/aliyun/nas-client-tools/master/linux_client/nasiostat -O /tmp/nasiostatECS インスタンスがインターネット経由でアクセスできない場合は、nasiostat ツールのスクリプトをローカル コンピューターにダウンロードしてから、ECS インスタンスにアップロードできます。
nasiostat をローカル コンピューターにダウンロードします。
ダウンロードした nasiostat スクリプトを ECS インスタンスにアップロードします。詳細については、「Linux インスタンスにファイルをアップロードする」をご参照ください。
次のコマンドを実行して、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 | ディレクトリを作成します。 このコマンドは、サブディレクトリを作成するために使用されます。多くのサーバー実装では、ピリオド ( |
remove | ファイルを削除します。 このコマンドは、ディレクトリからエントリを削除するために使用されます。ディレクトリ内のエントリが対応するファイルシステム オブジェクトへの最後の参照である場合、オブジェクトは破棄される可能性があります。通常、REMOVE 操作はディレクトリ以外のオブジェクトを削除するために使用され、RMDIR 操作はディレクトリを削除するために使用されます。 |
rename | ファイルまたはディレクトリの名前を変更します。 RENAME 操作は、ファイルまたはディレクトリを元の場所から新しい場所に移動し、ファイルまたはディレクトリの名前を変更します。操作の整合性と完全性を確保するために、ソース ディレクトリとデスティネーション ディレクトリは同じファイルシステムとサーバー上にある必要があります。 |
readdir | ディレクトリを読み取ります。 READDIR 操作は、ディレクトリから可変数のエントリを順番に取得し、各エントリのファイル名とファイル識別子を返します。一方、READDIR 操作は、クライアントが後続の READDIR リクエストで追加のディレクトリ エントリを取得できるようにするための情報を提供します。たとえば、 |
readirplus | ディレクトリ拡張を読み取ります。 READDIRPLUS 操作は、ディレクトリから可変数のエントリを取得し、各エントリに関する完全な情報を返します。一方、READDIRPLUS 操作は、クライアントが後続の READDIRPLUS リクエストで追加のディレクトリ エントリを取得できるようにするための情報を提供します。READDIRPLUS は、返される情報の量のみが READDIR と異なります。READDIR 操作は、各エントリのファイル名とファイル識別子 (fileid) のみ返します。READDIRPLUS 操作は、各エントリのファイル名、ファイル識別子 (fileid)、属性 (ファイル識別子を含む)、およびファイル ハンドルを返します。たとえば、 |
例外シナリオ
シナリオ 1: avg exe メトリックが高く、avg RTT メトリックも高いが、avg queue メトリックは低い
ボトルネックは NFS クライアントにはありません。NAS サーバーがリクエストにゆっくり応答する場合、またはネットワーク レイテンシが高い場合は、チケットを送信 してください。
シナリオ 2: avg exe メトリックが高く、avg RTT メトリックは低いが、avg queue メトリックは高い
ボトルネックは NFS クライアントにあります。リクエストは NFS クライアントでキューに入れられます。単一の ECS インスタンスのスループットを上げて NAS にアクセスすることをお勧めします。詳細については、「Linux で NAS にアクセスするスループットを上げるにはどうすればよいですか?」をご参照ください。