Amazon EBS ボリュームの初期化 - Amazon EBS

Amazon EBS ボリュームの初期化

EBS スナップショットまたは別の EBS ボリューム (ボリュームコピー) から Amazon EBS ボリュームを作成する場合、データブロックにアクセスする前に、データブロックをボリュームに書き込む必要があります。スナップショットから作成されたボリュームの場合は、データブロックを Amazon S3 から新しいボリュームにダウンロードする必要があります。ボリュームコピーの場合は、データブロックをソースボリュームからボリュームコピーにコピーする必要があります。このプロセスはボリューム初期化と呼ばれます。この間、初期化されるボリュームでは、I/O レイテンシーが増加し、パフォーマンスが低下する可能性があります。フルボリュームのパフォーマンスは、すべてのブロックがダウンロードされてボリュームに書き込まれた場合にのみ達成されます。

注記

空のボリュームは、作成直後に最大パフォーマンスを実現し、初期化は必要ありません。

デフォルトのボリューム初期化レートは初期化プロセス全体で変動するため、完了時間が予測できなくなる可能性があります。ボリューム初期化に関連するパフォーマンスへの影響を最小限に抑えるため、次のオプションを使用できます。

注記

ボリューム初期化レートと高速スナップショット復元は、ボリュームコピーではサポートされていません。詳細については、「Initialization」を参照してください。

ボリューム初期化に Amazon EBS プロビジョンドレートを使用する

スナップショットから Amazon EBS ボリュームを作成する場合、オプションで、100~300 MiB/秒の範囲のボリューム初期化の Amazon EBS プロビジョンドレート (ボリューム初期化レート) を指定できます。ボリューム初期化レートを指定すると、スナップショットブロックは Amazon S3 からダウンロードされ、作成後に指定されたレートでボリュームに書き込まれます。これにより、予測可能な時間内に完全に初期化され、完全にパフォーマンスを発揮するボリュームを作成できます。

ボリューム初期化レートは、複数のボリュームを同時に作成していて、すべてのボリュームを予測可能な時間内に初期化する必要がある場合に特に便利です。

注記

ボリューム初期化の Amazon EBS プロビジョンドレートは、すべての Amazon EBS ボリュームタイプ、および Amazon EC2 Mac インスタンスを含むすべての Amazon EC2 インスタンスタイプでサポートされています。

ボリューム初期化レートは以下の場合に指定できます。

  • 個々のボリューム作成リクエストの場合

  • インスタンス起動リクエストの EBS ボリュームブロックデバイスマッピングの場合

  • 起動テンプレートの EBS ボリュームブロックデバイスマッピングの場合

  • ルートボリューム置換タスクによって作成された EBS ボリュームの場合

  • Amazon EKS クラスター (EBS CSI ドライバーによって作成) および Amazon ECS クラスターの EBS ボリュームの場合

仕組み

ボリューム初期化レートでボリュームを作成すると、スナップショットブロックは指定したレートで Amazon S3 からボリュームにダウンロードされます。

ボリューム初期化にかかる時間は、以下によって異なります。

  • スナップショットのデータサイズ (作成されるボリュームのサイズではありません)。

    ヒント

    スナップショットのデータサイズを確認するには、describe-snapshots コマンド出力の FullSnapshotSizeInBytes フィールド、またはコンソールの [フルスナップショットサイズ] フィールドを確認します。

  • 指定したボリューム初期化レート

例えば、10 GiB のデータを持つスナップショットを使用して 20 GiB ボリュームを作成し、300 MiB/秒のボリューム初期化レートを指定すると、ボリュームは約 34.1 秒 (10 GiB / 300 MiB/秒 = 34.1 秒) で完全に初期化されます。同様に、同じスナップショットとボリューム初期化レートで同時に 10 個のボリュームを作成すると、10 個のボリュームすべてが 34.1 秒で完全に初期化されます。

考慮事項

  • ボリューム初期化レートは 100~300 MiB/秒の間で指定できます。

  • ボリューム初期化レートを指定する場合、料金と完了時間は、スナップショットデータのサイズ (ボリュームのサイズではありません) と指定したレートによって決まります。詳細については、「請求」を参照してください。

  • Amazon EBS は、お客様が 99% の時間用に指定したボリューム初期化レートの 10% 以内の平均レートを提供します。

  • ボリューム初期化レートを指定し、高速スナップショット復元が有効になっているスナップショットを使用した場合、Amazon EBS では高速スナップショット復元ではなく指定されたレートが使用されます。高速スナップショット復元を使用したい場合は、ボリューム初期化レートを指定しないでください。

  • 容量の制約またはクォータの超過により、Amazon EBS が指定されたボリューム初期化レートでボリュームを初期化できない場合、リクエストは失敗します。

  • AWS Outposts、ローカルゾーン、または Wavelength Zone で作成されたボリュームのボリューム初期化レートを指定することはできません。

クォータ

