Linux でディスク I/O パフォーマンスを監視するための最適なツール


概要: このガイドでは、Linux サーバーでディスク I/O アクティビティ (パフォーマンス) を監視およびデバッグするための最適なツールについて説明します。

Linux サーバーで監視する重要なパフォーマンス メトリックは、ディスク I/O (入力/出力) アクティビティです。これは、Linux サーバーのいくつかの側面、特にファイルまたはデータのディスクへの保存またはディスクからの取得の速度 (特にデータベース サーバー上)。これは、アプリケーションとサービスのパフォーマンスに波及効果をもたらします。

1. iostat – デバイスの入力と出力の統計を表示します

これは、ブロック デバイスとパーティションの CPU 統計と I/O 統計をレポートするために設計された、広く使用されているユーティリティです。

Linux サーバーで iostat を使用するには、Linux ディストリビューションに該当するコマンドを実行して、Linux システムに sysstat パッケージをインストールする必要があります。

$ sudo apt install sysstat          [On Debian, Ubuntu and Mint]
$ sudo yum install sysstat          [On RHEL/CentOS/Fedora and Rocky Linux/AlmaLinux]
$ sudo emerge -a app-admin/sysstat  [On Gentoo Linux]
$ sudo apk add sysstat              [On Alpine Linux]
$ sudo pacman -S sysstat            [On Arch Linux]
$ sudo zypper install sysstat       [On OpenSUSE]    

簡単なデバイス使用率レポートを表示するには、-d コマンド ライン オプションを指定して iostat を実行します。通常、最初のレポートは、システムの起動 (ブート時間) からの時間に関する統計を提供し、後続の各レポートは、前のレポートからの時間に関するものです。

拡張統計レポートには -x を使用し、各レポートの時間を有効にするには -t フラグを使用します。さらに、レポート出力でアクティビティのないデバイスを除外する場合は、 -z フラグを追加します。

# iostat -d -t 
OR
# iostat -d -x -t 

1 秒あたりのブロックではなく 1 秒あたりのキロバイトで統計を表示するには、-k フラグを追加するか、-m フラグを使用して 1 秒あたりのメガバイトで統計を表示します。

# iostat -d -k
OR
# iostat -d -m

iostat は、x 秒間隔で継続的なデバイス レポートを表示することもできます。たとえば、次のコマンドはレポートを 2 秒間隔で表示します。

# iostat -d 2

前のコマンドに関連して、x 秒間隔で n 個のレポートを表示できます。次のコマンドは、2 秒間隔で 10 件のレポートを表示します。または、レポートをファイルに保存して、後で分析することもできます。

# iostat -d 2 10
OR
# iostat -d 2 10 > disk_io_report.txt &

レポート列の詳細については、iostat のマニュアル ページを参照してください。

# man iostat

2. sar – Linux システム アクティビティを表示する

sar は、sysstat パッケージに同梱されているもう 1 つの便利なユーティリティで、システム アクティビティ情報を収集、レポート、または保存することを目的としています。使用を開始する前に、次のように設定する必要があります。

まず、/etc/default/sysstat ファイルでデータを収集できるようにします。

# vi /etc/default/sysstat

次の行を探して、示されているように値を「true」に変更します。

ENABLED="true"

次に、sysstat cron ジョブで定義されたデータ収集間隔を減らす必要があります。デフォルトでは 10 分ごとに設定されていますが、2 分ごとに下げることができます。

/etc/cron.d/sysstat ファイルでこれを行うことができます。

# vi /etc/cron.d/sysstat

ファイルを保存して閉じます。

最後に、次の systemctl コマンドを使用して sysstat サービスを有効にして開始します。

# systemctl enable --now sysstat.service
# systemctl enable sysstat.service

次に、sar レポートの表示が開始されるまで 2 分間待ちます。 sar コマンドと -b コマンド ライン オプションを使用して I/O と転送速度の統計を報告し、-d を使用して各ブロック デバイスのアクティビティを報告します。

# sar -d -b

3. iotop – Linux ディスク I/O 使用率を監視する

iotop と同様に、プロセスごとにディスク I/O アクティビティと使用状況を監視できるシンプルなユーティリティがあります。

次のようにして Linux サーバーにインストールできます (Linux ディストリビューションに適したコマンドを実行することを忘れないでください)。

$ sudo apt install iotop             [On Debian, Ubuntu and Mint]
$ sudo yum install iotop             [On RHEL/CentOS/Fedora and Rocky Linux/AlmaLinux]
$ sudo emerge -a sys-processs/iotop  [On Gentoo Linux]
$ sudo apk add iotop                 [On Alpine Linux]
$ sudo pacman -S iotop               [On Arch Linux]
$ sudo zypper install iotop          [On OpenSUSE]    

プロセスごとの I/O アクティビティを監視するには、次のように引数なしで iotop を実行します。デフォルトでは、反復間の遅延は 1 秒です。 -d フラグを使用してこれを変更できます。

# iotop
OR
# iotop -d 2

デフォルトでは、iotop はプロセスのすべてのスレッドを表示します。プロセスのみを表示するようにこの動作を変更するには、-P コマンド ライン オプションを使用します。

# iotop -P

また、-a オプションを使用すると、帯域幅を表示するのではなく、累積 I/O を表示するように指示できます。このモードでは、iotop は、iotop が呼び出されてから実行された I/O プロセスの量を示します。

# iotop -P -a

これですべてです。このガイドまたは上記のツールについてのご意見をお聞かせください。以下のフィードバックフォームからコメントを残してください。

このリストに含まれていないが、ここに表示する価値があると思われるツールについてもお知らせください。