hidemium's blog

日々学んだことをアウトプットする。

スナップショット技術とVMwareのスナップショットとバックアップについて

コピーオンライト(Copy-On-Write)といったスナップショット技術とVMwareのスナップショットやバックアップについて整理をしてみたいと思います。

スナップショット技術

コピーオンライト(Copy-On-Write)スナップショット

CoWは、スナップショットデータ用に専用のストレージ領域が予約されます。

このストレージ領域にメタデータと元のデータブロックに変更が発生するたびに元データのコピーが作成されます。

ブロックを上書きする前に、その前の値を読み取って別の場所に書き込んでから、新しいデータを書き込む必要があり、書き込みごとに3つのIO操作(読み取り1回と書き込み2回)が使用されます。

このアプローチにはいくつか利点があり、新しいコピーが正常に書き込まれるまで、元のデータはそのまま残るため、データ破損のリスクが最小限に抑えられます。

リダイレクトオンライト (Redirect-on-Write) スナップショット

RoWは、更新時に元のデータをスナップショット領域にコピーはせずに、ブロックへの変更はブロックに関連図けられたポインタを別のブロックにリダイレクトし、そこにデータを書き込みます。

特定のスナップショットにアクセスしようとする場合、ブロック位置に対応するポインタを利用して、別の場所からブロックを取得します。

RoWでは、保護されたブロックを変更する際にIO操作がCoWに比べると書き込み1回に削減できます。

スプリットミラー スナップショット

スナップショットを作成中に同一のコピーを作成します。データコピー操作により、スナップショットの作成時に2倍のストレージ容量が消費され、時間がかかる場合があります。

バックグラウンドコピーを利用したCopy-On-Writeスナップショット

バックグラウンドコピーを利用したCopy-On-Writeでは、CoWの瞬時スナップショットデータを、バックグラウンドプロセスを利用して元の場所からスナップショット用ストレージにコピーする。これにより、元データのクローンまたはミラーが作成されます。

クラッシュコンシステントとアプリケーションコンシステント

スナップショットの整合性によって以下の種類があります。

  • クラッシュコンシステントは、仮想ディスクに既に書き込まれたデータのみを記録し、メモリ内のデータまたは保留中のI/O操作は含まれません。仮想マシンが正常なシャットダウンをせずに強制終了した状態と同じになります。
  • ファイルシステムコンシステントは、仮想ディスク上のデータに加えて、メモリ内のすべてのデータと保留中のI/O操作を記録します。
  • アプリケーションコンシステントは、メモリ上のデータ、及びすべてのトランザクションのスナップショットが取得されます。

VMwareスナップショットについて

VMwareのスナップショットを作成する際は、元の仮想ディスクの状態が維持され、新たに差分ディスクが作成されます。

スナップショットを取得すると、edit settingの画面では、VM名-000001.vmdkといった差分ディスクが接続された状態となります。

スナップショットはチェーン構造になっており、複数スナップショットを取得した場合、間の差分ディスクが破損すると、リストアができなくなります。

また、スナップショットを取得したり、統合する際に性能影響があります。

VMwareのスナップショットは、長期保存の想定ではなく、バージョンアップ直前の一時的なバックアップなどに利用されます。

差分ディスクへの書き込みは元の仮想ディスクのサイズまで最大拡張されます。

差分ディスクをスパースディスクと呼んでおり、コピーオンライトを利用しているようです。

vSphere VMFS データストアの概念と操作

スナップショットのオプションごとの違い

電源オンの場合、スナップショットのオプションを選択することができます。

  • 仮想マシンのメモリを含めるにチェックがない場合は、クラッシュコンシステントなスナップショットになります。電源オフの状態で静止点に戻ります。
  • 仮想マシンのメモリを含めるにチェックがある場合は、メモリの状態もスナップショットに含まれます。電源オンの状態で静止点に戻ります。おそらくファイルシステムコンシステント相当になるのではと思いますが、記述は見つけられませんでした。
  • ゲスト ファイル システムの静止は、仮想マシンのメモリを含めるがオフの時に選択できるオプションになっており、チェックをがある場合、進行中のプロセスを一時停止することで一貫性がある状態となり、ファイルシステムコンシステントとアプリケーションコンシステントになります。

VMware Knowledge Base

ゲスト ファイル システムの静止は、ゲストOS側での違いや対応が必要となり、WindowsではVSSを利用できるようにし、Linuxではスクリプトを配置することで、静止時に事前スクリプトを実行し、スナップショット取得後に事後スクリプトを実行することで、アプリケーションコンシステントなスナップショットを取ることができます。

VMware Knowledge Base

VMwareでのバックアップ

VMwareでバックアップをする方法はいくつかあります。

一番簡単なのは、クローンで仮想マシンをコピーをとっておくことです。

次に、VADP(vStorage APIs for Data Protection)という、バックアップ用のAPIを利用することでバックアップを取得することができます。Changed Block Tracking (CBT) と呼ばれる増分バックアップカニズムも提供されます。 こちらはバックアップ製品で利用されているものになり、LANを経由してバックアップを取得することができます。ただし、スナップショット機能を利用していることもあり、スナップショットを取得したり、統合する際に性能影響が出てしまいます。

VMware Knowledge Base

VADPで使われているVDDKについて前回記事にしてみました。

hidemium.hatenablog.com

VMwareのスナップショット単体の利用は、長期保存の想定ではなく、バージョンアップ直前の一時的なバックアップなどに利用されるため、長期のバックアップには向きません。

vSphere Replicationを使う方法もあり、こちらはスナップショットではなく、VMkernelのVSCSI filterを通じて、IOを途中で吸い出して転送しており、RPOを短くすることができるようです。

Failover and Remediation Techniques

参考