NTNX>日記

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

Nutanix CE の Image Service ディスク イメージを、別クラスタに全部コピーしてみる。

Acropolis Image Service の vDisk / ISO イメージは、Nutanix クラスタをまたいで共有することができません。そこで Async DR でのスナップショットのレプリケーションを利用して、Image Service で管理しているすべての vDisk / ISO イメージを、別の Nutanix CE クラスタへコピーしてみました。

今回の構成

コピー元 / コピー先の Nutanix CE バージョンは、どちらも ce-2017.07.20-stable を使用しています。

コピー元クラスタ

  • クラスタ名は ntnx-n01
  • 作業で接続している CVM の IP アドレスは 192.168.1.192
  • 移行先クラスタへの Remote Site 設定ずみ。(Remote Site 名は ntnx-gb)
  • Remote Site でストレージコンテナのマッピングは設定ずみ。

コピー元クラスタでの Rmote Site 設定状態

ncli> remote-site list

    Name                      : ntnx-gb
    Uuid                      : 00055acd-9602-2ed5-7dba-408d5cfb036e
    Capabilities              : disaster_recovery
    Replication Bandwidth     : -
    SSH Tunnel Enabled        : false
    Remote Address(es)        : 192.168.1.230:2020
    Vstore Map                : st-container-01:st-ctr-01
    Proxy Enabled             : false
    Compression               : on
    Bandwidth Policy          : disabled
    Health Status             :
    Status                    : relationship established

コピー先クラスタ

  • クラスタ名は ntnx-gb
  • CVM の IP アドレスは 192.168.1.232
  • クラスタ VIP は 192.168.1.230

手順

ここからは、コピー元 / コピー先 それぞれの CVM に、nutanix ユーザで ssh でログインして作業します。

コピー元 Nutanix クラスタ

Image Service のイメージの一覧を取得しておきます。このイメージをすべてコピー対象にします。

nutanix@NTNX-2a0a73b3-A-CVM:192.168.1.192:~$ acli image.list > all_images.txt
nutanix@NTNX-2a0a73b3-A-CVM:192.168.1.192:~$ cat all_images.txt
Image name             Image type  Image UUID
OracleLinux-R7-U4.iso  kIsoImage   f42e6b78-dad6-4580-8f19-f5f0eecdfb38
db12cR2-otn            kDiskImage  d75eb3a2-1194-409a-9c50-20b7b1fe5c05
img-db02-disk1         kDiskImage  850a494a-57a3-460e-9322-58548bf4f294
img-db02-disk2         kDiskImage  76c173b9-dfc4-4a22-94b8-a51ada4a0b60
img-jbox               kDiskImage  7e0e1924-5e51-421f-ab6d-4ae63b12ef40
ol7-db12cR2-disk0      kDiskImage  85000722-8d78-4aa8-b871-5894597da997
ol7-db12cR2-disk1      kDiskImage  213cfdc3-afd0-4806-b2d0-01e73c869009
ol7-template           kDiskImage  94113ac1-b47b-4755-b758-0c80b412874b
ol74-base              kDiskImage  94046285-7424-4bb3-aceb-b54ccde5c8f4

イメージをコピー先クラスタに運ぶための VM を作成しておきます。今回は、はこぶねではこぶねということです。

nutanix@NTNX-2a0a73b3-A-CVM:192.168.1.192:~$ acli vm.create hakobune01
hakobune01: complete

作成した VM に、コピーするイメージを vDisk として追加します。

  • ISO を CD-ROM 接続にしてしまうとすぐ上限(4つくらい)になってしまうので、ここでは ISO イメージも Typeを vDisk として追加します。
  • コピー先でのイメージ登録をわかりやすくするため、さきに取得した一覧ファイル all_images.txt を使用しています。
  • Warning などがでますが、ここでは気にしません。
