目標
- iostatコマンドについて理解する
iostatコマンド
iostat コマンドは、システムの I/O(入出力)状態を監視するためのツールです。主に、ディスクやその他のブロックデバイスへの I/O 操作(読み書き)のパフォーマンスを測定し、システムのストレージ関連の負荷やパフォーマンスボトルネックを分析するために使用されます。このツールは、システム全体や特定のデバイスにおける ディスク I/O のパフォーマンス を監視し、システム管理者が ストレージ関連の問題 を特定しやすくするために非常に役立ちます。
iostat コマンドの使い方
iostat コマンドの基本
iostat コマンドの使い方は次の通りです。
iostat [options] [interval] [count]
- options: iostat の動作を変更するオプション(例えば、出力形式を指定するなど)
- interval: 統計を表示する間隔(秒単位)
- count: 表示回数(指定した回数分だけ統計を表示)
iostat
デフォルトで、iostat はシステム全体のI/O統計を1回だけ表示します。
iostat 2
2秒ごとにI/O統計を表示します(無限に続きます)。
iostat 2 5
2秒ごとに5回、I/O統計を表示します。
iostat -x 2 5
-xオプションを使うことで、より詳細なI/O統計(拡張統計)を表示します。
出力例(-xオプション無し)
iostat コマンドの出力には、システム全体とディスクデバイスに関する複数の情報が含まれます。
$ iostat
Linux 5.4.0-42-generic (hostname) 07/15/2025 _x86_64_ (4 CPU)
Device tps kB_read/s kB_wrtn/s kB_read kB_wrtn
sda 12.35 142.23 94.14 23422 15252
- tps (transactions per second): 1秒あたりに処理されたI/Oリクエスト数(読み込み・書き込みの合計)
- kB_read/s: 1秒あたりに読み取られたデータの量(KB単位)
- kB_wrtn/s: 1秒あたりに書き込まれたデータの量(KB単位)
- kB_read: これまでに読み取られたデータの合計量(KB単位)
- kB_wrtn: これまでに書き込まれたデータの合計量(KB単位)
出力例(-xオプション無し)
$ iostat -x 2 5
Linux 5.4.0-42-generic (hostname) 07/15/2025 _x86_64_ (4 CPU)
Device r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util
sda 0.35 0.12 28.14 17.52 101.23 0.02 31.5 14.2 2.4
- r/s (reads per second): 1秒あたりの読み取りリクエスト数
- w/s (writes per second): 1秒あたりの書き込みリクエスト数
- rsec/s (read sectors per second): 1秒あたりに読み取られたセクター数
- wsec/s (write sectors per second): 1秒あたりに書き込まれたセクター数
- avgrq-sz (average request size): 平均リクエストサイズ(バイト単位)
- avgqu-sz (average queue size): 平均キューサイズ(I/Oのキューの長さ)
- await (average wait time): I/Oリクエストの平均待機時間(ミリ秒単位)
- svctm (service time): リクエストに対するサービス時間(ミリ秒単位)
- %util (device utilization): デバイスがアイドルでない時間の割合(%)。「100%」の場合はデバイスが常に使用されていることを示します。
その他、よく使われるオプション
- -d: ディスクのみの統計を表示(デバイスごとに表示)
- -k: 結果をキロバイト単位で表示(デフォルトではブロック単位)
- -t: タイトル行を表示
- -p: 個別のパーティションごとの統計を表示
- -h: ヘルプを表示
応用例
応用例1.CPUとI/Oを同時に表示
iostat -c -d 2 5
- -c-c: CPUの使用率も表示します。これにより、システム全体のCPU使用状況(%user, %system, %idle など)を把握できます。
- -d: ディスクデバイスの統計を表示します。ディスクごとの読み書き状況(tpsやkB_read/sなど)が確認できます。
これにより、CPU使用率とディスクI/Oの両方を同時に監視でき、システムの全体的な負荷のバランスを確認することができます。例えば、ディスクI/Oの負荷が高いがCPU使用率が低い場合、ディスクがボトルネックになっている可能性があります。: CPUの使用率も表示
応用例2.I/O待機時間とサービス時間の監視
- await (I/O待機時間): I/Oリクエストの平均待機時間を示します。高い値は、ディスクがI/Oリクエストに対して応答するまでに長時間かかっていることを意味します。通常、ディスクのパフォーマンスが低下している場合や、I/Oリクエストがキューに溜まっている場合に増加します。
- svctm (サービス時間): I/Oリクエストがディスクで処理されるのにかかる時間です。これも高い値だと、ディスクが過負荷である可能性があります。
- %util: ディスクがビジーである時間の割合を示します。これが100%に近づくと、ディスクがほぼ常に利用されており、パフォーマンスに影響が出ている可能性が高いです。
応用例3.高負荷時のI/Oの確認
高負荷時には、iostat コマンドを使ってディスクのI/O状況を監視することで、どのディスクまたはデバイスが過負荷になっているのかを特定できます。
- await が高い場合、I/O待機時間が長く、ディスクが遅延していることを示唆します。ディスクアクセスのレスポンスが悪くなると、全体的なシステムのパフォーマンスに悪影響を及ぼすことがあるため、早期に発見して対策を講じることが重要です。
- %util が非常に高い場合、ディスクはほぼフルに稼働しており、ディスクI/Oがシステムのパフォーマンスボトルネックになっている可能性があります。
iostat を使用して、特にディスクI/Oの負荷が高い場合に、どのディスクが負荷の原因となっているかを特定し、適切な対策(例えばディスクのアップグレードや、負荷分散のための追加ストレージの導入など)を講じることができます。
iostat コマンドのまとめ
iostat はシステムのディスクI/O性能を監視するために非常に便利なツールです。特に、ディスクの利用状況、読み書きの速度、リクエストの数などをリアルタイムでモニタリングできるため、ディスクの負荷を診断するのに役立ちます。-x オプションで詳細な情報を取得し、I/O待機時間やサービス時間、ディスクの利用率などを把握することができます。
今回は以上になります。

ブックマークのすすめ
「ほわほわぶろぐ」を常に検索するのが面倒だという方はブックマークをお勧めします。ブックマークの設定は別記事にて掲載しています。

