Nutanix CE 上の VM を、他の環境で使用すべくエクスポートしてみました。
Acropolis Hypervisor(AHV)の Nutanix の場合、VM は iSCSI で vDisk と接続されますが、それとは別に、Nutanix DFS のコンテナは NFS で外部からアクセスできます。そこで Linux から NFS マウントして、VM の vDisk をエクスポートしてみました。エクスポートとはいっても、vDisk のファイルを qemu-img コマンドで形式変換して別ファイルとして保存するだけです。
今回登場するサーバは CVM とただの Oracle Linux の 2台です。それぞれプロンプトが下記のようになっています。
- Nutanix の CVM → nutanix@NTNX-ae6619e0-A-CVM:10.1.1.21:~$
- NFS マウントする Linux → [root@vm01 ~]#
エクスポートした vDisk は、OpenStack のイメージサービスに登録してみます。
CVM で DSF のコンテナを見てみる
まず、CVM に SSH でログインしてそこからコンテナの中を見てみます。
今回の Nutanix Cluster には、1つだけコンテナがあります。コンテナ名は「default-container-7427652206174240679」です。
nutanix@NTNX-ae6619e0-A-CVM:10.1.1.21:~$ ncli container list | grep Name Name : default-container-7427652206174240679 VStore Name(s) : default-container-7427652206174240679
nfs_ls コマンドで、コンテナの中を見ることができます。vmdisk、image、snapshot のディレクトリが配置されています。今回のターゲットは vDisk なので、vmdisk 配下のファイルです。VM 数が少ないので、あまりファイルは多くありません。
nutanix@NTNX-ae6619e0-A-CVM:10.1.1.21:~$ nfs_ls -a -R /default-container-7427652206174240679 .acropolis .acropolis/image .acropolis/snapshot .acropolis/snapshot/4351b099-af9f-4357-9393-037d389b350a .acropolis/snapshot/4351b099-af9f-4357-9393-037d389b350a/vmdisk .acropolis/snapshot/5566982f-8d95-47e4-a533-9b7e65c186c9 .acropolis/snapshot/5566982f-8d95-47e4-a533-9b7e65c186c9/vmdisk .acropolis/snapshot/db946461-54ab-4a52-af45-6ea9cef78672 .acropolis/snapshot/db946461-54ab-4a52-af45-6ea9cef78672/vmdisk .acropolis/snapshot/dc7a940c-d809-4de6-8066-aed9ee575c8c .acropolis/snapshot/dc7a940c-d809-4de6-8066-aed9ee575c8c/vmdisk .acropolis/snapshot/dd65f72b-cb01-4aad-8e06-bb514d2c4a79 .acropolis/snapshot/dd65f72b-cb01-4aad-8e06-bb514d2c4a79/vmdisk .acropolis/snapshot/dd65f72b-cb01-4aad-8e06-bb514d2c4a79/vmdisk/56f8b43c-6c01-4891-a215-9f6493a153bf .acropolis/snapshot/f69abb58-6a4e-45f4-b359-c420e2031c79 .acropolis/snapshot/f69abb58-6a4e-45f4-b359-c420e2031c79/vmdisk .acropolis/vmdisk .acropolis/vmdisk/1b5336b1-d8bb-4f03-a73d-42e9c1c403a3 .acropolis/vmdisk/36a50f65-751d-4273-9940-802085837591 .acropolis/vmdisk/56f8b43c-6c01-4891-a215-9f6493a153bf .acropolis/vmdisk/90ae4b70-df9e-4bd3-9c8a-8420428116a3 .acropolis/vmdisk/d21e5951-d533-459e-92b8-6303a416aa97 .acropolis/vmdisk/edc3c9d4-9997-45fa-9a4c-6791463e0b82 nutanix@NTNX-ae6619e0-A-CVM:10.1.1.21:~$
CVM で vDisk の ID 特定
今回は、ol72-base という VM の vDisk をエクスポートしてみます。vDisk のもつ UUID は「56f8b43c-6c01-4891-a215-9f6493a153bf」でした。
nutanix@NTNX-ae6619e0-A-CVM:10.1.1.21:~$ acli vm.get ol72-base | grep -e bus -e vmdisk_uuid bus: "scsi" vmdisk_uuid: "56f8b43c-6c01-4891-a215-9f6493a153bf"
Linux から DSF コンテナを NFS マウント
NFS ホワイトリストの設定
CVM で、ncli を実行して NFS ホワイトリストにアドレスを追加登録します。NFS マウントする側の Linux のネットワークアドレス(今回は 10.1.1.0/24)を登録しておきます。
nutanix@NTNX-ae6619e0-A-CVM:10.1.1.21:~$ ncli container add-to-nfs-whitelist name=default-container-7427652206174240679 ip-subnet-masks=10.1.1.0/255.255.255.0
コンテナの NFS ホワイトリストは、ncli container list コマンドで確認できます。
nutanix@NTNX-ae6619e0-A-CVM:10.1.1.21:~$ ncli container list | grep -e Name -e Whitelist Name : default-container-7427652206174240679 NFS Whitelist Inherited : false Container NFS Whitelist : 10.1.1.0/255.255.255.0 VStore Name(s) : default-container-7427652206174240679
NFS マウント
NFS マウントする Linux には、 nfs-utils と、後で使用する qemu-img をインストールしておきます。
[root@vm01 ~]# yum install -y nfs-utils qemu-img
/mnt ディレクトリにマウントしてみます。
[root@vm01 ~]# mount 10.1.1.21:/default-container-7427652206174240679 /mnt
マウントできました。
[root@vm01 ~]# df -h Filesystem Size Used Avail Use% Mounted on /dev/sda1 2.9G 898M 1.9G 33% / tmpfs 1002M 0 1002M 0% /dev/shm 10.1.1.21:/default-container-7427652206174240679 422G 1.7G 420G 1% /mnt
コンテナの中が見えるようになりました。対象となる vDisk の UUID「56f8~53bf」のファイルも見つかります。
[root@vm01 ~]# ls -la /mnt/.acropolis/ image/ snapshot/ vmdisk/ [root@vm01 ~]# ls -la /mnt/.acropolis/vmdisk/ total 2121066 drwxr-xr-x. 1 1000 1000 0 Jun 3 22:37 . drwxr-xr-x. 1 1000 1000 0 Jun 3 20:49 .. -rwxr-xr-x. 1 1000 1000 381681664 Jun 2 18:36 1b5336b1-d8bb-4f03-a73d-42e9c1c403a3 -rwxr-xr-x. 1 1000 1000 2147483648 Jun 3 20:54 36a50f65-751d-4273-9940-802085837591 -rwxr-xr-x. 1 1000 1000 10737418240 Jun 3 20:58 56f8b43c-6c01-4891-a215-9f6493a153bf -rw-------. 1 1000 1000 41126400 May 27 19:20 90ae4b70-df9e-4bd3-9c8a-8420428116a3 -rwxr-xr-x. 1 1000 1000 1073741824 Jun 3 22:35 d21e5951-d533-459e-92b8-6303a416aa97 -rwxr-xr-x. 1 1000 1000 381681664 Jun 2 18:36 edc3c9d4-9997-45fa-9a4c-6791463e0b82
vDisk のエクスポート
前掲の絵は Nutanix 外部に vDisk を取り出しているように書きましたが、今回はディスク容量の都合で、コンバート後のファイルも NFS(コンテナ)に書き出しています。そのため保存先も /mnt に NFS マウントした コンテナです。
- 元のvDisk ファイル:
/mnt/.acropolis/vmdisk/56f8b43c-6c01-4891-a215-9f6493a153bf - エクスポートしたファイル:
/mnt/ol72-base.qcow2
qemu-img コマンドで、vDisk のファイル形式を見てみます。Nutanix では raw 形式で扱っているようです。
[root@vm01 ~]# qemu-img info /mnt/.acropolis/vmdisk/56f8b43c-6c01-4891-a215-9f6493a153bf image: /mnt/.acropolis/vmdisk/56f8b43c-6c01-4891-a215-9f6493a153bf file format: raw virtual size: 10G (10737418240 bytes) disk size: 1.3G
エクスポート対象の vDisk をもつ VM が停止状態であることを確認しておきます。
nutanix@NTNX-ae6619e0-A-CVM:10.1.1.21:~$ acli vm.get ol72-base | grep state state: "kOff"
qemu-img コマンドで、圧縮(-c)しつつ qcow2 形式にコンバートしてみます。
[root@vm01 ~]# qemu-img convert -c -O qcow2 /mnt/.acropolis/vmdisk/56f8b43c-6c01-4891-a215-9f6493a153bf /mnt/ol72-base.qcow2
形式を変換したファイルが保存されました。qemu-img info コマンドでファイルの情報を見てみます。
[root@vm01 ~]# qemu-img info /mnt/ol72-base.qcow2 image: /mnt/ol72-base.qcow2 file format: qcow2 virtual size: 10G (10737418240 bytes) disk size: 538M cluster_size: 65536
file コマンドではこのように見えます。
[root@vm01 ~]# file /mnt/ol72-base.qcow2 /mnt/ol72-base.qcow2: Qemu Image, Format: Qcow , Version: 2
形式変換した vDisk の使い道
とりあえず、ファイルを他のサーバに転送して、OpenStack の Glance イメージサービスに登録してみました。
ちなみに Nutanix と OpenStack とで連携した場合、Nutanix Prism から作成した VM は OpenStack からは見えません。そこで、このようにイメージ登録すれば既存の VM が OpenStack 管理下の Nutanix でも使用できるようになります。
[root@ovm02 ~(keystone_admin)]# glance image-create --name ol72 --disk-format qcow2 --container-format bare --file ol72-base.qcow2 +------------------+--------------------------------------+ | Property | Value | +------------------+--------------------------------------+ | checksum | 0 | | container_format | bare | | created_at | 2016-06-04T06:32:19.000000 | | deleted | False | | deleted_at | None | | disk_format | qcow2 | | id | 6510fce1-0a27-446d-b794-a1f92fe50458 | | is_public | False | | min_disk | 0 | | min_ram | 0 | | name | ol72 | | owner | 529638a186034e5daa11dd831cd1c863 | | protected | False | | size | 565556736 | | status | active | | updated_at | 2016-06-04T06:38:12.000000 | | virtual_size | None | +------------------+--------------------------------------+
以上。