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

Elastic Compute Service:Elastic Block Storage のパフォーマンスのテスト

最終更新日:Jan 07, 2026

Elastic Block Storage のパフォーマンスをテストすることで、ストレージデバイスの性能を理解し、最適なパフォーマンスが得られるように最適化できます。raw ディスクをテストすると、そのパフォーマンスを現実的に測定できます。この Topic では、オープンソースツール FIO を Linux システムで使用して、1 秒あたりの I/O 操作 (IOPS)、スループット、レイテンシなど、raw ディスクの主要なパフォーマンスメトリックをテストする方法について説明します。

説明

FIO (Flexible I/O Tester) は、強力なオープンソースの I/O パフォーマンステストツールです。これを使用して、ストレージデバイスでランダムおよびシーケンシャルの読み取り/書き込みなどの負荷テストを実行できます。

操作手順

重要
  • raw ディスクをテストすると、そのパフォーマンスを最も現実的に測定できます。ただし、パーティション、ファイルシステム、またはその他のデータを含むデバイスで FIO を使用して直接ストレステストを実行すると、ファイルシステムのエラーやデータ損失が発生する可能性があります。テストを開始する前に、スナップショットを作成してデータをバックアップしてください。詳細については、「スナップショットの作成」をご参照ください。

  • データ損失を防ぐため、システムディスクやデータを含むデータディスクはテストしないでください。ストレージのパフォーマンスは、新しく、初期化されておらず、空のデータディスクでテストしてください。

  • パフォーマンスのテスト結果はステージング環境のものであり、参考用です。本番環境では、ディスクのパフォーマンスはネットワーク環境や同時アクセスなどの要因によって異なる場合があります。

  • テスト完了後、新しいディスクを次のように管理します。

この Topic では、Alibaba Cloud Linux 3.2104 LTS 64 ビットのパブリックイメージを例として使用します。手順はご利用の環境によって異なる場合があります。

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

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

  2. 次のコマンドを実行して、Elastic Block Storage デバイスのデバイス名を取得します。

    sudo fdisk -lu

    截屏2024-12-05 09上の図は、インスタンスに 3 つの Elastic Block Storage デバイスがあることを示しています:システムディスク /dev/vda、およびデータディスク /dev/vdb/dev/vdc です。

  3. 次のコマンドを実行して、Elastic Block Storage デバイス上のパーティションとファイルシステムを確認します。

    sudo blkid

    截屏2024-12-05 09上の図は、Elastic Block Storage デバイス /dev/vda/dev/vdb にパーティションとファイルシステムがあることを示しています。コマンドの出力には /dev/vdc に関する情報が含まれていないため、パーティションやファイルシステムがないことがわかります。

    警告

    パーティション、ファイルシステム、またはその他のデータを含むデバイスで FIO を使用して直接ストレステストを実行すると、ファイルシステムのエラーやデータ損失が発生する可能性があります。データディスクにパーティションとファイルシステムがある場合は、テスト用に新しく空のデータディスクを作成してください:

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

    2. テスト完了後、インスタンスをリリースできます。詳細については、「インスタンスのリリース」をご参照ください。

  4. Elastic Block Storage デバイスのパフォーマンスをテストする前に、データ損失を防ぐためにデータをバックアップしてください。詳細については、「スナップショットの作成」をご参照ください。

    説明

    スナップショットは有料サービスです。詳細については、「スナップショットの課金」をご参照ください。

  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 を実行する ECS インスタンスを使用している場合は、まずソースアドレスを切り替える必要があります。詳細については、「EOL 後のオペレーティングシステムのソースアドレスの切り替え」をご参照ください。

    sudo apt-get update
    sudo apt-get install libaio* fio -y
  6. パスを変更します:

    cd /tmp
  7. パフォーマンスのテストコマンドを実行します。詳細については、次のセクションをご参照ください:

  8. テスト結果を分析します。値はディスクによって異なります。次の図の値は参考用です。

  • IOPS の結果については、次の図に示すように IOPS=*** の値を確認してください: 截屏2024-11-19 11

  • スループットの結果については、次の図に示すように BW=*** の値を確認してください: 截屏2024-11-19 11

  • レイテンシの結果については、次の図に示すように lat (usec) の値を確認してください: 截屏2024-11-19 11

