読者です 読者をやめる 読者になる 読者になる

NTNX>日記

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

Nutanix CE からの VM(vDisk)エクスポート。

CVM NFS OpenStack

Nutanix CE 上の VM を、他の環境で使用すべくエクスポートしてみました。

Acropolis Hypervisor(AHV)の Nutanix の場合、VM は iSCSI で vDisk と接続されますが、それとは別に、Nutanix DFS のコンテナは NFS で外部からアクセスできます。そこで Linux から NFS マウントして、VM の vDisk をエクスポートしてみました。エクスポートとはいっても、vDisk のファイルを qemu-img コマンドで形式変換して別ファイルとして保存するだけです。

f:id:gowatana:20160609075248p:plain

 今回登場するサーバは 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                                 |
+------------------+--------------------------------------+

以上。