nutanix@NTNX-2a0a73b3-A-CVM:192.168.1.192:~$ cat all_images.txt | tail -n +2 | awk '{print $1}' | while read IMG; do acli vm.disk_create hakobune01 clone_from_image=$IMG; done
stty: standard input: Inappropriate ioctl for device
Warning: Couldn't determine terminal width
DiskCreate: pending
DiskCreate: complete
stty: standard input: Inappropriate ioctl for device
Warning: Couldn't determine terminal width
DiskCreate: pending
DiskCreate: complete
stty: standard input: Inappropriate ioctl for device
Warning: Couldn't determine terminal width
DiskCreate: pending
DiskCreate: complete
stty: standard input: Inappropriate ioctl for device
Warning: Couldn't determine terminal width
DiskCreate: pending
DiskCreate: complete
stty: standard input: Inappropriate ioctl for device
Warning: Couldn't determine terminal width
DiskCreate: pending
DiskCreate: complete
stty: standard input: Inappropriate ioctl for device
Warning: Couldn't determine terminal width
DiskCreate: pending
DiskCreate: complete
stty: standard input: Inappropriate ioctl for device
Warning: Couldn't determine terminal width
DiskCreate: pending
DiskCreate: complete
stty: standard input: Inappropriate ioctl for device
Warning: Couldn't determine terminal width
DiskCreate: pending
DiskCreate: complete
stty: standard input: Inappropriate ioctl for device
Warning: Couldn't determine terminal width
DiskCreate: pending
DiskCreate: complete

コマンドラインが見にくいですが、実行したコマンドラインの意味あいは下記のような感じです。

今回のイメージは 9つです。

nutanix@NTNX-2a0a73b3-A-CVM:192.168.1.192:~$ acli vm.disk_list hakobune01
Device bus  Device index
scsi        0
scsi        1
scsi        2
scsi        3
scsi        4
scsi        5
scsi        6
scsi        7
scsi        8

スナップショットを作成するための Protection Domain(PD)を作成します。

nutanix@NTNX-2a0a73b3-A-CVM:192.168.1.192:~$ ncli protection-domain create name=pd-hakobune01

    Protection Domain         : pd-hakobune01
    Active                    : true
    Marked For Removal        : false
    Remote Sites              :
    Schedule Count            : 0
    Next Snapshot Time        :
    Virtual Machine(s)        : 0
    NFS Files                 : 0
    Volume Groups             : 0

PD に VM を追加します。

nutanix@NTNX-2a0a73b3-A-CVM:192.168.1.192:~$ ncli protection-domain protect name=pd-hakobune01 vm-names=hakobune01

    Protection Domain         : pd-hakobune01
    Active                    : true
    Marked For Removal        : false
    Remote Sites              :
    Schedule Count            : 0
    Next Snapshot Time        :
    Virtual Machine(s)        : 1

        VM Id                     : 486eee04-b2d7-4b18-ba59-e4576433f478
        VM Name                   : hakobune01
        Consistency Group         : hakobune01
        Application Consistent... : false
        Power state on recovery   : Power state at time of snapshot

    NFS Files                 : 0

    Volume Groups             : 0

コピー先の Remote Site に PD スナップショットを作成します。(Async DR)

nutanix@NTNX-2a0a73b3-A-CVM:192.168.1.192:~$ ncli protection-domain create-one-time-snapshot name=pd-hakobune01 remote-sites=ntnx-gb
    Action Id                 : 24042
    Start Time                : 10/12/2017 16:42:41 UTC
    Remote Sites              : ntnx-gb
    Snapshot retention (secs) : Forever
    Application Consistent... : false

Image Service のイメージのリストも、何かしらの方法でコピー先 Nutanix クラスタの CVM にコピーしておきます。

nutanix@NTNX-2a0a73b3-A-CVM:192.168.1.192:~$ scp all_images.txt 192.168.1.230:.
FIPS mode initialized
Warning: Permanently added '192.168.1.230' (RSA) to the list of known hosts.
Nutanix Controller VM
nutanix@192.168.1.230's password:
all_images.txt                                                                           100%  740     0.7KB/s   00:00

コピー先 Nutanix クラスタ

しばらく待ってから、コピー先 Nutanix クラスタで PD スナップショットが作成されているか確認します。スナップショットの ID は、レプリ元の名前を含む「ntnx-n10:24078」みたいになります。