同時ボリューム作成リクエスト間でリクエストできる累積ボリューム初期化レートには、5,000 MiB/秒の制限があります。例えば、100 MiB/秒のレートで 50 件の同時ボリューム作成リクエスト (50 件の同時リクエスト x 100 MiB/秒のレート)、または 200 MiB/秒のレートで 25 件の同時リクエスト (25 件の同時リクエスト x 200 MiB/秒のレート) を実行できます。この制限はリージョンごとに適用されます。リクエストがこの制限を超えると、リクエストは失敗します。その場合は進行中のリクエストの一部が完了するまで待つか、クォータの引き上げをリクエストします。詳細については、「Amazon EBS のクォータ」を参照してください。

請求

ボリューム初期化レートでボリュームを作成すると、スナップショットデータの GiB あたりのレート、指定した初期化レートの MiB あたりのレートで請求されます。レートはリージョンによって異なります。詳細については、Amazon EBS の料金表を参照してください。

ボリュームのサイズではなく、スナップショットデータのサイズに基づいて請求されます。例えば、サイズが 100 GiB のボリュームのスナップショットを作成したものの、データ量が 50 GiB しかない場合、スナップショットのボリュームサイズが 100 GiB であっても、スナップショットのデータサイズは 50 GiB となります。そのスナップショットを使用してボリュームを作成し、ボリューム初期化レートを指定する場合、請求は 50 GiB のスナップショットデータに基づいて行われます。

ヒント

スナップショットのデータサイズを確認するには、describe-snapshots コマンド出力の FullSnapshotSizeInBytes フィールド、またはコンソールの [フルスナップショットサイズ] フィールドを確認します。

計算式は次のとおりです。

rate for Region x snapshot data size x volume initialization rate

ボリュームが active 状態になるとすぐに、全額が請求されます。失敗したリクエストについては請求されません。

ボリューム初期化が完了する前にボリュームを削除しても、リクエストしたボリューム初期化レートに対して請求されます。

高速スナップショット復元が有効になっているスナップショットを使用する

高速スナップショット復元が有効になっているスナップショットからボリュームを作成すると、ボリュームは作成時に完全に初期化され、すぐに完全なパフォーマンスを提供します。高速スナップショット復元の使用方法の詳細については、「Amazon EBS 高速スナップショット復元」を参照してください。

作成後にボリュームを手動で初期化する

作成後に Amazon EBS ボリュームを手動で初期化することで、ボリューム初期化によるパフォーマンスへの影響を最小限に抑えることができます。

次の手順を使用して、作成後に Amazon EBS ボリュームを手動で初期化できます。

重要

スナップショットから作成された Provisioned IOPS SSD ボリュームを初期化している間は、ボリュームのパフォーマンスが想定レベルの 50% を下回る場合があります。このため、ボリュームは [I/O Performance (I/O 性能)] ステータスチェックで warning 状態が表示されます。これは想定の動作です。初期化中の Provisioned IOPS SSD ボリュームの warning 状態は無視してかまいません。詳細については、「Amazon EBS ボリュームステータスチェック」を参照してください。

Linux で、スナップショットから作成されたボリュームを初期化するには
  1. 新しく復元されたボリュームを Linux インスタンスにアタッチします。

  2. インスタンスのブロックデバイスを一覧表示するには、lsblk コマンドを使用します。

    $ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT xvdf 202:80 0 30G 0 disk xvda1 202:1 0 8G 0 disk /

    ここでは、新しいボリューム/dev/xvdf がアタッチされていますが、マウントされていないことがわかります (MOUNTPOINT 列の下にリストされているパスがないため)。

  3. デバイスのすべてのブロックを読み取るには、dd ユーティリティまたは fio ユーティリティを使用します。Linux システムにデフォルトでインストールされているのは dd コマンドですが、マルチスレッドの読み取りが可能な fio の方が、処理速度が大幅に速くなります。

    注記

    このステップは、使用している EC2 インスタンスの帯域幅、ボリュームに対してプロビジョニングされている IOPS、そしてボリュームのサイズに応じて、数分から数時間かかることがあります。

    [dd] if (入力ファイル) パラメータは、初期化するドライブに設定します。of (出力ファイル) パラメータは、Linux ヌル仮想デバイス /dev/null に設定する必要があります。bs パラメータは、読み取り操作のブロックサイズに設定します。最適なパフォーマンスを得るには、この値を 1 MB に設定します。

    重要

    dd を誤って使用すると、ボリュームのデータが失われる場合があります。以下のコマンド例に正確に従ってください。if=/dev/xvdf パラメータのみ、読み出しているデバイスの名前によって異なります。

    $ sudo dd if=/dev/xvdf of=/dev/null bs=1M

    [fio] システムに fio がインストールされている場合、ボリュームを初期化するには次のコマンドを使用します。--filename (入力ファイル) パラメータは、初期化するドライブに設定します。

    $ sudo fio --filename=/dev/xvdf --rw=read --bs=1M --iodepth=32 --ioengine=libaio --direct=1 --name=volume-initialize

    Amazon Linux に fio をインストールするには、次のコマンドを使用します。

    sudo yum install -y fio

    Ubuntu に fio インストールするには、次のコマンドを使用します。

    sudo apt-get install -y fio

    この操作が終了すると、読み取り操作のレポートが表示されます。これでボリュームを使用する準備ができました。詳細については、「Amazon EBS ボリュームを使用できるようにする」を参照してください。

