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

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

最終更新日:Dec 24, 2024

ブロックストレージデバイスのパフォーマンスをテストして、ブロックストレージデバイスの機能に精通し、使用するブロックストレージデバイスを最適化および調整して、最適なパフォーマンスを確保できます。 rawディスクでのテストは、実ブロックストレージのパフォーマンスを得るのに役立ちます。 このトピックでは、Linux Elastic Compute Service (ECS) インスタンスでフレキシブルI/Oテスター (fio) を使用して、IOPS、スループット (データ伝送速度) 、レイテンシ (応答時間) など、インスタンスに接続されているrawディスクの主要なパフォーマンスメトリックを測定する方法について説明します。

説明

fioはオープンソースの強力なI/Oパフォーマンスベンチマークツールで、ランダムな読み書き操作やシーケンシャルな読み書き操作など、ブロックストレージデバイスのパフォーマンス指標をテストできます。

手順

重要
  • rawディスクでのテストは、実ブロックストレージのパフォーマンスを得るのに役立ちます。 ブロックストレージデバイスにパーティション、ファイルシステム、およびデータが含まれている場合、fioツールを直接使用すると、ファイルシステムで例外が発生し、データが失われる可能性があります。 上記の問題を防ぐために、fioツールを使用してデバイスをテストする前に、テストするブロックストレージデバイスのスナップショットを作成してディスクデータをバックアップすることをお勧めします。 詳細については「スナップショットの作成」をご参照ください。

  • データの損失を防ぐために、オペレーティングシステムが存在するシステムディスクまたはデータを含むデータディスクをテストオブジェクトとして使用しないことをお勧めします。 fioツールを使用して、新しい空のデータディスクのパフォーマンスをテストすることをお勧めします。

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

次のセクションの例では、Alibaba Cloud Linux 3.2104 LTS 64ビットパブリックイメージが使用されています。 操作は、インスタンスのイメージによって異なる場合があります。

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

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

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

    sudo fdisk -lu

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

  3. 次のコマンドを実行して、パーティションとファイルシステムがブロックストレージデバイスに存在するかどうかを照会します。

    sudo blkid

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

    警告

    テストオブジェクトにパーティション、ファイルシステム、およびデータが含まれている場合、fioツールを直接使用すると、ファイルシステムで例外が発生し、データが失われる可能性があります。 データディスクにパーティションとファイルシステムがある場合は、空のデータディスクを作成し、新しいディスクをテストすることをお勧めします。

    • データディスクと同じ仕様の従量課金ディスクを作成し、テスト用に新しいディスクをインスタンスに接続できます。 詳細については、「空のデータディスクの作成」をご参照ください。

    • テストが完了したら、ビジネス要件に基づいて従量課金ディスクをデタッチしてリリースできます。 詳細については、「データディスクのデタッチ」および「ディスクのリリース」をご参照ください。

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

    説明

    スナップショットに対して課金されます。 スナップショットの課金については、「スナップショット」をご参照ください。

  5. オペレーティングシステムに基づいて、次のいずれかのコマンドを実行してlibaioライブラリとfioツールをインストールします

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

    重要

    CentOS 6とCentOS 8は、寿命 (EOL) に達しました。 インスタンスがCentOS 6またはCentOS 8を実行している場合は、オペレーティングシステムのリポジトリアドレスを変更します。 詳細については、「」をご参照ください。CentOS 6リポジトリアドレスを変更するにはどうすればよいですか? CentOS 8リポジトリアドレスの変更

    sudo yum install libaio libaio-devel fio -y

    Debian 9以降、またはUbuntu 14以降

    重要

    Debian9とDebian10はEOLに到達しました。 インスタンスがDebian 9またはDebian 10を実行している場合は、オペレーティングシステムのリポジトリアドレスを変更します。 詳細については、「」をご参照ください。Debian 9またはDebian 10リポジトリのアドレスを変更するにはどうすればよいですか。

    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

クラウドディスクのパフォーマンスのテストに使用するコマンド

説明

次のサンプルコマンドのパラメーター値は参照用です。 /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パフォーマンスのテスト」をご参照ください。

.

ローカルディスクのパフォーマンステストに使用するコマンド

次のサンプルコマンドは、ローカルのNVMe (Non-Volatile Memory Express) SSDおよびローカルのSATA (Serial Advanced Technology Attachment) 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コマンドのパラメーターを示します。

パラメーター

説明

直接

直接I/Oを使用するかどうかを指定します。 デフォルト値:1 有効な値:

  • 1: 直接I/Oを使用し、I/Oバッファを無視し、データを直接書き込みます。

  • 0: 直接I/Oを使用しない、I/Oバッファを無視する、または直接データを書き込む。

iodepth

テスト中のI/Oキューの深さ。 たとえば、-iodepthパラメーターを128に設定した場合、fio制御要求に対して並行して実行できるI/O操作の最大数は128になります。

rw

テスト中に使用される読み取り /書き込みポリシー。 有効な値:

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

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

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

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

  • randrw: ランダムな読み取りと書き込み

ioengine

fioツールがディスクのパフォーマンスをテストするために使用するI/Oエンジン。 ほとんどの場合、libaioが使用されます。 その他の利用可能なI/Oエンジンについては、fioのドキュメントを参照してください。

bs

I/Oユニットのブロックサイズ。 デフォルト値: 4 k。4 KiBを示します。 読み取りと書き込みの値は、<読み取りの値 >,< 書き込みの値> 形式で指定できます。 値を指定しない場合は、デフォルト値が使用されます。

size

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

fioツールは、実行時などの特定の要因によって制限されない限り、指定されたサイズのファイルが読み書きされた後にのみテストを終了します。 このパラメーターを指定しない場合、fioツールは指定されたすべてのファイルまたはデバイスのサイズを使用します。 有効な値は、1〜100の範囲のパーセンテージであってもよい。 たとえば、sizeパラメーターが20% に設定されている場合、fioツールはすべてのファイルまたはデバイスのサイズの20% を使用します。

numjobs

テスト中に使用される同時スレッドの数。 デフォルト値:1

runtime

テストの期間。fioツールが実行される期間を示します。

このパラメーターを指定しない場合、sizeパラメーターで指定されたサイズのファイルがbsパラメーターで指定されたブロックサイズで読み書きされるまでテストは終了しません。

group_reporting

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

このパラメーターを指定すると、タスクごとの統計ではなく、プロセスごとの統計が表示されます。

filename

テストするオブジェクトのパス。 パスには、ディスクのデバイス名またはファイルアドレスを指定できます。 このトピックでは、fioツールのテストオブジェクトは、ファイルシステムを持たないディスク全体 (生のディスク) です。 他のディスクのデータが破損しないようにするには、上記のコマンドの /dev/your_deviceを実際のパスに置き換えます。

name

テストの名前。 このパラメーターは、ビジネス要件に基づいて指定できます。 上記の例では、Rand_Write_Testingが使用されています。

パラメーターの詳細については、「fio (1) - Linux man page」をご参照ください。