nutanix@NTNX-2d52e41a-A-CVM:192.168.1.232:~$ ncli protection-domain list-snapshots name=pd-hakobune01

    Id                        : ntnx-n10:24078
    Uuid                      : 8ddc5fdc-e9be-460e-8200-c98a22dcf76a
    Protection Domain         : pd-hakobune01
    Create Time               : 10/12/2017 17:24:12 UTC
    Expiry Time               : 10/30/2085 20:38:19 UTC
    OOB Schedule IDs          : [24074]
    Virtual Machine(s)        : 1

        VM Id                     : 486eee04-b2d7-4b18-ba59-e4576433f478
        VM Name                   : hakobune01
        Consistency Group         : hakobune01
        Application Consistent... : false
        VM Files                  : [/st-ctr-01/.acropolis/vmdisk/fe43b07a-4041-498f-affa-baf908471bbf, /st-ctr-01/.acropolis/vmdisk/50b29ca4-9008-4c69-95fd-74ca96c9b875, /st-ctr-01/.acropolis/vmdisk/81aecbf4-c468-4eb0-a47b-344192f40f22, /st-ctr-01/.acropolis/vmdisk/aa8870ea-78ea-4d03-8af9-ee6448819a45, /st-ctr-01/.acropolis/vmdisk/cd50bdbd-3443-4c60-ab4f-719a8f8a8c6b, /st-ctr-01/.acropolis/vmdisk/63d435ab-d262-428c-9fe7-07a867b2c32b, /st-ctr-01/.acropolis/vmdisk/ca26f7a7-0ff9-41cb-a211-370164ef92d7, /st-ctr-01/.acropolis/vmdisk/baa669b6-bd47-4297-ad82-eb236ea76fa5, /st-ctr-01/.acropolis/vmdisk/dad00903-0be5-40b0-a06b-07de14b4cfde]
        Power state on recovery   : Powered Off

    NFS Files                 : 0
    Volume Groups             : 0
    Located at Remote Site    : Local
    Snapshot Size             : 0 bytes

PD スナップショットから、VM をリストアします。ローカルでの PD スナップショットのリストアとは異なり、ここも ID 指定は「ntnx-n10:24078」といった形式になります。

nutanix@NTNX-2d52e41a-A-CVM:192.168.1.232:~$ ncli protection-domain restore-snapshot name=pd-hakobune01 snap-id=ntnx-n10:24078

    Status                    : true

VM がリストアされました。VM 名の先頭に「Nutanix-Clone-」がつきます。

nutanix@NTNX-2d52e41a-A-CVM:192.168.1.232:~$ acli vm.list | grep hakobune01
Nutanix-Clone-hakobune01  d0fe12d4-d20e-4877-8627-b69570e6f63c
nutanix@NTNX-2d52e41a-A-CVM:192.168.1.232:~$ acli vm.disk_list Nutanix-Clone-hakobune01
Device bus  Device index
scsi        0
scsi        1
scsi        2
scsi        3
scsi        4
scsi        5
scsi        6
scsi        7
scsi        8

コピー元で取得したイメージ一覧は、コピー先クラスタの CVM にも配置ずみです。

nutanix@NTNX-2d52e41a-A-CVM:192.168.1.232:~$ cat all_images.txt
Image name             Image type  Image UUID
OracleLinux-R7-U4.iso  kIsoImage   f42e6b78-dad6-4580-8f19-f5f0eecdfb38
db12cR2-otn            kDiskImage  d75eb3a2-1194-409a-9c50-20b7b1fe5c05
img-db02-disk1         kDiskImage  850a494a-57a3-460e-9322-58548bf4f294
img-db02-disk2         kDiskImage  76c173b9-dfc4-4a22-94b8-a51ada4a0b60
img-jbox               kDiskImage  7e0e1924-5e51-421f-ab6d-4ae63b12ef40
ol7-db12cR2-disk0      kDiskImage  85000722-8d78-4aa8-b871-5894597da997
ol7-db12cR2-disk1      kDiskImage  213cfdc3-afd0-4806-b2d0-01e73c869009
ol7-template           kDiskImage  94113ac1-b47b-4755-b758-0c80b412874b
ol74-base              kDiskImage  94046285-7424-4bb3-aceb-b54ccde5c8f4

