NTNX>日記

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

Nutanix CE の PD スナップショットの 個別 vDisk リストア。

Nutanix CE で Protection Domain(PD)のスナップショットから、特定の vDisk だけ取り出してみました。

今回の概要

今回は、下記のようなシンプルな PD 構成にしています。
PD には、VM(VGではない、ただの vDisk が 2つ接続されている)が1つだけ含まれています。

f:id:gowatana:20170926235421p:plain

PD でスナップショットを作成してあります。

f:id:gowatana:20170927003643p:plain

ただ、VM は複数 vDisk をもっていますが、 スナップショットから特定の vDisk だけストレートに元 VM に戻すことはできなそうです。

f:id:gowatana:20170927003705p:plain

そこで、PD スナップショットのリストアで別の VM を作成して、その vDisk (の複製)を元 VM に接続してみます。

f:id:gowatana:20170927003840p:plain

今回の実機環境

Nutanix CE は、今回も ce-2017.07.20-stable です。
Nutanix CE 上の VM は Oracle Linux で、vDisk は 2 つ接続されています。

[root@vm03 ~]# cat /etc/oracle-release
Oracle Linux Server release 7.4
[root@vm03 ~]# lsscsi
[0:0:0:0]    cd/dvd  QEMU     QEMU DVD-ROM     2.3.  /dev/sr0
[2:0:0:0]    disk    NUTANIX  VDISK            0     /dev/sda
[2:0:1:0]    disk    NUTANIX  VDISK            0     /dev/sdb

今回は、/data にマウントされている /dev/sdb にあたる vDisk を、PD スナップショットから戻してみます。ちなみに今回のファイルシステムは ext4 にしてあります。

[root@vm03 ~]# df -h /data/
ファイルシス   サイズ  使用  残り 使用% マウント位置
/dev/sdb1        4.8G   20M  4.6G    1% /data
[root@vm03 ~]# blkid /dev/sdb1
/dev/sdb1: UUID="949920ba-a92f-4d74-ad7d-cfb13552b466" TYPE="ext4"

この vDisk には、下記のようなテキストファイルが保存されています。

[root@vm03 ~]# cat /data/test.txt
yo solo !

PD スナップショットは、下記のように作成してあります。今回は Prism ではなく ncli コマンドから作成してみました。

nutanix@NTNX-2a0a73b3-A-CVM:192.168.1.192:~$ ncli protection-domain create-one-time-snapshot name=pd-vm03
    Action Id                 : 3811
    Start Time                : 09/26/2017 14:15:26 UTC
    Remote Sites              :
    Snapshot retention (secs) : Forever
    Application Consistent... : false

スナップショットを Prism でも見ておきます。

pd-vm03 という PD のスナップショット(ID = 3815)が作成されていて、vm03 という VM だけが含まれています。

f:id:gowatana:20170927003122p:plain

PD スナップショットのリストア

ncli / acli コマンドでリストアしてみます。
まず、ncli で PD スナップショットを VM としてリストアします。

nutanix@NTNX-2a0a73b3-A-CVM:192.168.1.192:~$ ncli protection-domain restore-snapshot name=pd-vm03 snap-id=3815 vm-names=vm0
3 vm-name-prefix=restore-

    Status                    : true

VMが作成されました。

nutanix@NTNX-2a0a73b3-A-CVM:192.168.1.192:~$ ncli vm list | grep restore-vm03
    Name                      : restore-vm03

VMのリストは、acli でも確認できます。これ以降は acli を使用します。
スナップショット作成元の vm03 と、リストアで作成された restore-vm03 は別の VM になります。

nutanix@NTNX-2a0a73b3-A-CVM:192.168.1.192:~$ acli vm.list | grep vm03
restore-vm03  03ba960a-c94f-44cd-82bc-dd11e7df30c2
vm03          cda41f45-e434-4c90-9a00-64955484da5e

vm03 と restore-vm03 は、どちらも vDisk を2つ持っています。

nutanix@NTNX-2a0a73b3-A-CVM:192.168.1.192:~$ acli vm.disk_list vm03
Device bus  Device index
ide         0
scsi        0
scsi        1
nutanix@NTNX-2a0a73b3-A-CVM:192.168.1.192:~$ acli vm.disk_list restore-vm03
Device bus  Device index
ide         0
scsi        0
scsi        1

vDisk 複製&接続します。restore-vm03 の vDisk(scsi.1 なので 2番目の vDisk。ゲスト OSから見ると /dev/sdb に見えていたもの)をもとに、vm03 にディスクを追加します。vm03 には、3つ目の vDisk(scsi.2)が作成されます。

-2a0a73b3-A-CVM:192.168.1.192:~$ acli vm.disk_create vm03 clone_from_vmdisk=vm:restore-vm03:scsi.1 bus=scsi
DiskCreate: pending
DiskCreate: complete
nutanix@NTNX-2a0a73b3-A-CVM:192.168.1.192:~$ acli vm.disk_list vm03
Device bus  Device index
ide         0
scsi        0
scsi        1
scsi        2

ゲスト OS でも、追加した vDisk が /dev/sdc として認識されています。

[root@vm03 ~]# lsscsi
[0:0:0:0]    cd/dvd  QEMU     QEMU DVD-ROM     2.3.  /dev/sr0
[2:0:0:0]    disk    NUTANIX  VDISK            0     /dev/sda
[2:0:1:0]    disk    NUTANIX  VDISK            0     /dev/sdb
[2:0:2:0]    disk    NUTANIX  VDISK            0     /dev/sdc

/dev/sdc1 を /mnt にマウントすると、スナップショットから戻した vDisk なので元のディスクと同様のテキストファイルが格納されています。

[root@vm03 ~]# mount /dev/sdc1 /mnt
[root@vm03 ~]# df -h /data /mnt
ファイルシス   サイズ  使用  残り 使用% マウント位置
/dev/sdb1        4.8G   20M  4.6G    1% /data
/dev/sdc1        4.8G   20M  4.6G    1% /mnt
[root@vm03 ~]# cat /mnt/test.txt
yo solo !

ちなみに、今回は基本パーティション上に ext4 ファイルシステムを作成しているので複製した vDisk をそのままマウントできていますが、LVM や xfs の場合は UUID 重複となるので もと複雑な話になります。

以上。