すべてのプロダクト
Search
ドキュメントセンター

Elastic Compute Service:fio を使用したブロックストレージのパフォーマンステスト

最終更新日:Apr 28, 2026

Linux の Elastic Compute Service (ECS) インスタンス上で fio を使用し、ブロックストレージのパフォーマンスチューニングのために生ディスクの IOPS、スループット、レイテンシを測定します。

説明

fio はオープンソースの I/O ベンチマークツールであり、ランダムおよびシーケンシャルな読み取り/書き込み操作などのブロックストレージパフォーマンスメトリックをテストできます。

操作手順

重要
  • ブロックストレージデバイスにパーティション、ファイルシステム、またはデータが含まれている場合、fio によってファイルシステムが破損し、データ損失が発生する可能性があります。テスト前にスナップショットを作成してください。詳細については、「スナップショットの手動作成」をご参照ください。

  • システムディスクまたはデータが含まれるデータディスクではテストを行わないでください。代わりに、新しく作成された未初期化の空のデータディスクを使用します。

  • テスト結果はテスト環境で取得したものであり、参考情報としてのみご利用ください。本番環境では、ネットワーク条件や同時アクセスなどの要因により、クラウドディスクのパフォーマンスが異なる場合があります。

  • 新しいディスクのテスト後:

以下の例では、Alibaba Cloud Linux 3.2104 LTS 64 ビットのパブリックイメージを使用しています。ご利用のインスタンスイメージによっては、操作が異なる場合があります。

  1. ECS インスタンスに接続します。

    詳細については、「Workbench を使用した Linux インスタンスへのログイン」をご参照ください。

  2. ブロックストレージデバイス名を照会します。

    sudo fdisk -lu

    截屏2024-12-05 09インスタンスには 3 つのブロックストレージデバイスがあります。システムディスク /dev/vda と 2 つのデータディスク /dev/vdb/dev/vdc です。

  3. デバイス上のパーティションおよびファイルシステムを確認します。

    sudo blkid

    截屏2024-12-05 09デバイス /dev/vda および /dev/vdb にはパーティションとファイルシステムがあります。一方、デバイス /dev/vdc は一覧に表示されておらず、パーティションやファイルシステムが存在しないことを示しています。

    警告

    テスト対象にパーティション、ファイルシステム、またはデータが含まれている場合、fio によってファイルシステムが破損し、データ損失が発生する可能性があります。データディスクにパーティションとファイルシステムがある場合は、テスト用に空のデータディスクを作成してください。

    • 同一仕様の従量課金ディスクを作成し、インスタンスにアタッチします。詳細については、「データディスクの作成」をご参照ください。

    • テスト後、従量課金ディスクをリリースします。詳細については、「クラウドディスクのリリース」をご参照ください。

  4. テスト前にデバイス上のデータをバックアップします。詳細については、「スナップショットの手動作成」をご参照ください。

    説明

    スナップショットには料金が発生します。詳細については、「スナップショットの課金」をご参照ください。

  5. オペレーティングシステムに応じて libaio ライブラリおよび fio をインストールします。

    Alibaba Cloud Linux 2/3 または CentOS 6 以降

    説明

    CentOS 6 は保守終了 (EOL) となっています。Linux コミュニティのルールに従い、次の CentOS 6 リポジトリアドレスからすべてのコンテンツが削除されました:http://mirror.centos.org/centos-6/。Alibaba Cloud 上で CentOS 6 のデフォルトリポジトリを引き続き使用すると、エラーが発生します。CentOS 6 の特定のインストールパッケージを使用するには、CentOS 6 のリポジトリアドレスを変更してください。詳細については、「CentOS 6 のリポジトリアドレス変更方法」をご参照ください。

    sudo yum install libaio libaio-devel fio -y

    Debian 9 以降または Ubuntu 14 以降

    重要

    Debian 9 および Debian 10 は保守終了 (EOL) となっています。インスタンスで Debian 9 または Debian 10 を実行している場合は、リポジトリアドレスを変更してください。詳細については、「CentOS または Debian の保守終了後のリポジトリアドレス変更」をご参照ください。

    sudo apt-get update
    sudo apt-get install libaio* fio -y
  6. /tmp ディレクトリに移動します。

    cd /tmp
  7. テストコマンドを実行します。

  8. テスト結果を確認します。メトリック値はクラウドディスクのカテゴリによって異なります。以下の図の値は参考情報としてのみご利用ください。

  • IOPS 値は IOPS テスト結果を示します。截屏2024-11-19 11

  • BW 値はスループットテスト結果を示します。截屏2024-11-19 11

  • lat (usec) 値はレイテンシテスト結果を示します。截屏2024-11-19 11

