タイトルにもあるように、Nutanixで取得したスナップショットはバックアップ用途としても利用が可能です。
vSphereのスナップショットの使用をご存知の方であれば疑わしくなるタイトルですが、その理由についても簡単にご説明出来ればと思います。
そもそもスナップショットについて
ご存知の方も多いと思いますが、Nutanixにスナップショットの利点を説明するためにもvSphereのスナップショットについて説明します。
まず、vSphereのスナップショットはバックアップ用途で利用することは想定されておらず、メーカーから72時間以内に削除することを推奨しています。
https://kb.vmware.com/s/article/1025279?lang=ja
では、なぜスナップショットをバックアップ用途として利用してはいけないのか?
その理由はvSphereのスナップショットのアーキテクチャーを少しだけ知ることで把握することが出来ます。
まずvSphereは仮想マシンの各要素をファイル形式で扱うことが出来ます。
その中でハードディスクもvmdkというファイル形式で管理されており、スナップショットを作成すると、その時点のvmdkファイルを読み込み専用に変更して差分ファイルを作成し、以降の書き込みは差分ファイルに行います。
スナップショットを作成する度に差分ファイルが作成され、読み書きともにデータへのアクセスを行う際はすべてのファイルをチェーン式に読み込む必要があるため、I/Oパフォーマンスが低下してしまいます。
もう一つの問題は、スナップショットを削除する際の動作に問題があります。
スナップショットを削除すると、差分ファイルを読み込み専用に変更した元ファイルにマージさせる動作が発生します。
このマージ処理が発生している間は仮想マシンに対して高い負荷が発生してしまい、差分ファイルの容量が大きいほどマージにかかる時間も比例して大きくなってしまいます。
これが、メーカーからスナップショットの保持期間が72時間に推奨されている理由の一つです。
vSphereの仕組み自体は仮想化アーキテクチャーとして非常に優れたものですが、スナップショット機能をバックアップ用途として考えた場合にはこのような問題が出てしまいます。
変わって、Nutanixのスナップショットを見てみます。
Nutanixのスナップショットはいわゆるストレージベースのスナップショットを行います。
ストレージベースのスナップショットでは、データをファイルではなくブロック単位で扱う形になり、スナップショットを取得すると現在データが存在するブロックを読み取り専用に変更し、書き込みが発生した際は別のブロックに対して書き込みを行います。
一見するとvSphereと同じように感じるかもしれませんが、こちらはデータの読み書きを行う場合に、直接データが存在する領域にアクセス出来るためvSphereのようにすべてのファイルをいちいち読み込む必要がありません。
スナップショットを削除する場合もファイルをマージするような動作は発生せず、読み込み専用になったブロックを開放するだけで完了するため負荷は発生しません。
これらの理由からNutanixのスナップショットはバックアップ用途としての利用が可能になります。
スナップショットの取得方法
それでは、実際にNutanix上でスナップショットを取得してみましょう。
前回の記事から、Nutanix CEで検証を行っているため今回も同様にハイパーバイザーはAHVで行います。
※手順は少し異なりますが、NutanixをESXiで導入していても同様にスナップショットを取得出来ます。
対象の仮想マシンを選択し、「Take Snapshot」を選択します。
スナップショットの内容がわかる任意の名前を入力します。
前述の通り、既存のデータ領域を読み込み専用に切り替えだけなので、負荷は発生せずに数秒で処理が完了します。
仮想マシンの一覧画面で対象の仮想マシンを選択し、下部にある「VM Snapshot」からスナップショットの取得状況を確認することが出来ます。
スナップショットからの復元とスナップショットの削除
先程の仮想マシン一覧画面で、少し下へスクロールし「VM Snapshots」を選択します。
取得したスナップショット情報の一覧が表示されます。
状態を戻したいスナップショットの右側にある「Restore」を選択することで、数秒で復元が完了します。
ただ、一点vSphereと比べて不満な点は、Nutanixのスナップショットは仮想マシンの動的メモリ情報をスナップショット取得時に保持することが出来ません。
つまり、仮想マシンを起動したままの状態で復元が行えないということになります。
実際にこの機能を利用してシステムを運用することはないと思いますが、一応補足となります。
続けて、スナップショットの削除方法についてですが、同じく画面下部の「Delete」から選択することでスナップショットの削除が行えます。
削除を行う場合も、前述の通りブロックの読み込み先を変更するだけなので、マージなどの処理はなく、負荷が高まることはありません。
以上がNutanix(AHV)でスナップショットを取得する方法になります。
非常に簡単な操作で取得することがおわかり頂けるたと思います。
実際にこれらをバックアップとして利用する場合は、仮想マシンごとにスケジューリングを行うかと思います。
今回はご紹介出来ませんでしたが、DataProtectionという機能を利用することで個別、または複数の仮想マシンをまとめてスケジュールを組むことが可能です。
次回こそはCVMなど、Nutanixのアーキテクチャーに関する内容をご紹介したいと思います。
その中でハードディスクもvmdkというファイル形式で管理されており、スナップショットを作成すると、その時点のvmdkファイルを読み込み専用に変更して差分ファイルを作成し、以降の書き込みは差分ファイルに行います。
スナップショットを作成する度に差分ファイルが作成され、読み書きともにデータへのアクセスを行う際はすべてのファイルをチェーン式に読み込む必要があるため、I/Oパフォーマンスが低下してしまいます。
もう一つの問題は、スナップショットを削除する際の動作に問題があります。
スナップショットを削除すると、差分ファイルを読み込み専用に変更した元ファイルにマージさせる動作が発生します。
このマージ処理が発生している間は仮想マシンに対して高い負荷が発生してしまい、差分ファイルの容量が大きいほどマージにかかる時間も比例して大きくなってしまいます。
これが、メーカーからスナップショットの保持期間が72時間に推奨されている理由の一つです。
vSphereの仕組み自体は仮想化アーキテクチャーとして非常に優れたものですが、スナップショット機能をバックアップ用途として考えた場合にはこのような問題が出てしまいます。
変わって、Nutanixのスナップショットを見てみます。
Nutanixのスナップショットはいわゆるストレージベースのスナップショットを行います。
ストレージベースのスナップショットでは、データをファイルではなくブロック単位で扱う形になり、スナップショットを取得すると現在データが存在するブロックを読み取り専用に変更し、書き込みが発生した際は別のブロックに対して書き込みを行います。
一見するとvSphereと同じように感じるかもしれませんが、こちらはデータの読み書きを行う場合に、直接データが存在する領域にアクセス出来るためvSphereのようにすべてのファイルをいちいち読み込む必要がありません。
スナップショットを削除する場合もファイルをマージするような動作は発生せず、読み込み専用になったブロックを開放するだけで完了するため負荷は発生しません。
これらの理由からNutanixのスナップショットはバックアップ用途としての利用が可能になります。
スナップショットの取得方法
それでは、実際にNutanix上でスナップショットを取得してみましょう。
前回の記事から、Nutanix CEで検証を行っているため今回も同様にハイパーバイザーはAHVで行います。
※手順は少し異なりますが、NutanixをESXiで導入していても同様にスナップショットを取得出来ます。
対象の仮想マシンを選択し、「Take Snapshot」を選択します。
スナップショットの内容がわかる任意の名前を入力します。
前述の通り、既存のデータ領域を読み込み専用に切り替えだけなので、負荷は発生せずに数秒で処理が完了します。
仮想マシンの一覧画面で対象の仮想マシンを選択し、下部にある「VM Snapshot」からスナップショットの取得状況を確認することが出来ます。
スナップショットからの復元とスナップショットの削除
先程の仮想マシン一覧画面で、少し下へスクロールし「VM Snapshots」を選択します。
取得したスナップショット情報の一覧が表示されます。
状態を戻したいスナップショットの右側にある「Restore」を選択することで、数秒で復元が完了します。
ただ、一点vSphereと比べて不満な点は、Nutanixのスナップショットは仮想マシンの動的メモリ情報をスナップショット取得時に保持することが出来ません。
つまり、仮想マシンを起動したままの状態で復元が行えないということになります。
実際にこの機能を利用してシステムを運用することはないと思いますが、一応補足となります。
続けて、スナップショットの削除方法についてですが、同じく画面下部の「Delete」から選択することでスナップショットの削除が行えます。
削除を行う場合も、前述の通りブロックの読み込み先を変更するだけなので、マージなどの処理はなく、負荷が高まることはありません。
以上がNutanix(AHV)でスナップショットを取得する方法になります。
非常に簡単な操作で取得することがおわかり頂けるたと思います。
実際にこれらをバックアップとして利用する場合は、仮想マシンごとにスケジューリングを行うかと思います。
今回はご紹介出来ませんでしたが、DataProtectionという機能を利用することで個別、または複数の仮想マシンをまとめてスケジュールを組むことが可能です。
次回こそはCVMなど、Nutanixのアーキテクチャーに関する内容をご紹介したいと思います。