iostatコマンド徹底解説|LinuxでディスクI/Oの状況を確認する方法

Linuxシステムのパフォーマンスを調査するとき、CPUやメモリの使用率に加えて「ディスクI/O(Input/Output)」の状況を把握することは非常に重要です。サーバーが重い、レスポンスが遅いといった問題の原因がディスクの読み書きにある場合も少なくありません。
そんなときに活躍するのが iostat コマンドです。
本記事では、iostatコマンドの基本的な使い方から、出力結果の読み解き方、具体的な活用シーンまで、わかりやすく解説します。


iostatとは?

iostat は「I/O statistics」の略で、LinuxシステムにおけるCPU使用率と各ブロックデバイス(ディスク)のI/O状況を統計的に表示するコマンドです。
このコマンドは sysstat パッケージに含まれており、以下のような目的で使用されます。

  • ディスクI/Oの負荷状況を把握したいとき
  • I/Oボトルネックの原因を調査したいとき
  • サーバー性能の傾向を把握したいとき

iostatを活用することで、サーバーのチューニングやトラブルシューティングに役立てることができます。


iostatのインストール方法

多くのディストリビューションでは、iostat コマンドはデフォルトでインストールされていない場合があります。以下のように sysstat パッケージをインストールすることで使用可能になります。

Red Hat系(RHEL, CentOS, Rocky Linuxなど)

sudo yum install sysstat

Debian系(Ubuntuなど)

sudo apt-get install sysstat

インストール後に以下のコマンドでバージョン確認ができます。

iostat -V

基本的な使い方

最も基本的な形で iostat を実行する場合、以下のように入力します。

iostat

これにより、CPU使用率とディスクごとのI/O統計が表示されます。
もう少し詳細に表示したい場合は、以下のようなオプションを付けることで情報が増えます。

iostat -x 1 3

このコマンドは、「拡張表示を1秒間隔で3回」表示します。


出力結果の見方

iostat の出力は主に2つのセクションに分かれています。

1. CPU使用率

%user   %nice %system %iowait  %steal   %idle
1.50 0.00 0.25 3.45 0.00 94.80
  • %user:ユーザープロセスのCPU使用率
  • %system:カーネルプロセスの使用率
  • %iowait:I/O待ち時間の割合(これが高いとディスクボトルネックの可能性)
  • %idle:アイドル時間

2. デバイスごとの統計

Device            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sda 1.25 25.00 5.00 25000 5000
  • tps:1秒あたりのI/Oリクエスト数(転送数)
  • kB_read/s, kB_wrtn/s:毎秒の読み書き速度
  • kB_read, kB_wrtn:累積読み書きデータ量

また -x オプションをつけた場合はさらに以下のような情報も表示されます。

  • %util:デバイスの使用率(100%に近いとディスクが限界まで使われている)
  • await:1回のI/Oリクエストにかかる平均待ち時間(ミリ秒)
  • svctm:サービス時間(I/O処理にかかった平均時間)

よく使うオプション

オプション説明
-x詳細なデバイス別情報を表示
-dデバイスの統計情報のみ表示(CPU情報を除く)
-k単位をkBで表示(デフォルトはブロック単位)
-m単位をMBで表示
interval count指定間隔で統計情報を表示

例:10秒ごとに5回表示

iostat -x 10 5

実際の活用シーン

ケース1:サーバーが遅くなった原因調査

サーバーのレスポンスが悪いとき、まず iostat を実行して %iowait が高くないかを確認します。
%iowait が10%以上になる場合、ディスクI/Oがボトルネックになっている可能性があります。

ケース2:バックアップの影響を調べる

定期的なバックアップ中に iostat -x を使って %util を確認すれば、どのディスクにどれだけ負荷がかかっているかが分かります。
この情報から、バックアップスケジュールの見直しやストレージ分散の判断ができます。


注意点と補足

  • iostat の出力は瞬間的なデータではなく、間隔の平均値です。
    一度だけで判断せず、繰り返し監視して傾向をつかむことが大切です。
  • SSD環境では awaitsvctm の数値が非常に小さくなるため、判断基準がHDDと異なります。
  • sysstat のバージョンにより、出力形式や項目名が異なる場合があります。

他のツールとの比較

ツール主な用途特徴
iostatI/O統計とCPUの監視軽量で基本的な情報が確認できる
iotopリアルタイムI/O監視プロセス単位でI/O量を確認可能
dstat多機能なリソース監視ディスク・CPU・メモリ・ネットワークなども併せて確認可能

iostatは他のツールと組み合わせることで、より深い分析が可能になります。


まとめ

iostat コマンドは、LinuxシステムにおけるディスクI/OとCPU使用率の状況を可視化するための基本的かつ強力なツールです。
オプションを使い分けることで、詳細なボトルネックの原因調査や、システム全体のパフォーマンス管理に役立ちます。

トラブル時に「とりあえずiostatで見てみよう」となるような、頼れるツールとして、ぜひ習得しておきましょう。

タイトルとURLをコピーしました