仮想マシンとバックアップ

仮想マシンとバックアップ

小さなファイル用のファイル サービスを実行している仮想マシン (centos) があります。バックアップの推奨方法は何ですか? 仮想マシンのディスク/ファイルを (仮想マシンの外部から) バックアップする必要がありますか、それとも仮想マシン内でバックアップ エージェントを実行して、仮想ディスク全体ではなくコンテンツをバックアップする必要がありますか?

答え1

TLDR: VM 内にバックアップ エージェントをインストールします。

VM の外部からディスク イメージをバックアップするのは確かに魅力的に思えます。特に、VM が複数ある場合は、各 VM を個別に構成してバックアップする必要なく、ホスト マシンにすべてのディスク イメージをバックアップするように指示するだけで完了します。

しかし、このアプローチの問題は、ホストマシンがVMのオペレーティングシステムが内部で何をしているかを知らないことです。ディスク書き込みが保留中か進行中かはわかりません。VMプロセス内部の書き込みキャッシュや出力バッファについても知りません。そのため、バックアップしたディスクイメージが一貫性のあるバックアップ時のイメージ。バックアップされたイメージ ファイルはほぼ確実に使用可能ですが、クリーンアップするにはまずファイル システムの修復を実行する必要がある可能性が高くなります。

外部からディスク全体のイメージ バックアップを行うことのもう 1 つの大きな欠点は、このようなバックアップが主にシステム全体の復元に役立つことです。失われた 1 つのファイルの先週木曜日のバージョンを復元するだけでよい場合、このバックアップはあまり適していません。木曜日のバックアップからイメージ全体を復元し、その後、他のツールを使用してイメージの 2 番目のコピーからその 1 つのファイルを抽出する必要があります。この方法では、VM 内からバックアップを行って目的の 1 つのファイルのみを復元できた場合よりも、はるかに多くの時間とスペースが必要になります。

また、これに関連して、フルイメージ バックアップは増分的に実行するのが (せいぜい) より困難であり、バックアップを実行するたびにイメージ全体の完全なコピーを作成する必要があるという点もあります。VM 内からコンテンツ ベースのバックアップを実行すると、定期的にフル バックアップを実行し、その間に変更されたファイルのみをバックアップできるため、同じ量のストレージ領域でより頻繁にバックアップを実行できます。

災害復旧の目的で VM 全体のイメージを作成する場合、または他の VM を作成するためのクローンのマスターとして使用する場合は、VM をシャットダウンしてディスク イメージ全体をコピーするのが良い方法です。ただし、実行中のシステムの定期的なバックアップを行うには適した方法ではありません。

答え2

TL;DR VMの外部からスナップショットを作成する

私が今まで見たVMホストソフトウェア(クラウドサービスやコンテナホストを含​​む)はすべてスナップショット機能を備えています。これは、実行中のシステムをバックアップするための推奨される方法です。スナップショットは、ある時点でのディスク全体の一貫性のあるアトミック コピーであることが保証されます。VM ホスト ソフトウェアには通常、スナップショットの前にファイル システムを静止させるゲスト OS ツールがありますが、夜間など書き込みがあまり行われないときにスナップショットを実行するのが常に最善です。ほとんどのシステムは、スナップショットの状態が保存されている間、短時間停止します。

スナップショットも通常は増分です。重複排除などの高度なスナップショット機能もあります。

システムがシャットダウンされている場合 (一時停止または中断されていない)、書き込みは行われず、すべてのデータがディスクに書き込まれていることがわかっているため、VM ファイルのコピーを作成するだけで済みます。

個々のファイルを復元する必要がある場合は、ディスクを復元し、別のシステムに接続してマウントするだけです。

ファイルシステム内のファイルのバックアップを実行すると、いくつかの問題が発生します。

バックアップはアトミックではないため、バックアップ中に書き込みが発生する可能性があるため、ファイルの整合性が保たれない可能性があります。たとえば、tar は、バックアップ中にファイルに書き込みがあったことを警告します。別の例として、ファイルがバックアップされたデータベースのコピーを信頼することは決してありません。データベース システムは不整合からの回復力があるかもしれませんが、そのリスクを負いたいですか? 関連するシステム ツールを使用して、別のオフサイト データベース バックアップを作成した方がよいでしょう。

もう1つの問題は、ファイルだけで起動可能なシステムを作るのは難しいということです。起動可能なシステムを作るには、ブートセクターやパーティションテーブルなど他のものも必要です。つまり、全く同じファイルの復元前にオペレーティング システムを再起動してください。起動できたとしても、信頼できるかどうかは非常に疑わしいでしょう。

関連情報