ec2 インスタンスに付属するエフェメラル ストレージを使用して、データベースを /mnt に保持しています。ec2 API ツールを使用してバックアップを作成するには、ボリューム ID が必要ですが、AWS コンソールでは、8 GB のルート ストレージのボリューム ID のみを見つけることができます。
一時ストレージのバックアップが必要な場合はどうすればよいですか? インスタンス ストレージをバックアップするための代替手段はありますか?
ec2 インスタンスに付属するエフェメラル ストレージを使用して、データベースを /mnt に保持しています。ec2 API ツールを使用してバックアップを作成するには、ボリューム ID が必要ですが、AWS コンソールでは、8 GB のルート ストレージのボリューム ID のみを見つけることができます。
一時ストレージのバックアップが必要な場合はどうすればよいですか? インスタンス ストレージをバックアップするための代替手段はありますか?
何よりもまず、Amazon EC2の一時的なストレージに永続的な価値のあるものを保存しないでください。エフェメラル ストレージの概念、 Amazon EC2 インスタンス ストレージとAmazon EBSのそれぞれの違い、およびデータの安全性とバックアップ要件に関する重要な意味についての誤解:
エフェメラル ストレージは、停止/開始サイクルで失われ、通常はなくなる可能性があるため、永続的な価値のあるものは絶対にそこに置きたくありません。つまり、スワップ ファイルのように、簡単に失ったり再構築したりできる一時的なデータのみをそこに置きます。または、計算中に使用される厳密に一時的なデータ。もちろん、たとえばそこに巨大なインデックスを保存することもできますが、何らかの理由 (インスタンスの再起動、ハードウェア障害など) でストレージがクリアされた後に、これらを再構築する準備をしておく必要があります。
これらの説明により、EBS ボリューム (つまり、EBS スナップショット) のみに適用されるメカニズムで一時ストレージ ボリュームをバックアップできない理由が明確になります。したがって、選択した通常のオペレーティング システム レベルのバックアップ ツールを使用して前者をバックアップできます。Duplicityは一般的な選択肢であり、オプションでAmazon S3を容易にします。
エフェメラル ストレージ (インスタンス ストレージ) は、そのままでは /tmp フォルダーのようなもので、再起動後にその内容が消えます。もちろん、エフェメラル ドライブの内容はソフト リブートでは破棄されませんが、インスタンスがいつ終了するかを現実的に制御または予測することはできないため、破棄されたかのように扱う必要があります。
これはすでに指摘されています。
私が指摘したいのは、AMI を適切に作成して構成すれば、実際のストレージ用に EBS ドライブも保持している限り、エフェメラル ストレージを使用して (読み取り) スループットを大幅に向上させることができるということです。
私が現在使用しているのは、bcache を備えた Linux (Ubuntu Tahr) インスタンスです。これは主に、bcache カーネルのサポートが比較的新しく (IIRC、bcache を使用した最初のものは 3.10 でした)、できるだけ新しいカーネルが必要であるためです。また、Tahr は Ubuntu の次の LTS バージョンであり、私のプロジェクトの立ち上げが近づいたときに最終版になります ;)
Bcache は、デフォルト設定では、EBS の永続性を提供しながら、一時ストレージの読み取り速度の恩恵を受けることができます: 高速キャッシュ デバイス (一時 SSD) を取得し、それを使用して低速デバイス (EBS) を高速化します。キャッシュデバイスを介した書き込み (つまり、一時キャッシュと EBS への同時書き込み)。
これは、インスタンスがクラッシュしたり停止したりした場合でも、キャッシュなしで EBS ボリュームを直接マウントし、EBS ボリュームのみを使用する場合と同じようにすべてのデータにアクセスできることを意味します。また、ワイプされたエフェメラル デバイスを再構成し、それらを EBS へのキャッシュとして再構成して、非常に高速な読み取りとシークを再び利用できるようにすることもできます。
私の特定のセットアップは、mdadm を使用してストライプモードで RAID された 2 つの EBS デバイスと、同じ方法で RAID された 2 つのエフェメラル SSD デバイスです。次に、エフェメラル配列をキャッシュとして使用し、EBS 配列を「バックアップ」デバイスとして使用して、それらを bcache で構成しました。EBS ドライブは任意のサイズにすることができ、いつでも拡張できます (EC2 では少し注意が必要です。現在の EBS ボリュームのスナップショットを作成し、そのスナップショットに基づいて新しいより大きなボリュームを作成する必要があるためです。サイズを変更することはできません)。既存の EBS ボリューム)。
もちろん、起動時にインスタンス内で実行されるスクリプトを作成して、エフェメラル ストレージを構成し、それを EBS バックアップ デバイスのキャッシュ デバイスとしてアタッチする必要があります。mdadmとbcacheを読んで試してみることをお勧めします。
記録として、Cassandra ストレス ツールを使用してテストしたところ、エフェメラル ドライブをストライピングするだけの場合よりも、エフェメラル ドライブで bcached された EBS ボリュームの方が優れた読み取りパフォーマンスが得られました。これは、非常に巧妙な bcache で使用されるアルゴリズムによるものです。
エフェメラル ドライブをキャッシュとして使用すると、ネットワーク トラフィックも削減され、EBS の I/O が削減され、月々の請求額が削減されるため、費用対効果が高くなります。
また、bcache が提供するさまざまな種類のキャッシュにも注意してください。
ソフトウェア RAID ミラーを構成できる場合は、EBS でバックアップされたディスクをインスタンスに接続し、ミラーを構成してから、レプリケーションが完了するまで待ちます。インスタンスを作成した後、この方法を使用して「一時的な」データを EBS に移動することに成功しました (シャットダウンして再起動したくありませんでした)。
EBS にデータを取得したら、EBS イメージでバックアップします。
この方法は、異なる同一のインスタンスで実行されているデータの複数のコピーがある場合に特にうまく機能しますが、そのうちの 1 つだけが EBS に永続化される必要があります (私の場合、Couchbase サーバーを使用して、CB データは一時的なドライブにありましたが、私は 1 つ持っていました)クラスター上のすべてのデータが最終的に EBS になるように、EBS にミラーリングされたインスタンスの数)。
ファイルレベルのバックアップ ソリューション (EBS スナップショットに基づくものではない) は、エフェメラル ストレージをバックアップできます。とはいえ、一時ストレージをいつ使用するかを検討し、それを永続データに使用する十分な理由を用意する必要があります。Cassandra などの特定のアプリケーションでは、これが推奨される構成です。その場合、バックアップ ソリューションはほとんどの場合、エフェメラル ストレージから、スナップショットが作成される EBS ボリュームまたは直接 S3 にデータをダンプします。場合によっては、レプリケーションを定義して、エフェメラル デバイス内のすべてのデータが EBS ボリュームにもレプリケートされるようにすることができます。