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 がインストール済みであればチェックは不要です。
ゲスト 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」を開きます。
「+ Protection Domain」→ 「Async DR」を選択します。
PD の名前を入力して「Create」をクリックします。
スナップショットを取得する VM のチェックを ON にします。
「Use application consistent snapshots」のチェックも ON にしておきます。
「Protect Selected Entities」をクリックして、選択してある VM を隣の枠に移動します。
vm02 が隣の枠に移動しました。「Next」をクリックします。
今回は、スケジュール設定をしないで「Close」します。
Application Consistent のスナップショット作成
スナップショットは VM ではなく Data Protection にある PD から作成します。
Prism の「Protection Domain」→「Table」画面に、先ほど作成した PD「pd02」が表示されてています。これを選択して「Take Snapshot」をクリックします。
「Create application consistent snapshot」のチェックを ON にして、スナップショットを作成「Save」してみます。
少し待つと、「Local Snapshots」に、スナップショットが作成されます。
ゲスト 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.
以上。