NTNX>日記

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

Nutanix AHV の仮想マシンで vDisk を独立管理する。(Image Service 編)

Nutanix AHV 上の仮想マシンに作成される vDisk は、基本的には仮想マシンに紐づけられて管理されます。しかし、仮想マシン間でのデータ受け渡しなどで vDisk を独立させて管理したいことがあります。

AHV で vDisk を独立管理するには、次の方法が考えられます。

  1. イメージ サービスを利用する(今回の方法)
  2. ボリューム グループを利用する

今回は仮想マシンの vDisk を、イメージ サービスで管理してみます。

ちなみに vDisk を管理するつもりがなければ、acli を利用して、仮想マシンの vDisk を別の仮想マシンに直接クローンすることもできます。
(acli vm.disk_create <VM 名> clone_from_vmdisk=vm:~)

今回の内容です。

イメージ サービスでの vDisk 管理

AHV では、ISO イメージ ファイルやディスク イメージ ファイルを、イメージ サービスに登録して管理します。

今回の作業の流れです。

  1. 既存の仮想マシンに作成されている vDisk から、イメージ サービスにディスクイメージを作成する。
  2. そのディスク イメージから、別の仮想マシンに vDisk を作成する。

どちらの処理も、内部的には Nutanix 分散ストレージ ファブリックのクローンが利用されるため数秒で完了するはずです。

今回の環境

Nutanix

Nutanix CE 2020.09.16 を利用していますが、どのバージョンの Nutanix AHV 環境でも利用できるはずです。

仮想マシン

test-vm-01 と test-vm-02 という仮想マシンを作成してあります。

test-vm-01 には、vDisk(Virtual Disks)が 2つ作成されています。

このうち、2つ目の vDisk(scsi.1 の 10GiB)をイメージ サービスに登録して、別の仮想マシン(test-vm-02)に追加してみます。

仮想マシンの Update 画面では、下記のようになっています。

ゲスト OS

ゲスト OS は、Oracle Linux 8 です。

[root@test-vm-01 ~]# cat /etc/system-release
Oracle Linux Server release 8.7
[root@test-vm-01 ~]# cat /etc/redhat-release
Red Hat Enterprise Linux release 8.7 (Ootpa)

2つ目の vDisk は /dev/sdb として認識されています。

[root@test-vm-01 ~]# lsscsi --device
[0:0:0:0]    cd/dvd  QEMU     QEMU DVD-ROM     2.5+  /dev/sr0 [11:0]
[2:0:0:0]    disk    NUTANIX  VDISK            0     /dev/sda [8:0]
[2:0:1:0]    disk    NUTANIX  VDISK            0     /dev/sdb [8:16]

そして /dev/sdb1 パーティションに XFS ファイルシステムを作成して、/data にマウントしてあります。

[root@test-vm-01 ~]# LANG=C lsblk --fs
NAME        FSTYPE      LABEL UUID                                   MOUNTPOINT
sda
|-sda1      xfs               cac092f3-ea45-4c92-9106-9b1b08f41b50   /boot
`-sda2      LVM2_member       gcXFmM-AcLo-1bVG-ODrZ-uXf0-aT6M-76VTbP
  |-ol-root xfs               a42dce62-ea82-4208-8880-a27d0a7cfd33   /
  `-ol-swap swap              770cf284-5e18-42a6-8e28-988517f45bf3   [SWAP]
