Nutanixにおける Linux仮想マシンでの File Level Restore
こんにちは。クララの吉村です。今回は、NutanixでLinux仮想マシンを利用しているときに、SnapShot(バックアップ)からファイルを取り出す方法をご案内します。
やることはシンプルで、SnapShotを取得し、そのSnapShotをディスクとしてLinuxにマウントしてあげるだけです。
今回試す環境は以下の通り。
AOS | 5.5 |
ハイパーバイザー | AHV |
バックアップ対象の仮想マシン | CentOS Linux release 7.4.1708 (Core) |
Nunitax Guest Tool のインストール
ファイル単位でのリストア作業を行う場合には、対象の仮想マシンに Nutanix Guest Tools のインストールが必要です。
これはVMware Toolsみたいなもので、ハイパーバイザーによる仮想マシンの管理をより高度なものにしてくれます。
インストールは簡単でNutanixがインストールスクリプトを用意してくれていますので、さくっとやっちゃいましょう。
公式ドキュメントはこちらです。
では、CVMからncliで作業していきます。
# VMのリストを確認。 $ ncli ngt list VM Id : 0005666c-547a-6287-0000-00000001a0eb::e77d95ea-f0e3-4a50-b971-bf165ab7ee23 VM Name : test_yoshimura NGT Enabled : true Tools ISO Mounted : false Vss Snapshot : true File Level Restore : true Communication Link Active : true VM Id : 0005666c-547a-6287-0000-00000001a0eb::34520b97-8fb7-4a14-b602-d26d6c6eaca2 VM Name : test_clara01 NGT Enabled : true Tools ISO Mounted : true Vss Snapshot : true File Level Restore : true Communication Link Active : false ~$
注目すべきは、Communication Link Active が true か false のどちらかです。これがtrueならば、NGTマスターと通信できているので、NGTインストールやNGT有効化を飛ばして次に進んでください。
もし false ならば、NGTマスターと通信できていないので、やることは2つに1つ。
1.NGTのISOファイルをマウントしてあげてインストールする。
2.NGTのインストール済みだけど、有効化されていないので有効化してあげる。
どちらかをやりましょう。
NGTのISOファイルをマウントしてあげてインストールする。
こちらの場合です。
$ ngt mount vm-id=virtual_machine_id # virtual_machine_idは先ほど調べたVM Idです。 # ISOファイルのマウントが成功するとこのようになります。 $ ncli ngt mount vm-id=0005666c-547a-6287-0000-00000001a0eb::e77d95ea-f0e3-4a50-b971-bf165ab7ee23 Successfully initiated mount of Nutanix Guest Tools.
これで、仮想マシンにNutanix Guest Tools のISOファイルのマウントが完了しました。
次に仮想マシンで作業を行います。
# マウント状態を確認 $ ll /mnt # Nutanix Guest tools マウント $ mount /dev/sr0 /mnt # Nutanix Guest Tools インストール $ /mnt/installer/linux/install_ngt.py # インストール完了すると以下のようなngtプロセスが実行されています # ps auwwwfx | grep ngt root 62480 0.0 0.7 246180 30304 ? S Apr16 0:00 /usr/local/nutanix/ngt/python27/python /usr/local/nutanix/ngt/python/bin/guest_agent_monitor_linux.py root 62513 0.0 0.7 470612 29612 ? Sl Apr16 0:26 \_ /usr/local/nutanix/ngt/python27/python /usr/local/nutanix/ngt/python/bin/guest_agent_monitor_linux.py root 62492 0.0 0.9 483396 38396 ? Sl Apr16 0:27 /usr/local/nutanix/ngt/python27/python /usr/local/nutanix/ngt/ssr/ssr_gateway/ssr_gateway_linux_service.py start root 62533 4.3 0.8 259308 31004 ? R Apr16 46:15 \_ /usr/local/nutanix/ngt/python27/python /usr/local/nutanix/ngt/ssr/ssr_gateway/ssr_gateway_linux_service.py start root 62534 0.0 0.7 259308 30356 ? S Apr16 0:00 \_ /usr/local/nutanix/ngt/python27/python /usr/local/nutanix/ngt/ssr/ssr_gateway/ssr_gateway_linux_service.py start root 62538 2.8 0.8 480760 31224 ? Sl Apr16 30:12 \_ /usr/local/nutanix/ngt/python27/python /usr/local/nutanix/ngt/ssr/ssr_gateway/ssr_gateway_linux_service.py start
NGTの有効化
先ほどの手順でNGTインストールは完了しました。デフォルトでは、NGTは有効化されているので使えるはずです。
しかし、インストールしてもNGTマスターとエージェントが通信できていないときは、有効化されていないかもしれません。
CVMからNGTを有効化してあげましょう。
# 現在のNGT状態を確認 $ ncli ngt list VM Id : 0005666c-547a-6287-0000-00000001a0eb::34520b97-8fb7-4a14-b602-d26d6c6eaca2 VM Name : test_clara01 NGT Enabled : false Tools ISO Mounted : false Vss Snapshot : true File Level Restore : true Communication Link Active : false # NGTを有効化 $ ncli nutanix-guest-tools enable vm-id="vm_id" # 成功すると、NGT Enabled : true になります。 $ ncli ngt enable vm-id=0005666c-547a-6287-0000-00000001a0eb::34520b97-8fb7-4a14-b602-d26d6c6eaca2 VM Id : 0005666c-547a-6287-0000-00000001a0eb::34520b97-8fb7-4a14-b602-d26d6c6eaca2 VM Name : test_clara01 NGT Enabled : true Tools ISO Mounted : false Vss Snapshot : true File Level Restore : true Communication Link Active : false
Data Protection の有効化
こちらは割愛しますが、ファイル単位のリストアを実施するために、
・仮想マシンのデータ保護設定が出来ている状態
・仮想マシンのSnapShotが作成されている状態
にしてください。
詳しいやり方を知りたい方はこちらに公式ドキュメントがあります。
ニーズがあれば書きますが、Prism上から簡単にできます。
ファイル単位のリストア Self Service Restore
さてようやくファイル単位のリストアが出来るようになりました。
ファイル単位のリストアは、Self Service Restore という呼び方があり、リストアをDIYしちゃいなってことですかね。
このSSRは2通りのやり方があり、
・PrismのGUIでやる方法
・仮想マシンのngtエージェントからngtcli
です。
今回は後者の「仮想マシンのngtエージェントからngtcli」でリストアします。
公式ドキュメントはこちらにありますので、もう1つのやり方やWindowsでのやり方を知りたい人は是非読んでみてください。
仮想マシンでの作業ですので、仮想マシンにログインします。
# ngtcli を実行 $ /usr/local/nutanix/ngt/ngtcli/ngtcli.py # プロンプトが ngtcli> に代わります。 # SnapShot 一覧を確認 ngtcli> ssr ls-snaps Communicating with Nutanix Data Protection Service... Snapshot Id Disk Labels Logical Drives Create Time ------------ ------------ -------------------- -------------------- 228 scsi0:0 /dev/sda:/boot /dev/sda:/ 2018.04.17 11:31 AM # 仮想マシンに SnapShot をディスクとしてマウント ngtcli>ssr attach-disk disk-label=disk_label snapshot-id=snap_id # 成功するとこのようになります ngtcli> ssr attach-disk disk-label=scsi0:0 snapshot-id=228 Communicating with Nutanix Data Protection service Verifying if the disk is attached Disk attached successfully, bringing it online Hiding system reserved disks, if any ... Disk attached successfully. Snapshot Id Original Disk Label Attached Disk Label Detach Time ------------ -------------------- -------------------- -------------------- 228 scsi0:0 (/dev/sda:/boot /dev/sda:/) scsi0:1 (/dev/sdb:/mnt/nutanix/sdb/sdb1 /dev/sdb:/mnt/nutanix/sdb/Nutanix_VG_sdb_cl-root) 2018.04.18 11:34 AM # SnapShot scsi0:0 のパーティション /boot と / が、それぞれ、仮想マシン上のパーティション /mnt/nutanix/sdb/sdb1 と /mnt/nutanix/sdb/Nutanix_VG_sdb_cl-root にマウントされました。 # 仮想マシンから確認 # ll /mnt/nutanix/sdb/ dr-xr-xr-x. 17 root root 265 Apr 10 13:02 Nutanix_VG_sdb_cl-root dr-xr-xr-x. 5 root root 4096 Apr 16 18:43 sdb1 # マウントされていることが分かりますので、あとは焼くなり煮るなり # SnapShot をマウント解除 ngtcli> ssr detach-disk attached-disk-label=scsi0:1 Unmounting the disk Communicating with Nutanix Data Protection service Verifying if the disk is detached Disk detached successfully. # SnapShot のマウント一覧を確認 ngtcli> ssr list-attached-disks Communicating with Nutanix Data Protection Service... Snapshot Id Original Disk Label Attached Disk Label Detach Time ------------ -------------------- -------------------- -------------------- # 何も表示されていなけえば、デタッチ済みです。
以上です。
まとめですが、NutanixのData Protection機能はとても柔軟にバックアップが可能です。
さらにファイル単位でのリストアが出来るので、わざわざOSレベルでの復旧する必要はないですね。
是非みなさんも試してみてください。