【完全ガイド】Linux iostatコマンドを徹底解説!オプション一覧とディスクI/O分析の実践例

最終更新日 2025年2月12日

スポンサーリンク

iostatコマンドとは?

本セクションでは以下の内容について解説します。

  1. iostatコマンドの基本概要
  2. なぜディスクI/O分析が重要なのか?
  3. iostatを使うメリット
  4. 他のツールと何が違う?

iostatコマンドの基本概要

iostat コマンドは、LinuxシステムのディスクI/OやCPU使用率を監視するためのツールです。sysstat パッケージに含まれており、システムのパフォーマンスを分析する際に役立ちます。特に、ディスクのボトルネックを特定するために頻繁に使用されます。

新人エンジニア
新人エンジニア

iostat コマンドって何に使うんですか?

先輩エンジニア
先輩エンジニア

ディスクの読み書きの負荷状況を確認するのに使うよ。CPUの使用率も表示できるから、どのリソースがボトルネックになっているかを分析するのに便利なんだ。

スポンサーリンク

なぜディスクI/O分析が重要なのか?

ディスクI/Oは、システム全体のパフォーマンスに大きな影響を与えます。特に、以下のような問題を特定する際に重要です。

  • ディスクI/Oが高負荷になっていないか?
  • CPUがI/O待ち状態(iowait)になっていないか?
  • SSDやHDDのパフォーマンスが適切に発揮されているか?
  • 特定のプロセスが過剰にI/Oリソースを消費していないか?

iostatを使うことで、これらの問題を特定し、適切なチューニングや対策を講じることができます。

新人エンジニア
新人エンジニア

なぜディスクI/Oを監視する必要があるんですか?

先輩エンジニア
先輩エンジニア

ディスクが遅いと、システム全体のレスポンスが悪くなるんだ。例えば、データベースのクエリが遅くなったり、アプリケーションのレスポンスが悪化したりする原因になる。

iostatコマンドの利用場面

ディスク I/O の負荷

ディスク I/O が高負荷になっているか調べるとき

CPU の I/O 待ち状態

CPU が I/O 待ち状態 (iowait) になっていないか調べるとき

SSD/HDD のパフォーマンス

SSD や HDD のパフォーマンスが適切に発揮されているか調べるとき
iostatコマンドの利用場面
スポンサーリンク

iostatを使うメリット

iostatを活用することで、システムのパフォーマンス改善に役立ちます。主なメリットは以下の通りです。

  • I/Oボトルネックの特定
    • 高負荷のディスクデバイスを特定できる。
    • SSDとHDDのパフォーマンスを比較できる。
  • CPUとI/Oの関係を可視化
    • iowait を確認することで、CPUがI/O待ちでどれだけ遅延しているか把握できる。
  • 定期的な監視とトレンド分析
    • ログを定期的に取得し、時間帯ごとの負荷変動を分析できる。
iostat を使うメリット

I/O ボトルネックの特定

高負荷のディスクデバイスを特定できる。

SSD と HDD のパフォーマンス比較

SSD と HDD のパフォーマンスを比較できる。

CPU と I/O の関係の可視化

iowait を確認することで、CPU が I/O 待ちでどれだけ遅延しているか把握できる。
iostat を使うメリット
スポンサーリンク

他のツールと何が違う?

新人エンジニア
新人エンジニア

iostat 以外にも vmstatiotop がありますが、何が違うんですか?

先輩エンジニア
先輩エンジニア

vmstat はCPUやメモリの動向を含めたシステム全体の状況を確認するのに便利。iotop はリアルタイムでどのプロセスがI/Oを使っているかを確認できる。iostat は、主にディスクの統計を詳細に分析するのに向いているよ。

iostatコマンドの基本的な使い方

本セクションでは以下の内容について解説します。

  1. iostatのインストール方法(Debian系・RedHat系)
  2. コマンドの基本構文
  3. 実行例と出力結果の見方

iostatのインストール方法(Debian系・RedHat系)

iostat コマンドは、sysstat パッケージに含まれています。システムにインストールされていない場合は、以下のコマンドでインストールできます。

Debian系(Ubuntu、Debian)

