NTNX>日記

個人的な趣味による Nutanix Community Edition 日記。Japanese のみですみません。

Nutanix Guest Tools の Application Consistent snapshots を Linux で使用してみる。

Nutanix CE で、Nutanix Guest Tools(NGT)の Application Consistent Snapshots を、Linux で試してみます。

Linux での Application Consistent Snapshots では、ゲスト OS の下記のスナップショット事前/事後スクリプトが NGT によって実行されます。このスクリプトは NGT をインストールしても自動作成されないので、静止点を取得したいアプリケーションに合わせて作成する必要があるようです。ちなみに、下記2つのスクリプト ファイルを配置しないで Application Consistent Snapshot を作成すると Prism では Warning のアラートが出ます。

  • 事前: /sbin/pre_freeze
  • 事後: /sbin/post_thaw

今回は Nutanix CE ce-2017.07.20-stable と、Oracle Linux 7.4 を使用しています。

VM での Application Consistent Snapshots の有効化

まず、対象 VM のゲスト OS に NGT をインストールしておきます。

あと、ゲスト OS から Prism の Cluster VIP に対して TCP 2074 番ポートで通信できる必要があります。

今回は、vm02 という名前の VM のスナップショットを取得します。
VM の「Manage Guest Tools」で「Enable Nutanix Guest Tools」と、「Volume Snapshot Service / Application Consistent Snapshots (VSS)」のチェックが ON の状態にしておきます。

下記は NGT インストール時のスクリーンショットなので「Mount Nutanix Guest Tools」のチェックも ON になっていますが、これは NGT がインストール済みであればチェックは不要です。

f:id:gowatana:20170917233209p:plain

ゲスト OS へのスクリプト配置

ゲスト OS にスクリプトを配置しておきます。

今回のゲスト OS は、Oracle Linux 7.4 です。

[root@vm02 ~]# cat /etc/oracle-release
Oracle Linux Server release 7.4

今回は、スナップショット取得時にスクリプトが動作することを確認するために、あえて実際にアプリケーションを制止しない、logger コマンドでログ出力だけをするスクリプトを配置します。

[root@vm02 ~]# echo "logger NGT pre script test." > /sbin/pre_freeze
[root@vm02 ~]# chmod 700 /sbin/pre_freeze
[root@vm02 ~]# echo "logger NGT post script test." > /sbin/post_thaw
[root@vm02 ~]# chmod 700 /sbin/post_thaw

スクリプトが配置されました。
ファイルのパーミッションは 700 (所有者のみ rwx 権限あり)で、所有者は root:root です。

[root@vm02 ~]# ls -l /sbin/pre_freeze /sbin/post_thaw
-rwx------. 1 root root 29  9月 17 19:06 /sbin/post_thaw
-rwx------. 1 root root 28  9月 17 19:06 /sbin/pre_freeze

スナップショット取得前に実行される /sbin/pre_freeze スクリプトです。

[root@vm02 ~]# cat /sbin/pre_freeze
logger NGT pre script test.

スナップショット取得後に実行される /sbin/post_thaw スクリプトです。

[root@vm02 ~]# cat /sbin/post_thaw
logger NGT post script test.

Protection Domain の作成

スナップショット取得対象の VM を含む Protection Domain(PD)を作成します。メニューから「Data Protection」を開きます。

f:id:gowatana:20170918000130p:plain

「+ Protection Domain」→ 「Async DR」を選択します。

f:id:gowatana:20170918000213p:plain

PD の名前を入力して「Create」をクリックします。

f:id:gowatana:20170918000308p:plain

スナップショットを取得する VM のチェックを ON にします。
「Use application consistent snapshots」のチェックも ON にしておきます。
「Protect Selected Entities」をクリックして、選択してある VM を隣の枠に移動します。

f:id:gowatana:20170918001027p:plain

vm02 が隣の枠に移動しました。「Next」をクリックします。

f:id:gowatana:20170918000444p:plain

今回は、スケジュール設定をしないで「Close」します。

f:id:gowatana:20170918000517p:plain

Application Consistent のスナップショット作成

スナップショットは VM ではなく Data Protection にある PD から作成します。

Prism の「Protection Domain」→「Table」画面に、先ほど作成した PD「pd02」が表示されてています。これを選択して「Take Snapshot」をクリックします。

「Create application consistent snapshot」のチェックを ON にして、スナップショットを作成「Save」してみます。

f:id:gowatana:20170918001730p:plain

少し待つと、「Local Snapshots」に、スナップショットが作成されます。

f:id:gowatana:20170918002722p:plain

ゲスト OS で journalctl を見ておくと、ログ出力があることからスクリプトが動作したことが分かります。今回はただログ出力コマンドを実行しただけですが、ここでアプリケーションにあわせて、静止点を取得するコマンドを実行することになるはずです。

[root@vm02 ~]# journalctl -f
~
 9月 17 19:19:27 vm02 logger[1204]: NGT pre script test.
 9月 17 19:19:38 vm02 logger[1206]: NGT post script test.

 以上。