Nutanix AHV 上の仮想マシンに作成される vDisk は、基本的には仮想マシンに紐づけられて管理されます。しかし、仮想マシン間でのデータ受け渡しなどで vDisk を独立させて管理したいことがあります。
AHV で vDisk を独立管理するには、次の方法が考えられます。
- イメージ サービスを利用する(今回の方法)
- ボリューム グループを利用する
今回は仮想マシンの vDisk を、イメージ サービスで管理してみます。
ちなみに vDisk を管理するつもりがなければ、acli を利用して、仮想マシンの vDisk を別の仮想マシンに直接クローンすることもできます。
(acli vm.disk_create <VM 名> clone_from_vmdisk=vm:~)
今回の内容です。
- イメージ サービスでの vDisk 管理
- 今回の環境
- 仮想マシン vDisk からイメージ サービスへの ディスク イメージの作成
- イメージ サービスから仮想マシンへの vDisk 作成
- ファイルシステムのマウント
- おまけ
イメージ サービスでの vDisk 管理
AHV では、ISO イメージ ファイルやディスク イメージ ファイルを、イメージ サービスに登録して管理します。
今回の作業の流れです。
- 既存の仮想マシンに作成されている vDisk から、イメージ サービスにディスクイメージを作成する。
- そのディスク イメージから、別の仮想マシンに 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 からイメージ サービスを作成する手順は、下記のようにスクリプト化できたりします。
以上。