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

Elastic Compute Service:ブロックストレージデバイスのパフォーマンスをテストする

最終更新日:Nov 09, 2025

ブロックストレージのパフォーマンスをテストすることで、ストレージデバイスの機能を理解し、パフォーマンスを最適化できます。Raw ディスクをテストすると、ブロックストレージのパフォーマンスを正確に測定できます。このトピックでは、オープンソースツールである Flexible I/O Tester (FIO) を Linux システムで使用して、IOPS、スループット、レイテンシーなどの Raw ディスクの主要なパフォーマンスメトリックをテストする方法について説明します。

説明

FIO は、ストレージデバイスでランダムおよびシーケンシャルの読み取り/書き込み操作などの負荷テストを実行するために使用できる、強力なオープンソースの I/O パフォーマンステストツールです。

プロシージャ

重要
  • Raw ディスクをテストすると、ブロックストレージのパフォーマンスを正確に測定できます。ただし、ブロックストレージデバイスにパーティション、ファイルシステム、またはその他のデータが含まれている場合、FIO を使用してストレステストを実行すると、ファイルシステムの例外やデータ損失が発生する可能性があります。テストを開始する前に、スナップショットを作成してデータをバックアップしてください。詳細については、「スナップショットの作成」をご参照ください。

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

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

  • テストが完了したら、新しいディスクを次のように管理します:

このトピックでは、Alibaba Cloud Linux 3.2104 LTS 64 ビットのパブリックイメージを例として使用します。プロシージャは、お使いの環境によって異なる場合があります。

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

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

  2. 次のコマンドを実行して、ブロックストレージデバイスのデバイス名をクエリします。

    sudo fdisk -lu

    Screenshot 2024-12-05 09上の図は、インスタンスに 3 つのブロックストレージデバイス、つまりシステムディスク /dev/vda と 2 つのデータディスク /dev/vdb および /dev/vdc があることを示しています。

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

    sudo blkid

    Screenshot 2024-12-05 09上の図に示すように、ブロックストレージデバイス /dev/vda/dev/vdb にはパーティションとファイルシステムがあります。出力には /dev/vdc に関する情報が含まれていないため、このデバイスにはパーティションやファイルシステムがないことを示しています。

    警告

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

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

    2. テストが完了したら、必要に応じてディスクをリリースします。詳細については、「インスタンスのリリース」をご参照ください。

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

    説明

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

  5. libaio ライブラリと FIO ツールをインストールするには、次のいずれかのコマンドを実行します。お使いのオペレーティングシステムに対応するコマンドを選択してください。

    Alibaba Cloud Linux 2、Alibaba Cloud Linux 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 後の CentOS または Debian のリポジトリアドレスの切り替え」をご参照ください。

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

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

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

  • IOPS テスト結果については、次の図に示すように IOPS=*** の値を見つけます。 Screenshot 2024-11-19 11

  • スループットテスト結果については、次の図に示すように BW=*** の値を見つけます:Screenshot 2024-11-19 11

  • レイテンシーテスト結果については、次の図に示すように lat (usec) の値を見つけます。Screenshot 2024-11-19 11

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

警告

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

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

  2. テストが完了したら:

サンプルコマンドのパラメーター値は参考用です。コマンドで、/dev/your_device を、ステップ 2 で取得したテスト対象のブロックストレージデバイスの名前に置き換えます。たとえば、テストするディスクのデバイス名が /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 は、FIO コントロールリクエストに対して並行して実行できる I/O 操作の最大数が 128 であることを示します。

rw

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

  • randwrite: ランダム書き込み。

  • randread: ランダム読み取り。

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

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

  • randrw: ランダム読み取りと書き込みの混合。

ioengine

テストに使用する I/O エンジン。`libaio` は、日常のアプリケーションパターンをよりよく反映するため、通常選択されます。その他のオプションの詳細については、公式の FIO ドキュメントをご参照ください。

bs

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

size

テストファイルの合計サイズ。

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

numjobs

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

runtime

テストの期間。

このパラメーターを指定しない場合、FIO は size で指定されたブロックサイズを使用して、bs で指定された合計ファイルサイズの読み取りまたは書き込みが完了するまで実行されます。

group_reporting

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

このパラメーターを指定すると、結果は各タスクの統計を表示する代わりに、各プロセスの統計を集計します。

filename

テストするオブジェクトのパス。パスは、ディスクのデバイス名またはファイルアドレスにすることができます。このトピックでは、fio のテストオブジェクトは、ファイルシステムを持たないディスク全体 (Raw ディスク) です。他のディスク上のデータが破損するのを防ぐために、/dev/your_device を実際のパスに置き換えてください。

name

テストの名前。このパラメーターは必要に応じて指定できます。例: Rand_Write_Testing

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