Amazon EBS ボリュームの初期化
空の EBS ボリュームは、作成されるとすぐに最大のパフォーマンスを発揮し、初期化 (以前は事前ウォーミングと呼ばれました) を必要としません。
スナップショットから作成されたボリュームの場合、アクセスする前に、ストレージブロックが Amazon S3 からプルダウンされてボリュームに書き込こまれる必要があります。この事前処理には一定の時間がかかるため、各ブロックへの初回アクセス時には、I/O 操作のレイテンシーが著しく増加する可能性があります。ボリュームのパフォーマンスは、すべてのブロックがダウンロードされてボリュームに書き込まれると正常値に達します。
スナップショットから作成された Provisioned IOPS SSD ボリュームを初期化している間は、ボリュームのパフォーマンスが想定レベルの 50% を下回る場合があります。このため、ボリュームは [I/O Performance (I/O 性能)] ステータスチェックで warning
状態が表示されます。これは想定の動作です。初期化中の Provisioned IOPS SSD ボリュームの warning
状態は無視してかまいません。詳細については、「EBS ボリュームステータスチェック」を参照してください。
ほとんどのアプリケーションにとって、ボリュームの存続期間全体で初期化コストを割り当てることは、許容範囲内です。本番環境におけるこの初期パフォーマンスヒットは、以下のいずれかの方法で回避できます。
-
ボリューム全体の即時初期化を強制する。詳細については、「Linux での Amazon EBS ボリュームの初期化」、「」を参照してください。
-
スナップショットの高速スナップショット復元を有効化して、スナップショットから作成される EBS ボリュームが作成時に完全に初期化され、各ボリュームのあらゆるプロビジョンドパフォーマンスが即座に発揮されるようにします。詳細については、「Amazon EBS 高速スナップショット復元」を参照してください。
Linux での Amazon EBS ボリュームの初期化
空の EBS ボリュームは、利用可能になるとすぐに最大のパフォーマンスを発揮し、初期化 (以前は事前ウォーミングと呼ばれました) を必要としません。スナップショットから作成されたボリュームの場合、ボリュームのすべてのブロックから読み取りを行うには、dd ユーティリティまたは fio ユーティリティを使用します。ボリュームのすべてのデータが保持されます。
Windows での Amazon EBS ボリュームの初期化については、「Windows での Amazon EBS ボリュームの初期化」を参照してください。
Linux で、スナップショットから作成されたボリュームを初期化するには
-
新しく復元されたボリュームを Linux インスタンスにアタッチします。
-
インスタンスのブロックデバイスを一覧表示するには、lsblk コマンドを使用します。
[ec2-user ~]$
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
列の下にリストされているパスがないため)。 -
デバイスのすべてのブロックを読み取るには、dd ユーティリティまたは fio ユーティリティを使用します。Linux システムにデフォルトでインストールされているのは dd コマンドですが、マルチスレッドの読み取りが可能な fio の方が、処理速度が大幅に速くなります。
注記 このステップは、使用している EC2 インスタンスの帯域幅、ボリュームに対してプロビジョニングされている IOPS、そしてボリュームのサイズに応じて、数分から数時間かかることがあります。
[dd]
if
(入力ファイル) パラメータは、初期化するドライブに設定します。of
(出力ファイル) パラメータは、Linux ヌル仮想デバイス/dev/null
に設定する必要があります。bs
パラメータは、読み取り操作のブロックサイズに設定します。最適なパフォーマンスを得るには、この値を 1 MB に設定します。重要 dd を誤って使用すると、ボリュームのデータが失われる場合があります。以下のコマンド例に正確に従ってください。
if=/dev/
パラメータのみ、読み出しているデバイスの名前によって異なります。xvdf
[ec2-user ~]$
sudo dd if=/dev/
xvdf
of=/dev/null bs=1M[fio] システムに fio がインストールされている場合、ボリュームを初期化するには次のコマンドを使用します。
--filename
(入力ファイル) パラメータは、初期化するドライブに設定します。[ec2-user ~]$
sudo fio --filename=/dev/
xvdf
--rw=read --bs=128k --iodepth=32 --ioengine=libaio --direct=1 --name=volume-initializeAmazon Linux に fio をインストールするには、次のコマンドを使用します。
sudo yum install -y fio
Ubuntu に fio インストールするには、次のコマンドを使用します。
sudo apt-get install -y fio
この操作が終了すると、読み取り操作のレポートが表示されます。これでボリュームを使用する準備ができました。詳細については、「Linux で Amazon EBS ボリュームを使用できるようにする」を参照してください。