【VMFS】スナップショットのリストアにおけるVMware vSphereデータストアについて【NFS】

VMware ESXi上で稼働する仮想マシンやその他の仮想化関連のデータを保存するためのストレージリソースとして、データストアというものがある。

これはESXiが動いている物理サーバとは別の、物理ストレージを共用ストレージとしてサーバとつないで、そこに仮想マシンの構成ファイルとなるvmdkファイルの保存領域として活用される。

今回はこの投稿で、VMwareデータストアの種類やそれぞれの仕様やその違い、特に簡易的なデータ復元で利用できるスナップショットとそのリストアについても触れていき、ユーザの要望に沿う形でどのようなデータストアの設計を講じればいいか、について少しだけでも助けになれば幸いだ。

## 目次
- データストアの種類
- スナップショットとは
- スナップショット生成とそのリストア
- 各データストアにおけるスナップショット生成方法
- 両者の違い

## データストアの種類

データストアの種類、タイプは3つある。

**VMFS(Virtual Machine File System)**：ブロックストレージ上に作成されるファイルシステム。FCやiSCSIなどのブロックアクセス用のプロトコルで作成・接続される。

**RDM(Raw Device Mapping)**：仮想化環境で仮想マシンから物理ストレージに直接アクセスしてデータの読み書きを行なう。今投稿の重要テーマであるスナップショットの活用はできない。iSCSIのLUNとして使われることが多い。

**NFS(Network File System)**：NASサーバ上に生成されているNFSボリュームにアクセスするためのプロトコル。共有ネットワークストレージとしてアクセスされる。

ここではスナップショット作成からのそのリストアに着眼しながらデータストアの選定の話に移っていくため、RDMについては触れるのはここまで。また、同じ共有ストレージプールとして、物理ストレージを用いないvSAN(サーバ内蔵のディスクを仮想的に集結させる)というものも存在する。

物理ストレージを共有ストレージとして使い、スナップショット生成からのデータ復元としてリストア機能を利用する想定で話を進めていくならば、データストアの選定はVMFSかNFSに絞りこみたい。


## スナップショットとは

非常に抽象的に言えば、ある時点でのデータを保存する技術。例えていうならテレビゲームのセーブデータみたいなもので、OSによってそれはスケジュール的に自動で作成されたり、あるいはユーザ自身による手動での作成もできる。

仮想化環境での説明となると、仮想マシンの特定の時点での状態(メモリ、ディスク、設定)を保存する機能。手動による生成ではvSphere ClientへログインすればGUIベースでの操作も可能である。

毎日AM3:00にある特定の仮想マシンのスナップショットを作成するようにスケジュール設定したとする。
2月25日PM2:00、その仮想マシンに障害が発生して復元を試みる場合、その仮想マシンは最新のスナップショット(2月25日AM3:00)の時点の状態まで戻すことができる。

このような使い方をする。


## スナップショット生成とそのリストア

ではそのスナップショットが一般的にどのような形で作成されるのかを見ていきたい。
スナップショットは直前の取得された状態からの変更分が記録されていき、その直前と直後で発生した差分が管理される仕組みになっている。

そのため一番最初に生成されるスナップショットは、その時点の仮想マシンが保持している状態が全て記録される。そして2回目以降の生成では変更分だけが記録・管理されていく。
記録・管理されていく対象としては、①仮想マシンの設定状態、②ディスク状態、③メモリ状態が保存されていく。

念のため、具体的なファイル名とともにどのような形でリストアされていくのか、についても見ていきたい。

- vmdkファイル：仮想マシンのディスクイメージを保存したファイル
- -delta.vmdkファイル：仮想マシンのスナップショット作成の際に生成される差分ファイル
- vmsdファイル：スナップショットに関するメタデータや情報を保存するファイル
- vmsnファイル：スナップショットの状態ファイル。構成だけでなくメモリの状態も保存ができる

上記4ファイルでは、vmdkファイルのみが仮想マシン作成時に生成されて、他の3ファイルはスナップショット実行の際に生成される。

リストアの際は、まずvmsdファイルを参照して、どのスナップショットからリストアをするのかを決定する。
スナップショットの選択の次は、元のディスクとなるvmdkファイルと差分を指し示すdelta.vmdkファイルの両方が使用されて、スナップショット作成時点の仮想マシンの状態を再現され、vmsdファイルの使用でメモリ状態が復元される。

このようなプロセスを踏まれて復元された仮想マシンが正常に動けば、リストアは成功となる。


## 各データストアにおけるスナップショット生成方法

では、VMFSとNFS、両タイプにおいてのスナップショット生成について見ていきたい。
基本的には両者ともに上記の方法でスナップショットが生成される。

VMFSデータストアの場合は、ブロックアクセス形式による領域のため、ホストからデータストアへのデータアクセスはブロック形式によって読み書きが行なわれる。
それではブロックデータの格納になってしまうのではないか、と言われてしまいそうであるが、そこはVMFSという名前の通り、データストア内でファイルシステムを置くことができるので、vmdkファイルなどはしっかりデータストアに保存される。

NFSデータストアの場合は、サーバ上でファイル形式のボリュームが作成される。そして実際にこのボリュームに対して容量を提供するのが共有ストレージという仕組みになっている。
こうしてESXiホストからデータストアのマウントが果たされてファイルデータの保存領域と活用される。

スナップショットは仮想マシンが稼働中でも生成できる仕様のため、稼働中のまま生成されるユーザさんは多い。またデータストア内のファイルシステムも稼働中のままで仕様上は問題ない。

そのため仮想マシン単位でのスナップショット生成とリストアにおいては両者で仕組みさえ違えど、やれることはほとんど同じである。

ではVMFSとNFS、果たして両者に違いはあるのだろうか。


## 両者の違い

仮想マシン単位での復元ではVMFSもNFSも大きな違いはない。

ただスナップショット実行時に生成されて、リストア時に大きな役割を果たしてくれる4ファイルに万が一、異常が発生したとしたら。。。。

大きな違いはここにある。

NFSデータストアの場合、ファイルアクセス形式でデータの管理をするため、ファイル単位でのスナップショット生成からリストアまでの操作をスムーズに行なうことができる。
そのため仮想マシン単体だけでなく、vmdkファイルやそのリストアに必要なvmsdファイルなど複数のファイルをどの時点まで戻すか、という復元操作を自由に処理することが可能だ。

一方、VMFSデータストアの場合は、ブロックアクセス形式でのデータ管理となるため、スナップショットの対象はファイル単位ではなく、領域全体に対して行われる。もしVMFSデータストアで複数のファイルをそれぞれ好きな時点でのリストアにトライしようと思ってもうまくいかない仕様となっているのだ。

**複数のファイルをそれぞれ好きな時点でリストアできる。**

これまでの間、VMFSデータストアではなくNFSデータストアを選択するユーザさんが多かった最大の要因はこれだった。
そしてNFSデータストア用の共有ストレージの選択肢として、SnapCenter Plug-in for VMware vSphere（SCV)というプラグインを提供しているNetApp社のユニファイドストレージが一世を風靡した史実もこれにつながっているのである。

## ひとりごと

映画の祭典、アカデミー賞の季節の到来である。

日本国内でもここ数週間で話題作の公開がスタートする。

オスカー大本命の「アノーラ」、ロンドンで2回も舞台公演を鑑賞してしまうくらい大好きな「ウィキッド」、ティモシー・シャラメがボブ・ディランを演じる「名もなき者」などスクリーンに通う忙しい日々がまた始まるなぁ。