VMwareに限った話ではないのですが、仮想化したサーバーはスナップショットを作成
することで、スナップショットを作成した時点の状態まで簡単に戻すことができます。
大変便利な機能ではあるのですが、スナップショットの動作を理解しないまま運用して
いると、気づいたらディスクの空き容量が不足していたという事態になりかねません。
いや、なります。絶対になる。というか、なりました(自分が)
VMwareで仮想マシンを作成すると「仮想マシン名-
flat.vmdk」というファイルが仮想
マシンの構成フォルダ内に作成されます。スナップショットを作成していない場合は、
このvmdkファイルが仮想マシンの内容を保持します。
スナップショットを作成した場合は、差分ファイルとして「仮想マシン名-******-
delta.vmdk」という仮想ディスクが新たに作成されます。
これ以降、サーバーの変更点は「仮想マシン名-******-delta.vmdk」に記録され、
元の「仮想マシン名-flat.vmdk」ファイルはスナップショット作成前の情報のみ
保持することになります。
「仮想マシン名-******-delta.vmdk」は情報が更新されるたびに容量が増加し、
最大で元のvmdkと同じサイズまで増加していきます。
つまり、スナップショットを作成するたびに新たな仮想ディスク(vmdkファイル)が
一つ作成され、ディスク容量を圧迫することになるのです。
次にスナップショットを削除した時の動作ですが、こちらも注意が必要です。
例. 2世代のスナップショットを保持する仮想マシンを想定
仮想ディスクの構成:
・server-flat.vmdk-----オリジナルのvmdkファイル
(最初にスナップショットを作成した時点までの情報を保持)
・server-00001-delta.vmdk-----2回目のスナップショット作成前までの情報を保持
・server-00002-delta.vmdk-----現在のサーバー情報を記録している仮想ディスク
この状態で直近のスナップショットである「server-00002-delta.vmdk」を削除すると、
「server-00001-delta.vmdk」へ情報を結合した後ファイルが削除されます。
この時、作業領域として「server-00002-delta.vmdk」ファイルの容量分だけディスク
に空き容量が必要となります。
またスナップショットの「すべて削除」を実行すると、それぞれの世代に対して結合を
行うため、必要な空き容量が増加するので特に注意が必要です。
なぜこんなことを書くのかというと、先日スナップショットが5世代ぐらいある仮想
マシンでスナップショットの「すべて削除」を実行したところ、途中でディスクの空
き容量が足りなくなりスナップショットの削除処理に失敗したからです。
スナップショットマネージャ上からは全てのスナップショット情報が消えているのに、
実際のデーター格納場所には全ての仮想ディスクファイルが残っているという最悪な
事態になってしまいました。
大ピンチです。
どれぐらいピンチかというと、悟空が来る前にサイヤ人二人と戦闘するぐらいの危機的
状況です。ヤムチャは戦力外だし。調子こいてサイバイマンなんかにやられるし。

幸いにも「vmkfstools」というコマンドを使って、手動での結合処理がうまくいった
ので助かりましたが。。。
スナップショットを削除する時に結合するための空き容量を確保できない場合は、
一番最初に作成したスナップショットから順番に削除していくと元のvmdkファイル
に直接結合するため作業領域が不要となります。
ディスクの空き容量が不足している場合は、古いスナップショットから順番に削除
していくことをおすすめします。
- 関連記事
-
スポンサーサイト