クラウドディスクのテストコマンド

警告

パーティション、ファイルシステム、またはデータが含まれるディスク上で fio を実行すると、ファイルシステムエラーおよびデータ損失が発生する可能性があります。データディスクにパーティションおよびファイルシステムがある場合は、テスト用に新しい空のデータディスクを作成してください。

  1. 同一構成の従量課金ディスクを作成し、インスタンスにアタッチします。詳細については、「データディスクの作成」をご参照ください。

  2. テスト完了後:

以下のコマンドのパラメーター値は参考情報としてのみご利用ください。「操作手順」セクションの手順 2 で取得したブロックストレージデバイス名に /dev/your_device を置き換えてください。たとえば、/dev/your_device/dev/vdb に置き換えます。fio パラメーターの詳細については、「fio パラメーター」セクションをご参照ください。

  • ランダム書き込み IOPS をテストします。

    sudo fio -direct=1 -iodepth=128 -rw=randwrite -ioengine=libaio -bs=4k -size=1G -numjobs=1 -runtime=1000 -group_reporting -filename=/dev/your_device -name=Rand_Write_Testing
  • ランダム読み取り IOPS をテストします。

    sudo fio -direct=1 -iodepth=128 -rw=randread -ioengine=libaio -bs=4k -size=1G -numjobs=1 -runtime=1000 -group_reporting -filename=/dev/your_device -name=Rand_Read_Testing
  • シーケンシャル書き込みスループットをテストします。

    sudo fio -direct=1 -iodepth=64 -rw=write -ioengine=libaio -bs=1024k -size=1G -numjobs=1 -runtime=1000 -group_reporting -filename=/dev/your_device -name=Write_PPS_Testing
  • シーケンシャル読み取りスループットをテストします。

    sudo fio -direct=1 -iodepth=64 -rw=read -ioengine=libaio -bs=1024k -size=1G -numjobs=1 -runtime=1000 -group_reporting -filename=/dev/your_device -name=Read_PPS_Testing
  • ランダム書き込みレイテンシをテストします。

    sudo fio -direct=1 -iodepth=1 -rw=randwrite -ioengine=libaio -bs=4k -size=1G -numjobs=1 -group_reporting -filename=/dev/your_device -name=Rand_Write_Latency_Testing
  • ランダム読み取りレイテンシをテストします。

    sudo fio -direct=1 -iodepth=1 -rw=randread -ioengine=libaio -bs=4k -size=1G -numjobs=1 -group_reporting -filename=/dev/your_device -name=Rand_Read_Latency_Testing

ESSD IOPS パフォーマンスのテスト」をご参照ください。

ローカルディスクのテストコマンド

警告

パーティション、ファイルシステム、またはデータが含まれるディスク上で fio を実行すると、ファイルシステムエラーおよびデータ損失が発生する可能性があります。データディスクにパーティションおよびファイルシステムがある場合は、ローカルディスクを搭載した新しいインスタンスを作成してテストを行ってください。

  1. ローカルディスクはインスタンス作成時のみ作成可能です。テスト用に同一構成の新しいインスタンスを作成します。詳細については、「ECS インスタンスのカスタム起動」をご参照ください。

  2. テスト完了後:

