Nutanix CE で、Nutanix Guest Tools(NGT)をインストールしてある Linux VM をクローンしてみます。ゲスト OS は、Oracle Linux 8.5 です。
今回の内容
今回の環境
- Nutanix CE 2020.09.16
- ゲスト OS は、Oracle Linux 8.5
クローン元の VM(vm01)
クローン元の VM は「vm01」です。ゲスト OS は Oracle Linux 8.5 です。
[root@vm01 ~]# cat /etc/oracle-release Oracle Linux Server release 8.5
このあとのコマンドで必要になるので、VM の UUID を取得しておきます。
CVM$ acli vm.list | grep vm01 vm01 15e8a6a8-f454-47d4-ab7b-7992f294333b CVM$ VM_UUID=$(acli vm.list | grep vm01 | awk '{print $2}') CVM$ echo $VM_UUID 15e8a6a8-f454-47d4-ab7b-7992f294333b
ゲスト OS に NGT がインストール済みです。Prism から確認すると、VM でも NGT が有効な状態になっています。
- NGT Enabled: true
- Communication Link Active: true
CVM$ ncli ngt get vm-id=$VM_UUID VM Id : 0005bcc8-1ddc-c8ba-37dd-1c697a630d37::15e8a6a8-f454-47d4-ab7b-7992f294333b VM Name : vm01 NGT Enabled : true Tools ISO Mounted : false Vss Snapshot : true File Level Restore : true Communication Link Active : true
VM ごとにユニークな値となる ngt_uuid は、f38c2669-6f7f-4fb8-8cd3-e0e9fe0d8226 です。
[root@vm01 ~]# cat /usr/local/nutanix/ngt/config/ngt_config.json | /usr/local/nutanix/ngt/python36/python3 -m json.tool { "cluster_ip": "192.168.20.50", "ngt_uuid": "f38c2669-6f7f-4fb8-8cd3-e0e9fe0d8226", "ngt_version": "2.0", "port": 2074 }
VM クローンのみ(vm02)
ゲスト OS に NGT をインストールしている場合、VM のクローン後に NGT UUID を変更する必要があります。ただクローンしただけでは、NGT UUID は変更されません。
vm01 から、vm02 をクローン → パワーオンしてみます。
CVM$ acli vm.clone vm02 clone_from_vm=vm01 vm02: pending vm02: complete CVM$ acli vm.on vm02 vm02: pending vm02: complete
Prism では、NGT は無効な状態になります。
CVM$ VM_UUID=$(acli vm.list | grep vm02 | awk '{print $2}') CVM$ ncli ngt get vm-id=$VM_UUID Error: Nutanix Guest Tools are not enabled for this VM.
そして、ゲスト OS の NGT UUID は変更されていません。
[root@vm02 ~]# cat /usr/local/nutanix/ngt/config/ngt_config.json | /usr/local/nutanix/ngt/python36/python3 -m json.tool { "cluster_ip": "192.168.20.50", "ngt_uuid": "f38c2669-6f7f-4fb8-8cd3-e0e9fe0d8226", "ngt_version": "2.0", "port": 2074 }
VM クローン後の NGT 有効化(vm03)
VM クローン後に、NGT の ISO ファイルをマウントしてから VM をパワーオンすることで、NGT UUID が再生成されます。
vm01 から、vm03 をクローンします。
CVM$ acli vm.clone vm03 clone_from_vm=vm01 vm03: pending vm03: complete
今回は、Prism ではなく ncli で NGT の ISO ファイルをマウントします。
CVM$ VM_UUID=$(acli vm.list | grep vm03 | awk '{print $2}') CVM$ ncli ngt mount vm-id=$VM_UUID Successfully initiated mount of Nutanix Guest Tools.
NGT の ISO ファイルがマウントされた状態(Tools ISO Mounted: true)になりました。同時に NGT Enabled も true になります。
CVM$ ncli ngt get vm-id=$VM_UUID VM Id : 0005bcc8-1ddc-c8ba-37dd-1c697a630d37::7f74bc72-278a-49c7-974c-9b5c8cbdf69f VM Name : vm03 NGT Enabled : true Tools ISO Mounted : true Vss Snapshot : true File Level Restore : false Communication Link Active : false
VM をパワーオンします。
CVM$ acli vm.on vm03 vm03: pending vm03: complete
少し待つと、NGT が有効な状態になります。ちなみに、今回は ncli のデフォルト設定で NGT を有効化したので、クローン元とは異なる状態になっています。
CVM$ ncli ngt get vm-id=$VM_UUID VM Id : 0005bcc8-1ddc-c8ba-37dd-1c697a630d37::7f74bc72-278a-49c7-974c-9b5c8cbdf69f VM Name : vm03 NGT Enabled : true Tools ISO Mounted : true Vss Snapshot : true File Level Restore : false Communication Link Active : true
NGT UUID の再生成が終わると、ISO ファイルは自動的にアンマウント解除(Tools ISO Mounted: false)されます。
CVM$ ncli ngt get vm-id=$VM_UUID VM Id : 0005bcc8-1ddc-c8ba-37dd-1c697a630d37::7f74bc72-278a-49c7-974c-9b5c8cbdf69f VM Name : vm03 NGT Enabled : true Tools ISO Mounted : false Vss Snapshot : true File Level Restore : false Communication Link Active : true
ちなみにこの NGT 設定は、Prism では下記のような状態です。
ゲスト OS 側で確認すると、NGT UUID が再生成されています。
クローン元の vm01 では f38c2669-6f7f-4fb8-8cd3-e0e9fe0d8226 でしたが、再生成により b89cbd9b-0e56-4821-a229-2e7bcc9f74e6 になりました。
[root@vm03 ~]# cat /usr/local/nutanix/ngt/config/ngt_config.json | /usr/local/nutanix/ngt/python36/python3 -m json.tool { "cluster_ip": "192.168.20.50", "ngt_uuid": "b89cbd9b-0e56-4821-a229-2e7bcc9f74e6", "ngt_version": "2.0", "port": 2074 }
最後に VM をパワーサイクル(シャットダウン → パワーオン)しておくと、NGT 関連サービスの自動起動なども確認できて確実かなと思います。
CVM$ acli vm.shutdown vm03 CVM$ acli vm.on vm03
以上。