iostat – ディスクIOとCPUの統計を時系列で表示する

ログ取得

iostat はブロックデバイス(ディスク/パーティション)の入出力統計と CPU 使用率をスナップショットまたは一定間隔で表示するツールです。
実務では、ボトルネックの切り分け(%util の飽和、await の遅延、読み書きバランスなど)に使います。

構文(Syntax)

iostat [OPTIONS] [INTERVAL [COUNT]]

# 例
iostat                 # 1回だけ出力(起動~現在の平均)
iostat 1 5             # 1秒間隔で5回
iostat -x 2            # 2秒間隔で拡張統計
iostat -p sda 1 3      # sda とそのパーティション
  • 最初のレポートは「起動から現在までの平均」、2回目以降は「直前の出力からの平均」。-y初回レポートを抑止できます。

主なオプション一覧

オプション説明使用例
-cCPU 統計のみ表示iostat -c 1
-dデバイス統計のみ表示iostat -d 1
-x拡張デバイス統計r/s, w/s, rkB/s, wkB/s, avgqu-sz, await, %util など)iostat -x 1
`-p [DEVICEALL]`DEVICEそのパーティションを表示。ALL で全デバイスのパーティション
-k単位を KiB/s に固定iostat -k -x 1
-m単位を MiB/s に固定iostat -m 1
-t各行にタイムスタンプを付与iostat -t -x 2
-y初回レポートを出さない(直近間隔のみを見るとき)iostat -y 1 10
-z活動が 0 のデバイス行を省略iostat -z -x 1
-wフィールド幅を広く(折返しにくく)iostat -w -x 1
-Vバージョン表示iostat -V
-hヘルプ表示iostat -h

実行例

基本:現在の概況を1回表示

説明:CPU とデバイスの平均値を1度だけ表示します。
コマンド

iostat

出力例(抜粋)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           2.15    0.00    0.98    0.41    0.00   96.46

Device            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sda              3.20         12.3         45.7     123456     456789

1秒間隔で拡張統計を監視

説明:待ち時間(await)やキュー長(avgqu-sz)、忙しさ(%util)を確認します。
コマンド

iostat -x 1

出力例(抜粋)

Device         r/s   w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await %util
sda           1.00  5.00  8.00 40.00     16.0      0.5  12.0   10.0    12.5   7.2
  • await 高止まり → デバイス側の遅延を示唆。%util ≈ 100% → デバイス飽和の疑い。

パーティション単位での状況確認

説明sda 本体と sda1/sda2... の内訳を併せて見ます。
コマンド

iostat -p sda 2 3

直近間隔のみを計測(初回レポート抑止)

説明:起動以来の平均を除き、純粋に周期ごとの変化だけを取りたいとき。
コマンド

iostat -y -x 1 5

単位を MiB/s で表示

説明:帯域感をつかみやすくします。
コマンド

iostat -m -x 2

エラー例:存在しないデバイスを指定

説明:未存在のデバイスを -p に渡すと失敗します。
コマンド

iostat -p sdZ 1
echo $?

出力例(例)

iostat: sdZ: No such file or directory
1

関連コマンド

  • vmstat:メモリ/プロセス/CPU/IO を横断的に要約。
  • mpstat:CPU(全体/コア別)の使用率を時系列で表示。
  • pidstat:プロセス/スレッド単位のCPU・IOなどの統計。
  • sar:各種統計を収集・保存し、後から分析。
  • lsblk / lsblk -f:デバイスとパーティションの構成確認に。

備考

  • 前提:Linux の sysstat パッケージに含まれる iostat を想定(BusyBox/BSD とは列や挙動が異なります)。
  • 初回行の意味:初回は「起動~現在の平均」のため、短周期監視では -y を付けて除外するのが定石。
  • 単位:既定は「ブロック/秒」または「kB/s」(ビルド・ディストリに依存)。明示したい場合は -k/-m を使用。
  • 読み方のコツ%util ≈ 100%(飽和)、avgqu-sz 増加(キュー滞留)、await 高騰(遅延)を相互に見ます。ワークロードの性質(順次/ランダム、読み/書き)にも注意。
  • 権限と環境:多くは一般ユーザーで可。コンテナや仮想環境ではホストの統計が見えない/制限される場合があります。

参考

Bash玄

はじめまして!Bash玄です。

エンジニアとしてシステム運用に携わる中で、手作業の多さに限界を感じ、Bashスクリプトを活用して業務を効率化したのがきっかけで、この道に入りました。「手作業は負け」「スクリプトはシンプルに」をモットーに、誰でも実践できるBashスクリプトの書き方を発信しています。

このサイトでは、Bashの基礎から実践的なスクリプト作成まで、初心者でもわかりやすく解説しています。少しでも「Bashって便利だな」と思ってもらえたら嬉しいです!

# 好きなこと
- シンプルなコードを書くこと
- コマンドラインを快適にカスタマイズすること
- 自動化で時間を生み出すこと

# このサイトを読んでほしい人
- Bashに興味があるけど、何から始めればいいかわからない人
- 定型業務を自動化したい人
- 効率よくターミナルを使いこなしたい人

Bashの世界に一歩踏み出して、一緒に「Bash道」を極めていきましょう!

Bash玄をフォローする

コメント