sudo apt update
sudo apt install sysstat

RedHat系(CentOS、RHEL、Fedora)

sudo yum install sysstat
もしくは
sudo dnf install sysstat
新人エンジニア
新人エンジニア

sysstat がインストールできません。どうすればいいですか?

先輩エンジニア
先輩エンジニア

sysstat はデフォルトで無効になっていることがあるから、リポジトリを有効化してみよう。yum-config-manager --enable PowerToolsepel-release を試してみて。

iostat のインストール方法

Debian 系

sudo apt update

sudo apt install sysstat

RedHat 系

sudo yum install sysstat

もしくは sudo dnf install sysstat
iostat のインストール方法
スポンサーリンク

コマンドの基本構文

iostat の基本的な構文は以下の通りです。

iostat [オプション] [間隔] [回数]
  • オプション:出力の形式を変更するオプション(例:-x で詳細表示)
  • 間隔:何秒ごとにデータを取得するか(例:2 → 2秒ごと)
  • 回数:何回データを表示するか(例:5 → 5回)
新人エンジニア
新人エンジニア

iostat 2 5 ってどういう意味ですか?

先輩エンジニア
先輩エンジニア

2秒ごとに5回データを表示するってことだよ。負荷の変化を継続的に見たいときに使う。

iostat の基本的な使い方

iostat の基本的な構文は以下の通りです。

iostat [オプション] [間隔] [回数]

オプションは出力の形式を変更します。間隔はデータ取得間隔、回数はデータ表示回数です。
iostat の基本的な使い方
スポンサーリンク

実行例と出力結果の見方

実行例

iostat

出力結果