ディスクのパフォーマンスのテストコマンド

警告

パーティション、ファイルシステム、またはその他のデータを含むデバイスで FIO を使用して直接ストレステストを実行すると、ファイルシステムのエラーやデータ損失が発生する可能性があります。データディスクにパーティションとファイルシステムがある場合は、テスト用に新しく空のデータディスクを作成してください:

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

  2. テスト完了後:

次のサンプルコマンドのパラメーター値は参考用です。/dev/your_device を、ステップ 2 で取得したテスト対象の Elastic Block Storage デバイスの名前に置き換えてください。たとえば、テストするディスクのデバイス名が /dev/vdb の場合、サンプルコマンドの /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. ローカルディスクはインスタンスと一緒にのみ作成できます。ローカルディスクをテストするには、同じ構成の新しいインスタンスを作成します。詳細については、「ウィザードを使用したインスタンスの作成」をご参照ください。

  2. テスト完了後、インスタンスが不要になった場合はリリースしてください。詳細については、「インスタンスのリリース」をご参照ください。

次のテストコマンドは、NVMe SSD ローカルディスクおよび SATA HDD ローカルディスクに適用されます。次のサンプルコマンドのパラメーター値は参考用です。/dev/your_device を、ステップ 2 で取得したテスト対象のローカルディスクの名前に置き換えてください。たとえば、テストするローカルディスクのデバイス名が /dev/vdb の場合、サンプルコマンドの /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 を使用しません。

iodepth

テストの I/O キュー深度です。たとえば、-iodepth=128 は、キュー内の I/O リクエストの最大数が 128 であることを指定します。

rw

テストの読み取りおよび書き込みポリシーです。このパラメーターには、次のいずれかの値を設定できます:

  • randwrite:ランダム書き込み

  • randread:ランダム読み取り

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

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

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

ioengine

FIO がテストに使用する I/O エンジンです。ほとんどのアプリケーションシナリオに適しているため、libaio を選択することを推奨します。その他のオプションの詳細については、FIO の公式ドキュメントをご参照ください。

bs

各 I/O ユニットのブロックサイズです。デフォルト値は 4 KiB です。読み取りと書き込みの操作に、read,write の形式で個別の値を指定できます。値が空のままの場合、デフォルト値が使用されます。

size

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

FIO は指定されたファイルサイズを読み書きした後、runtime などの他のオプションによって制限されない限り、テストを停止します。このパラメーターを指定しない場合、FIO は指定されたファイルまたはデバイスのフルサイズを使用します。サイズを 1 から 100 までのパーセンテージで指定することもできます。たとえば、size を 20% に設定すると、FIO は指定されたファイルまたはデバイスのスペースの 20% を使用します。

numjobs

テストの同時スレッド数です。デフォルト値は 1 です。

runtime

テストの期間です。

このパラメーターを指定しない場合、FIO は size パラメーターで指定されたサイズのファイルを bs パラメーターで指定されたサイズのブロックで読み書きし終えるまで実行を続けます。

group_reporting

テスト結果の表示モードです。

このパラメーターを指定すると、結果は各タスクごとではなく、各プロセスの集計統計を表示します。

filename

テスト対象のオブジェクトのパスです。パスはディスクのデバイス名またはファイルパスにすることができます。この Topic では、FIO テストはファイルシステムのないディスク全体 (raw ディスク) で実行されます。他のディスク上のデータが破損するのを防ぐため、サンプルパスは /dev/your_device となっています。実際のパスに置き換えてください。

name

テストタスクの名前です。任意の名前に設定できます。たとえば、Rand_Write_Testing です。

パラメーターの詳細については、FIO man ページをご参照ください。