どちらのツールを使用する前も、次のようにシステム上のディスクについての情報を収集してください。

システムディスクに関する情報を収集するには
  1. システムで使用可能なディスクを一覧表示するには、wmic コマンドを使用します。

    wmic diskdrive get size,deviceid

    出力例を次に示します。

    DeviceID Size \\.\PHYSICALDRIVE2 80517265920 \\.\PHYSICALDRIVE1 80517265920 \\.\PHYSICALDRIVE0 128849011200 \\.\PHYSICALDRIVE3 107372805120
  2. dd または fio を使用して、初期化するディスクを識別します。C: ドライブは、\\.\PHYSICALDRIVE0 にあります。使用するドライブ番号がはっきりしない場合は、diskmgmt.msc ユーティリティを使用して、ドライブ文字とディスクドライブ番号を比較できます。

Use the dd utility

dd をインストールおよび使用してボリュームを初期化するには、次の手順を実行します。

重要な考慮事項
  • ボリュームの初期化には、使用している EC2 インスタンスの帯域幅、ボリュームに対してプロビジョニングされている IOPS、そしてボリュームのサイズに応じて、数分から数時間かかることがあります。

  • dd を誤って使用すると、ボリュームのデータが失われる場合があります。この手順を正確に実行してください。

Windows 向け dd をインストールするには

Windows 用 dd プログラムは、Linux や Unix システムで共通して使用できる dd プログラムと同様の環境を提供します。このプログラムを使用すると、スナップショットから作成された Amazon EBS ボリュームを初期化することができます。最新のベータバージョンでは、/dev/null 仮想デバイスをサポートしています。以前のバージョンをインストールする場合は、代わりに nul 仮想デバイスを使用できます。詳細なドキュメントは、http://www.chrysocome.net/dd から入手できます。

  1. Windows 用の最新バイナリバージョンの dd を、http://www.chrysocome.net/dd からダウンロードします。

  2. (オプション) 簡単に覚えられる場所に、コマンドラインユーティリティ用のフォルダを作成します (C:\bin など)。コマンドラインユーティリティ用にフォルダを既に指定した場合、次の手順を実行する代わりに、そのフォルダを使用できます。

  3. バイナリパッケージを解凍し、dd.exe ファイルをコマンドラインユーティリティのフォルダ (C:\bin など) にコピーします。

  4. どこからでもフォルダ内のプログラムを実行できるようにするため、Path 環境変数にコマンドラインユーティリティのフォルダを追加します。

    1. [スタート] を選択し、[PC] のコンテキスト (右クリック) メニューを開いて、[プロパティ] を選択します。

    2. [システムの詳細設定]、[環境変数] の順に選択します。

    3. [システム環境変数] で [Path] 変数を選択し、[編集] を選択します。

    4. [変数値] として、既存の値の最後に、セミコロンとコマンドラインユーティリティフォルダの場所 (;C:\bin\)) を追加します。

    5. [OK] をクリックして、[システム変数の編集] ウィンドウを閉じます。

  5. 新しいコマンドプロンプトウィンドウを開きます。前の手順を行っても、現在開いているコマンドプロンプトウィンドウの環境変数は更新されません。前の手順を完了した時点で開くコマンドプロンプトウィンドウが更新されます。

Windows 用 dd を使ってボリュームを初期化するには

指定したデバイスのすべてのブロックの読み取り (および /dev/null 仮想デバイスへの出力の送信) を実行するには、次のコマンドを実行します。このコマンドは、既存のデータを安全に初期化します。

dd if=\\.\PHYSICALDRIVEn of=/dev/null bs=1M --progress --size

dd がボリュームの末尾を超えて読み取りを行おうとすると、エラーが表示されることがあります。このエラーを無視しても問題ありません。

以前のバージョンの dd コマンドを使用した場合、そのコマンドは /dev/null デバイスをサポートしていません。代わりに、次のように nul デバイスを使用することができます。

dd if=\\.\PHYSICALDRIVEn of=nul bs=1M --progress --size
Use the fio utility

fio をインストールおよび使用してボリュームを初期化するには、次の手順を実行します。

Windows 用 fio をインストールするには

Windows 用 fio プログラムは、Linux や Unix システムで共通して使用できる fio プログラムと同様の環境を提供します。このプログラムを使用すると、スナップショットから作成された Amazon EBS ボリュームを初期化することができます。詳細については、https://github.com/axboe/fioを参照してください。

  1. fio MSI インストーラをダウンロードするには、最新リリースの [アセット] を展開して、MSI インストーラを選択します。

  2. のインストールfio

Windows 用 fio を使用してボリュームを初期化するには
  1. 次のようなコマンドを実行してボリュームを初期化します。

    fio --filename=\\.\PHYSICALDRIVEn --rw=read --bs=1M --iodepth=32 --direct=1 --name=volume-initialize
  2. この操作が終了すると、新規ボリュームを使用する準備が完了します。詳細については、「Amazon EBS ボリュームを使用できるようにする」を参照してください。