Linux 5.4.0-90-generic (hostname)  02/10/2025  _x86_64_  (8 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           1.35    0.00    0.43    0.15    0.00   98.07

Device            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sda              3.00       100.50        50.25   10050000    5025000

この出力で特に注目すべきポイント

  • %iowait:CPUがI/O待ちでどれだけ待機しているか
  • tps:1秒あたりのI/Oリクエスト回数
  • kB_read/s / kB_wrtn/s:読み書き速度(KB/s)
新人エンジニア
新人エンジニア

iostat の出力結果で、何を重点的に見ればいいですか?

先輩エンジニア
先輩エンジニア

%iowait が高すぎるとCPUがI/O待ちになっている可能性があるから、要チェック。あと、tpskB_read/s を見て、どのディスクが高負荷なのかを判断するといいよ。

これで、iostat の基本的な使い方が理解できたはずです。次のセクションでは、iostat のオプションを詳しく解説していきます。

iostat の出力結果の見方

項目

意味

%iowait

CPU が I/O 待ちでどれだけ待機しているか

tps

1 秒あたりの I/O リクエスト回数

kB_read/s / kB_wrtn/s

読み書き速度 (KB/s)
iostat の出力結果の見方
スポンサーリンク

iostatのオプション一覧と詳細解説

iostat コマンドは、オプションを活用することで、より詳細なシステム分析が可能になります。以下に主要なオプションの詳細を解説します。

  1. -c CPU使用率の表示
  2. -d ディスクI/O統計の表示
  3. -x 詳細な拡張統計情報
  4. -t タイムスタンプ付き表示
  5. -y 最初のレポートを無視する
iostat のオプション一覧

-c

CPU 使用率の表示

-d

ディスク I/O 統計の表示

-x

詳細な拡張統計情報
iostat のオプション一覧
スポンサーリンク

-c CPU使用率の表示

CPUの負荷状況を確認するには -c オプションを使用します。

iostat -c

出力例

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           2.45    0.00    1.32    0.78    0.00   95.45
項目意味補足
%userユーザーが実行しているプログラムが使っているCPUの割合アプリやコマンドなど、ユーザーが起動したプロセスがCPUをどれくらい使っているかを示す。
%nice優先度を下げて実行されているプログラムが使っているCPUの割合nice コマンドで優先度を下げた(低負荷の)プロセスのCPU使用率。通常は0に近いことが多い。
%systemOS(カーネル)が使っているCPUの割合ファイルの読み書きやネットワーク処理など、システムの内部処理で使われているCPUの割合。
%iowaitCPUがディスクやネットワークの応答待ちで何もできずにいる時間の割合CPUが「仕事をしたいけど、データを読み書き中で待たされている」時間。高すぎるとディスクI/Oが遅い可能性がある。
%steal仮想環境(VPSなど)で、他の仮想マシンにCPUを奪われた時間の割合クラウドや仮想サーバーを使っている場合に、他のサーバーとCPUを共有していて待たされる時間。通常、物理マシンなら0%。
%idleCPUが何もしていない時間の割合「CPUが暇な時間」。高ければ余裕があり、低いと負荷が高い状態。100%に近いとほぼ使われていない。
新人エンジニア
新人エンジニア

%iowait が高いと何が問題なんですか?

先輩エンジニア
先輩エンジニア

CPUがI/Oの完了を待っている時間が長いと、ディスクがボトルネックになっている可能性がある。ストレージの遅延を疑ってみよう。

-c オプション: CPU 使用率の表示

項目

意味

%user

ユーザーが実行しているプログラムが使っている CPU の割合

%nice

優先度を下げて実行されているプログラムが使っている CPU の割合

%system

OS (カーネル) が使っている CPU の割合

%iowait

CPU がディスクやネットワークの応答待ちで何もできずにいる時間の割合
-c オプション: CPU 使用率の表示
スポンサーリンク

-d ディスクI/O統計の表示

ディスクI/Oの状況を確認するには -d オプションを使用します。

iostat -d

出力例

Device            tps    kB_read/s    kB_wrtn/s
sda              4.00        120.00        80.50
項目意味初心者向けの補足
Deviceディスクデバイス名(例: sda, nvme0n1 など)監視対象のストレージ(HDDやSSD)の名前。lsblk コマンドで確認できる。
tps1秒あたりのI/Oリクエスト数(Transaction Per Second)ディスクに対して「何回」読み書き要求が発生したかを示す。数値が高いほど負荷が高い。
kB_read/s1秒あたりのディスクからの読み取りデータ量(KB単位)どれくらいのデータをディスクから「読み取っているか」。高いと大量のデータを読み込んでいる。
kB_wrtn/s1秒あたりのディスクへの書き込みデータ量(KB単位)どれくらいのデータをディスクに「書き込んでいるか」。ログやデータベースの負荷が高いと増加する。
新人エンジニア
新人エンジニア

tps が高いと何を意味しますか?

先輩エンジニア
先輩エンジニア

ディスクが多くのリクエストを処理していることを意味するよ。ただし、性能が許容範囲内かどうか iostat -x で詳細を確認したほうがいい。

-d オプション: ディスク I/O 統計の表示

項目

意味

Device

ディスクデバイス名 (例: sda, nvme0n1 など)

tps

1 秒あたりの I/O リクエスト数 (Transaction Per Second)

kB_read/s

1 秒あたりのディスクからの読み取りデータ量 (KB 単位)

kB_wrtn/s

1 秒あたりのディスクへの書き込みデータ量 (KB 単位)
-d オプション: ディスク I/O 統計の表示
スポンサーリンク

-x 詳細な拡張統計情報

-x を使うと、ディスクの詳細なパフォーマンスデータを取得できます。

iostat -x

出力例

Device        r/s    w/s    await    svctm    %util
sda           2.5    1.5     10.2     5.3      65.2
項目意味初心者向けの補足
Deviceディスクデバイス名(例: sda, nvme0n1 など)監視対象のストレージ(HDDやSSD)の名前。lsblk コマンドで確認できる。
r/s1秒あたりの読み取りリクエスト数(Reads per Second)1秒間にディスクから「何回」データを読み取ったか。数値が高いと読み取り負荷が大きい。
w/s1秒あたりの書き込みリクエスト数(Writes per Second)1秒間にディスクに「何回」データを書き込んだか。データベースやログ処理が多いと数値が高くなる。
awaitI/Oリクエストの平均待ち時間(ミリ秒)ディスクの応答を待っている時間。値が高いと、I/Oの遅延が発生している可能性がある。
svctmI/Oリクエストの平均処理時間(ミリ秒)1つのI/Oリクエストを処理するのにかかる時間。値が低いほどディスクの処理速度が速い。
%utilディスクの使用率(0~100%)100%に近いとディスクがフル稼働している状態。高すぎるとI/Oボトルネックが発生している可能性あり。
新人エンジニア
新人エンジニア

awaitsvctm はどう違うんですか?

先輩エンジニア
先輩エンジニア

await はキューにリクエストが溜まる時間を含めた待ち時間、svctm は純粋な処理時間。await が高い場合はI/Oが詰まっている可能性があるよ。

-x オプション: 詳細な拡張統計情報

項目

意味

Device

ディスクデバイス名 (例: sda, nvme0n1 など)

r/s

1 秒あたりの読み取りリクエスト数 (Reads per Second)

w/s

1 秒あたりの書き込みリクエスト数 (Writes per Second)

await

I/O リクエストの平均待ち時間 (ミリ秒)

svctm

I/O リクエストの平均処理時間 (ミリ秒)

%util

ディスクの使用率 (0~100%)
-x オプション: 詳細な拡張統計情報
スポンサーリンク

-t タイムスタンプ付き表示

時系列データを取得するには -t を使います。

iostat -t 2 3
※2秒間隔で3回測定し、時刻を表示します。

出力結果

Linux 5.4.0-90-generic (hostname)  02/12/2025  _x86_64_  (8 CPU)

12:00:01 AM
avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           3.25    0.00    1.75    0.50    0.00   94.50

Device            tps    kB_read/s    kB_wrtn/s
sda              5.00       150.50        75.25
nvme0n1          2.00       300.00       100.00

12:00:03 AM
avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           4.50    0.00    2.00    0.75    0.00   92.75

Device            tps    kB_read/s    kB_wrtn/s
sda              4.50       140.00        80.00
nvme0n1          2.50       310.00       110.00

12:00:05 AM
avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           5.00    0.00    2.25    0.50    0.00   92.25

Device            tps    kB_read/s    kB_wrtn/s
sda              6.00       160.00        85.00
nvme0n1          3.00       320.00       120.00
新人エンジニア
新人エンジニア

時間ごとの負荷を確認したい場合はどうしたらいいですか?

先輩エンジニア
先輩エンジニア

croniostat -t の結果をログに残すと、トレンド分析ができるよ。

iostatの基本オプション

-t タイムスタンプ

時系列データを取得します。

-y 初回レポート無視

ブート後の平均値を省略します。

-z ゼロ値非表示

I/Oが発生していないデバイスを非表示にします。
iostatの基本オプション
スポンサーリンク

-y 最初のレポートを無視する

iostat の最初の出力はブート後の平均値なので、これを省略するには -y を使います。

iostat -y 2 5
※2秒ごとに5回測定、初回レポートを省略します。

出力結果

Linux 5.4.0-90-generic (hostname)  02/12/2025  _x86_64_  (8 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           2.50    0.00    1.50    0.50    0.00   95.50

Device            tps    kB_read/s    kB_wrtn/s
sda              4.00       120.00        60.00
nvme0n1          3.00       300.00       150.00

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           3.00    0.00    1.75    0.60    0.00   94.65

Device            tps    kB_read/s    kB_wrtn/s
sda              4.50       130.00        70.00
nvme0n1          2.80       280.00       140.00

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           3.75    0.00    2.00    0.75    0.00   93.50

Device            tps    kB_read/s    kB_wrtn/s
sda              5.00       140.00        80.00
nvme0n1          3.20       320.00       160.00

-z ゼロ値のデバイスを非表示

I/Oが発生していないデバイスを非表示にできます。

iostat -z
※余計な情報を省き、必要なデータのみを確認可能。

実践!iostatを活用したディスクI/O分析

本セクションでは実際に現場でよく使用するディスクIO分析の事例を紹介します。

  1. 【ケース1】ディスクI/Oのボトルネックを特定する
  2. 【ケース2】CPUとI/Oの関係を分析する
  3. 【ケース3】SSDとHDDのパフォーマンスを比較する
現場で役立つ分析事例

I/Oボトルネック特定

iostat -xでawaitと%utilを確認します。

CPUとI/Oの関係分析

iostat -cで%iowaitをチェックします。

SSDとHDDの比較

iostat -xでawaitとsvctmを比較します。
現場で役立つ分析事例
スポンサーリンク

【ケース1】ディスクI/Oのボトルネックを特定する

I/Oが遅い場合、まず iostat -xawait%util を確認します。

iostat -x 2 5
新人エンジニア
新人エンジニア

ディスクのレスポンスが悪いんですが、どこを見ればいいですか?

先輩エンジニア
先輩エンジニア

await が高いと、I/Oリクエストの遅延が発生している可能性がある。%util が高いならディスクの負荷が原因かも。

【ケース2】CPUとI/Oの関係を分析する

I/O待ちが多いとCPUが使われずに待機します。iostat -c%iowait をチェック。

iostat -c 2 5
新人エンジニア
新人エンジニア

CPU使用率が低いのに、システムの応答が遅いのはなぜですか?

先輩エンジニア
先輩エンジニア

%iowait が高いと、CPUがディスクI/Oを待っている状態。ディスク性能の問題かもしれない。

【ケース3】SSDとHDDのパフォーマンスを比較する

HDDとSSDの性能差を調べるには iostat -x を使い、awaitsvctm を比較します。

iostat -x /dev/sda /dev/nvme0n1 2 5
新人エンジニア
新人エンジニア

SSDのほうが速いはずなのに、あまり変わらないのはなぜ?

先輩エンジニア
先輩エンジニア

ファイルシステムの設定やキューの深さ(queue_depth)も影響する。iostat だけでなく fio を使ってみるのも手だね。

このように、iostat を使えば、ディスクのボトルネックやシステムのI/O負荷を分析できます。次のステップとして、ログを自動取得して傾向分析を行う方法も検討するとよいでしょう。

iostatの出力結果を読み解くポイント

iostat の出力結果を正しく理解することで、ディスクのパフォーマンスを適切に評価できます。特に、各カラムの意味を把握し、重要な指標を読み取ることが重要です。

  1. 各カラムの意味と解釈
  2. rrqm/s と wrqm/s の役割
  3. await・svctm・%utilの重要性
  4. iotopとの使い分け
出力結果の読み解き

rrqm/s, wrqm/s

統合されたI/Oリクエスト数を示します。

await

リクエスト完了までの平均待ち時間です。

%util

ディスクの使用率を示します。
出力結果の読み解き
スポンサーリンク

各カラムの意味と解釈

iostat -x の出力は以下のようになっています。

Device         rrqm/s   wrqm/s     r/s     w/s   rkB/s   wkB/s  avgrq-sz  avgqu-sz   await  svctm  %util
sda               1.2      2.4    30.5    20.8  1024.5   512.3     45.8      0.5     10.2    5.3   65.2
項目意味補足
rrqm/s1秒あたりにマージ(統合)された読み取りリクエストの数OSが同じディスクへの読み取り要求をまとめて処理した回数。HDDでは多いと効率的、SSDでは少なくても問題ない。
wrqm/s1秒あたりにマージ(統合)された書き込みリクエストの数OSが書き込み要求をまとめて処理した回数。値が高いほどI/Oの最適化がされている可能性がある。
r/s1秒あたりのディスク読み取り回数1秒間にどれくらいの回数、データをディスクから読み取っているかを示す。数値が高いと読み取り負荷が大きい。
w/s1秒あたりのディスク書き込み回数1秒間にどれくらいの回数、データを書き込んでいるかを示す。ログやデータベースの負荷が高いと数値が増える。
rkB/s1秒あたりに読み取られたデータ量(KB)1秒間にディスクからどれだけのデータを読み取ったか。数値が高いとデータの読み込みが多い。
wkB/s1秒あたりに書き込まれたデータ量(KB)1秒間にディスクへどれだけのデータを書き込んだか。ログやデータベースの処理が多いと増える。
avgrq-sz1回のリクエストあたりの平均データサイズ(KB)1回の読み書きリクエストがどれくらいのサイズのデータを扱っているか。値が大きいと1回でたくさんのデータを処理している。
avgqu-szI/Oキューの平均長さディスクが処理待ちのリクエストをどれくらい抱えているか。値が高いとI/Oが詰まっている可能性あり。
await1つのリクエストが完了するまでの平均待ち時間(ms)データの読み書きの待ち時間。高いとディスクが遅い可能性がある。通常、SSDよりHDDの方が値が高い。
svctm1つのリクエストの処理時間(ms)ディスクが1回のI/Oリクエストを処理するのにかかる時間。短いほど速い。
%utilディスクの使用率(100%に近いと過負荷)100%に近いとディスクがフル稼働している状態。値が高すぎるとI/Oのボトルネックが発生している可能性がある。
新人エンジニア
新人エンジニア

どのカラムを重点的に見るべきですか?

先輩エンジニア
先輩エンジニア

基本的には await%utilr/sw/s の値をチェックするといい。ディスクが詰まっているか、負荷が高すぎるかが分かるよ。

注目すべきカラム

await

I/O遅延の可能性を示唆します。

%util

ディスクの過負荷状態を示します。

r/s, w/s

ディスクの読み書き回数を示します。
注目すべきカラム
スポンサーリンク

rrqm/s と wrqm/s の役割

  • rrqm/s, wrqm/s は、ブロックレイヤーで統合されたI/Oリクエストの数を示します。
  • これらの値が高いほど、OSが効率的にリクエストを処理している可能性があります。
  • 逆に、値が 0に近い 場合は、ストレージのI/Oスケジューリングが適切に行われていない可能性があります。
新人エンジニア
新人エンジニア

rrqm/swrqm/s がゼロに近いと問題なんですか?

先輩エンジニア
先輩エンジニア

リクエストが統合されずに直接処理されている可能性がある。HDDなら影響が大きいけど、SSDならそこまで気にしなくてもいいよ。

await・svctm・%utilの重要性

これらの値を正しく解釈することで、ディスクのボトルネックを特定できます。

  • await(待ち時間) 高いとI/Oの遅延が発生している可能性
  • svctm(サービス時間) 短いほどI/O処理が速い(ただし、測定精度が低いため参考値)
  • %util(ディスク使用率) 100%に近いとディスクが過負荷
新人エンジニア
新人エンジニア

await が高く %util も高いと、何を疑うべきですか?

先輩エンジニア
先輩エンジニア

ディスクが処理しきれず、I/Oキューにリクエストが溜まっている。SSDに移行するか、RAIDの導入を検討してみるといいかも。

iotopとの使い分け

iotop はリアルタイムで どのプロセスがI/Oを消費しているか を表示できます。

iotop -o

iostat はディスク全体の統計を表示するが、iotop はプロセス単位でI/Oを監視できます。

新人エンジニア
新人エンジニア

iostat でディスクの負荷が高いとわかったんですが、原因がわかりません。

先輩エンジニア
先輩エンジニア

iotop を使えば、どのプロセスがI/Oを多く使っているのか特定できるよ。

iotopとの使い使い分け

iostatはディスク全体の統計を表示します。iotopはプロセス単位でI/Oを監視します。iostatで負荷が高い場合、iotopで原因プロセスを特定します。
iotopとの使い使い分け
スポンサーリンク

実践 iostatをスクリプトで活用する

iostat を定期的に実行し、パフォーマンスを監視することで、システムのトラブルシューティングや負荷分析が容易になります。特に、ログを蓄積し、特定の条件でアラートを出す設定を行うと便利です。

  1. 定期的にログを取得するシェルスクリプト
  2. cronを使った自動監視の設定
  3. awkやgrepを活用したデータ抽出方法
スクリプト活用術

定期ログ取得

シェルスクリプトでiostatの出力を保存します。

自動監視

cronでスクリプトを定期実行します。

データ抽出

awkやgrepで特定の情報を抽出します。
スクリプト活用術

定期的にログを取得するシェルスクリプト

定期的に iostat の結果を取得し、ログとして保存するスクリプトを作成できます。

スクリプト例(iostat_log.sh)

#!/bin/bash
LOG_DIR="/var/log/iostat"
mkdir -p $LOG_DIR
LOG_FILE="$LOG_DIR/iostat_$(date +%F_%T).log"

iostat -x 1 5 > "$LOG_FILE"

※1秒ごとに5回データを取得し、日時付きログファイルに保存します。

新人エンジニア
新人エンジニア

定期的に iostat のデータを保存したいんですが、どうすればいいですか?

先輩エンジニア
先輩エンジニア

シェルスクリプトで iostat の出力をログファイルに記録すればいいよ。定期実行するなら cron を使うといいね。

cronを使った自動監視の設定

シェルスクリプトを cron に設定し、定期的に実行できます。

cron設定例

*/5 * * * * /path/to/iostat_log.sh

※5分ごとにスクリプトを実行し、iostat のデータを取得します。

新人エンジニア
新人エンジニア

手動で iostat を実行するのは面倒なので、自動化したいです。

先輩エンジニア
先輩エンジニア

cron を使えば、指定した間隔で自動的に実行できる。crontab -e で設定できるよ。

スポンサーリンク

awkやgrepを活用したデータ抽出方法

ログデータから特定の情報を抽出するには awkgrep を活用します。

特定のディスクの%utilが80%以上の行を抽出

awk '$NF > 80 {print $0}' /var/log/iostat/iostat_latest.log
新人エンジニア
新人エンジニア

ログの中からディスクの使用率が高いものだけ抜き出す方法は?

先輩エンジニア
先輩エンジニア

awk を使えば、%util の値が80%以上の行だけを抽出できるよ。

よくあるトラブルシューティング

本セクションではよくあるトラブルシューティングについて以下の内容を解説します。

  1. iostatが出力されない・エラーが発生する場合の対処法
  2. 期待と異なる数値が出る場合のチェックポイント
  3. 高負荷状態のディスクI/Oを軽減する方法
トラブルシューティング

iostat not found

sysstatパッケージをインストールします。

期待外の数値

各カラムの意味を確認します。

高負荷

I/Oスケジューリングを変更します。
トラブルシューティング
スポンサーリンク

iostatが出力されない・エラーが発生する場合の対処法

エラー
iostat: command not found

対処法

sudo apt install sysstat   # Debian系
sudo yum install sysstat   # RedHat系
新人エンジニア
新人エンジニア

iostat が使えないんですが、どうしたらいいですか?

先輩エンジニア
先輩エンジニア

sysstat パッケージが入っていない可能性があるから、インストールしよう。

期待と異なる数値が出る場合のチェックポイント

  • %util が高く await も高い → I/Oボトルネックの可能性
  • %util は低いが await が高い → ストレージのレスポンス遅延
  • iowait が高いが %util は低い → CPUがI/O待ちになっている可能性
新人エンジニア
新人エンジニア

思ったようなデータが出ないのですが、何を疑えばいいですか?

先輩エンジニア
先輩エンジニア

各カラムの意味を確認しながら、CPUやメモリの状況も vmstat でチェックするといい。

高負荷状態のディスクI/Oを軽減する方法

I/O負荷の原因となるプロセスを特定

iotop -o

I/Oスケジューリングを変更(cfq → noopやdeadline)

echo noop > /sys/block/sda/queue/scheduler

ディスクI/Oのリミットを設定(cgroupsを利用)

cgcreate -g blkio:/limitgroup echo "8:0 10485760" > /sys/fs/cgroup/blkio/limitgroup/blkio.throttle.write_bps_device
新人エンジニア
新人エンジニア

ディスクの負荷が高くてパフォーマンスが悪いです。

先輩エンジニア
先輩エンジニア

iotop で負荷の原因を特定して、I/Oスケジューリングを最適化したり、cgroupsでリミットを設定すると改善できるよ。

高負荷時の対策
高負荷時の対策
ゴリタンが愛用しているLinuxの教科書たち
https://amzn.to/4hBQa2y
https://a.r10.to/hkpc1F

この記事も参考になるかも!
この記事を書いた人!

ゴリタン

インフラエンジニアとして、ネットワークとサーバーの運用・保守・構築・設計に幅広く携わり、
現在は大規模政府公共データの移行プロジェクトを担当。

CCNPやLPICレベル3、AWSセキュリティスペシャリストなどの資格を保有しています。

あなたにオススメの広告
スポンサーリンク
Linux教科書