以下のコマンドはローカル NVMe SSD およびローカル SATA HDD に適用されます。パラメーター値は参考情報としてのみご利用ください。「操作手順」セクションの手順 2 で取得したブロックストレージデバイス名に /dev/your_device を置き換えてください。たとえば、/dev/your_device/dev/vdb に置き換えます。fio パラメーターの詳細については、「fio パラメーター」セクションをご参照ください。

  • ランダム書き込み IOPS をテストします。

    sudo fio -direct=1 -iodepth=32 -rw=randwrite -ioengine=libaio -bs=4k -numjobs=4 -time_based=1 -runtime=1000 -group_reporting -filename=/dev/your_device -name=test
  • ランダム読み取り IOPS をテストします。

    sudo fio -direct=1 -iodepth=32 -rw=randread -ioengine=libaio -bs=4k -numjobs=4 -time_based=1 -runtime=1000 -group_reporting -filename=/dev/your_device -name=test
  • シーケンシャル書き込みスループットをテストします。

    sudo fio -direct=1 -iodepth=128 -rw=write -ioengine=libaio -bs=128k -numjobs=1 -time_based=1 -runtime=1000 -group_reporting -filename=/dev/your_device -name=test
  • シーケンシャル読み取りスループットをテストします。

    sudo fio -direct=1 -iodepth=128 -rw=read -ioengine=libaio -bs=128k -numjobs=1 -time_based=1 -runtime=1000 -group_reporting -filename=/dev/your_device -name=test
  • ランダム書き込みレイテンシをテストします。

    sudo fio -direct=1 -iodepth=1 -rw=randwrite -ioengine=libaio -bs=4k -numjobs=1 -time_based=1 -runtime=1000 -group_reporting -filename=/dev/your_device -name=test
  • ランダム読み取りレイテンシをテストします。

    sudo fio -direct=1 -iodepth=1 -rw=randread -ioengine=libaio -bs=4k -numjobs=1 -time_based=1 -runtime=1000 -group_reporting -filename=/dev/your_device -name=test
  • シーケンシャル書き込みレイテンシをテストします。

    sudo fio -direct=1 -iodepth=1 -rw=write -ioengine=libaio -bs=4k -numjobs=1 -time_based=1 -runtime=1000 -group_reporting -filename=/dev/your_device -name=test
  • シーケンシャル読み取りレイテンシをテストします。

    sudo fio -direct=1 -iodepth=1 -rw=read -ioengine=libaio -bs=4k -numjobs=1 -time_based=1 -runtime=1000 -group_reporting -filename=/dev/your_device -name=test

fio パラメーター

以下の表は、前述のコマンドで使用されている fio パラメーターについて説明しています。

パラメーター

説明

direct

ダイレクト I/O の使用有無を指定します。デフォルト値:1。有効な値:

  • 1:ダイレクト I/O を使用し、I/O バッファーをバイパスしてデータを直接書き込みます。

  • 0:ダイレクト I/O を使用しません。データは I/O バッファーを経由します。

iodepth

I/O キューの深さです。たとえば、-iodepth 128 は、fio タスクごとに最大 128 の I/O 操作を並列で実行できることを意味します。

rw

読み取り/書き込みポリシーです。有効な値:

  • randwrite:ランダム書き込み

  • randread:ランダム読み取り

  • read:シーケンシャル読み取り

  • write:シーケンシャル書き込み

  • randrw:ランダム読み取りおよび書き込み

ioengine

I/O エンジンです。ほとんどの場合、libaio が使用されます。その他のエンジンについては、fio のドキュメントをご参照ください。

bs

I/O 単位のブロックサイズです。デフォルト値:4k。読み取り/書き込みの値を個別に指定する場合は <read>,<write> の形式で記述します。

size

テストファイルサイズです。

fio は、指定されたサイズの読み取りまたは書き込みが完了するとテストを終了します(ランタイムで制限されない限り)。指定しない場合、fio は指定されたファイルまたはデバイスの全サイズを使用します。パーセント (1~100) で指定することも可能です。たとえば、size=20% はファイルまたはデバイスの総サイズの 20% を使用します。

numjobs

並行スレッド数です。デフォルト値:1。

runtime

テスト持続時間(秒単位)です。

指定しない場合、テストは size で指定されたファイルが bs で指定されたブロックサイズで完全に読み取られるか書き込まれるまで実行されます。

group_reporting

結果の表示モードです。

指定すると、結果はタスクごとではなくプロセスごとに集計されます。

filename

テスト対象パス(デバイス名またはファイルパス)です。本トピックでは、ファイルシステムのない生ディスクを対象としています。/dev/your_device を実際のデバイスパスに置き換えてください。

name

テスト名です。必要に応じて指定します。前述の例では、Rand_Write_Testing が使用されています。

完全なパラメーターのリファレンスについては、「fio(1) - Linux man page」をご参照ください。