sdb
`-sdb1      xfs               8d0db49b-b8d6-4219-943b-96b7aa2b7485   /data
sr0

df コマンドで XFS ファイルシステムのみを確認すると下記のようになっています。

[root@test-vm-01 ~]# df -t xfs -h
ファイルシス        サイズ  使用  残り 使用% マウント位置
/dev/mapper/ol-root    17G  2.5G   15G   15% /
/dev/sda1            1014M  373M  642M   37% /boot
/dev/sdb1              10G  104M  9.9G    2% /data

/data ディレクトリ配下には、test.txt というファイルを保存してあります。

[root@test-vm-01 ~]# ls -l /data/
合計 4
-rw-r--r--. 1 root root 5  2月 11 06:09 test.txt
[root@test-vm-01 ~]# cat /data/test.txt
test

仮想マシン vDisk からイメージ サービスへの ディスク イメージの作成

イメージ サービスに既存の仮想マシンの vDisk からイメージを作成するには、acli を利用します。CVM にログインして、acli.image create コマンドを実行します。今回は仮想マシンを起動したまま実行していますが、可能ならば停止して実行するとよいかなと思います。

CVM$ acli image.create disk-img-01 image_type=kDiskImage clone_from_vmdisk=vm:test-vm-01:scsi.1
disk-img-01: pending
disk-img-01: complete

ディスク イメージが作成されことは、acli image.get コマンドで確認できます。

CVM$ acli image.get disk-img-01
disk-img-01 {
  architecture: "kX86_64"
  container_id: 6333
  container_uuid: "25d58e3b-32d9-4766-867f-cc8a9d76041a"
  create_time: "Saturday February 11 2023, 02:12:57 PM"
  file_uuid: "7542d40e-a09d-426f-9f89-438e76389fe0"
  image_source {
    source_vmdisk_uuid: "84f218d4-2f81-4f83-a236-0e9eb9d2ffb2"
  }
  image_state: "kActive"
  image_type: "kDiskImage"
  logical_timestamp: 0
  name: "disk-img-01"
  owner_cluster_uuid: "0005bcc8-1ddc-c8ba-37dd-1c697a630d37"
  update_time: "Saturday February 11 2023, 02:12:57 PM"
  uuid: "879831c9-cfdd-4f16-89b2-42cc0d555cdf"
  vmdisk_size: 10737418240
  vmdisk_uuid: "2c3532f6-4721-4e67-a929-14e09769870c"
}

Prism では、「設定」→「イメージ設定」で確認できます。

イメージ サービスから仮想マシンへの vDisk 作成

仮想マシンに、acli vm.disk_create でイメージ サービスから vDisk を作成できます。この処理も、実際には vDisk のクローンが実行されます。

CVM$ acli vm.disk_create test-vm-02 clone_from_image=disk-img-01
DiskCreate: pending
DiskCreate: complete

イメージ サービスに登録されているディスク イメージは、Prism でも仮想マシンの Update 画面からでも追加できます。

ファイルシステムのマウント

test-vm-02 の ゲスト OS に SSH などでログインすると、/dev/sdb1 として認識されています。

[root@test-vm-02 ~]# LANG=C lsblk --fs
NAME        FSTYPE      LABEL UUID                                   MOUNTPOINT
sda
|-sda1      xfs               cac092f3-ea45-4c92-9106-9b1b08f41b50   /boot
`-sda2      LVM2_member       gcXFmM-AcLo-1bVG-ODrZ-uXf0-aT6M-76VTbP
  |-ol-root xfs               a42dce62-ea82-4208-8880-a27d0a7cfd33   /
  `-ol-swap swap              770cf284-5e18-42a6-8e28-988517f45bf3   [SWAP]
sdb
`-sdb1      xfs               8d0db49b-b8d6-4219-943b-96b7aa2b7485
sr0

/dev/sdb1 をマウントしてみると、test-vm-01 の /data ディレクトリで保存してあったファイルが存在します。

[root@test-vm-02 ~]# mkdir /work
[root@test-vm-02 ~]# mount /dev/sdb1 /work/
[root@test-vm-02 ~]# ls /work/
test.txt
[root@test-vm-02 ~]# cat /work/test.txt
test

おまけ

仮想マシン vDisk からイメージ サービスを作成する手順は、下記のようにスクリプト化できたりします。

以上。

©2023 gowatana
クリエイティブ・コモンズ・ライセンスこの 作品 は クリエイティブ・コモンズ 表示 4.0 国際 ライセンスの下に提供されています。