下記のような感じで、VM に接続されている vDisk から Image Service の vDisk / ISO イメージを作成します。

下記のような感じで実行します。Warning が出てますが今回は気にしません。

nutanix@NTNX-2d52e41a-A-CVM:192.168.1.232:~$ VMNAME=Nutanix-Clone-hakobune01
nutanix@NTNX-2d52e41a-A-CVM:192.168.1.232:~$ IMAGELIST=all_images.txt
nutanix@NTNX-2d52e41a-A-CVM:192.168.1.232:~$ N=0
nutanix@NTNX-2d52e41a-A-CVM:192.168.1.232:~$ tail -n +2 $IMAGELIST | while read L
> do
> IMG=`echo $L | awk '{print $1}'`
> TYPE=`echo $L | awk '{print $2}'`
> acli image.create $IMG image_type=$TYPE clone_from_vmdisk=vm:$VMNAME:scsi.$N
> N=`expr $N + 1`
> done
stty: standard input: Inappropriate ioctl for device
Warning: Couldn't determine terminal width
OracleLinux-R7-U4.iso: pending
OracleLinux-R7-U4.iso: complete
stty: standard input: Inappropriate ioctl for device
Warning: Couldn't determine terminal width
db12cR2-otn: pending
db12cR2-otn: complete
stty: standard input: Inappropriate ioctl for device
Warning: Couldn't determine terminal width
img-db02-disk1: pending
img-db02-disk1: complete
stty: standard input: Inappropriate ioctl for device
Warning: Couldn't determine terminal width
img-db02-disk2: pending
img-db02-disk2: complete
stty: standard input: Inappropriate ioctl for device
Warning: Couldn't determine terminal width
img-jbox: pending
img-jbox: complete
stty: standard input: Inappropriate ioctl for device
Warning: Couldn't determine terminal width
ol7-db12cR2-disk0: pending
ol7-db12cR2-disk0: complete
stty: standard input: Inappropriate ioctl for device
Warning: Couldn't determine terminal width
ol7-db12cR2-disk1: pending
ol7-db12cR2-disk1: complete
stty: standard input: Inappropriate ioctl for device
Warning: Couldn't determine terminal width
ol7-template: pending
ol7-template: complete
stty: standard input: Inappropriate ioctl for device
Warning: Couldn't determine terminal width
ol74-base: pending
ol74-base: complete

Image Service に vDisk / ISO イメージが作成されました。今回は、イメージの注釈(annotation)は持ってきてません。

nutanix@NTNX-2d52e41a-A-CVM:192.168.1.232:~$ acli image.list
Image name             Image type  Image UUID
OracleLinux-R7-U4.iso  kIsoImage   6b6060c0-41ad-41fb-bc48-d72ca22a5446
db12cR2-otn            kDiskImage  dd6cd5b6-865b-497e-9e0f-832c7c68d13c
img-db02-disk1         kDiskImage  07a128c2-fc16-43cc-833c-34e487f46c37
img-db02-disk2         kDiskImage  c820bd54-987b-4ccb-b68b-82fe68e1526b
img-jbox               kDiskImage  c80d3711-c5cf-434b-81f2-d2bf3aeb16eb
ol7-db12cR2-disk0      kDiskImage  6f72690f-586c-4887-a4c4-55acbbd87459
ol7-db12cR2-disk1      kDiskImage  b311230b-3b1b-4bf2-aa6e-c151d9c31f89
ol7-template           kDiskImage  d40e6592-4c39-4ab2-8908-0dcee4725d46
ol74-base              kDiskImage  33ed715a-8eee-4e3d-a486-836cbcd6e23d

イメージを作成した後は、途中で使用した VM(hakobune01)や PD などは削除してよいです。

以上。