はじめに
本記事ではOpenShiftへのVirtualizationの導入と仮想マシン作成について記載します。
過去の記事の続きとなるので、事前にONTAPを利用したTridentの設定やStorageClass、 VolumeSnapshotClassは作成済が前提となります。
参考となるベストプラクティスがありますので、詳細はリンク先をご確認下さい。
何をしたい?できる?
- Virtualization機能の導入
- virtctlの導入
- 仮想マシンの作成
記事における環境情報
本記事では、以下の環境で実施した内容となります。
OSやモジュールは以下の構成としています。
- ONTAP 9.18.1
- NetApp Trident 26.02.1
- Windows Server 2025 Hyper-V環境
- Red Hat Enterprise Linux 9.8
- OpenShift 4.21.17
設定手順
設定の流れとしては以下のような形になります。
- OpenShift Virtualizationの導入・設定
- virtctlの導入
- 仮想マシンの作成
1. OpenShift Virtualizationの導入・設定
1-1. Virtualization機能の導入
OpenShiftのGUI画面にアクセスし、左側の[エコシステム]から[ソフトウェアカタログ]をクリック後に表示された画面でOpenShift Virtualizationと入力し、表示される[OpenShift Virtualization]をクリックします。
表示された画面で[インストール]をクリックします。
詳細入力画面についても変更せずに[インストール]をクリックします

Install完了後に、[HyperConvergedの作成]をクリックします。

表示された画面で、設定値は変更せずに画面下方の[作成]をクリックします。

Intallが完了すると、画面左側に仮想化の項目が確認できるようになります。

1-2. デフォルトで使用するStorageClass及びVolumeSnapshotClassの設定
現時点で画面左側の[仮想化]から[カタログ]をクリックしても、[Instance Type]タブ等で"ボリュームが見つかりません"といった表示が確認できます。
StorageClassの設定項目で、デフォルトで使用するStorageClassを指定する事で
仮想マシンのブートに必要なOSイメージを、インターネットから自動でダウンロードし、PVCおよびPVとして追加されるようになります。
画面左側の[ストレージ]から[StorageClasses]を選択し、表示されたStorageClass右側からデフォルトで使用するものを設定します。
本環境ではiSCSI用に作成したStorageClassを選択します。
次に、ベストプラクティスに従って、画面左側の[ストレージ]から[VolumeSnapshotClasses]を選択しアノテーションの編集から、snapshot.kubevirt.io/is-default-virt-classというキーとtrueという値を追加します。

PVやPVCはOSイメージのダウンロード中は確認できますが、最終的にvolumesnapshotのみが見えるようになります
> oc get volumesnapshot -n openshift-virtualization-os-images
NAME READYTOUSE SOURCEPVC SOURCESNAPSHOTCONTENT RESTORESIZE SNAPSHOTCLASS SNAPSHOTCONTENT CREATIONTIME AGE
centos-stream10-9458ef296b0e true centos-stream10-9458ef296b0e 30Gi csi-snapclass snapcontent-f8fd1e34-ac6a-4bef-b598-e6baa06171ab 9m18s 9m19s
centos-stream9-145aa5cda9d9 true centos-stream9-145aa5cda9d9 30Gi csi-snapclass snapcontent-daa57df3-63f1-4c3d-afe1-73661a7c8d5b 9m15s 9m16s
fedora-1217dcc8c58d true fedora-1217dcc8c58d 30Gi csi-snapclass snapcontent-984f23a4-7df4-4e78-939f-2837e5350f5e 9m42s 9m44s
rhel10-c5b97492a6e3 true rhel10-c5b97492a6e3 30Gi csi-snapclass snapcontent-1d0928a8-30be-47ef-8395-6cbff33a237e 7m3s 7m4s
rhel8-c6a08edc555b true rhel8-c6a08edc555b 30Gi csi-snapclass snapcontent-7ce424f3-f683-4e67-8b13-c4d275ef24e0 6m16s 6m16s
rhel9-7005186c23b8 true rhel9-7005186c23b8 30Gi csi-snapclass snapcontent-5d5f5c9e-ae23-46d8-b34c-6acd0b5ae378 7m40s 7m41s
ONTAP側から見てもVolumeやSnaphot、LUNが作成されているのが確認できるようになります。
# StorageClassのデフォルト設定実施前の状態
> vol show -vserver iscsi100
Vserver Volume Aggregate State Type Size Available Used%
--------- ------------ ------------ ---------- ---- ---------- ---------- -----
iscsi100 iscsi100_root
aggr1_node2 online RW 1GB 971.0MB 0%
# StorageClassのデフォルト設定実施後の状態
> vol show -vserver iscsi100
Vserver Volume Aggregate State Type Size Available Used%
--------- ------------ ------------ ---------- ---- ---------- ---------- -----
iscsi100 iscsi100_root aggr1_node2 online RW 1GB 970.9MB 0%
iscsi100 trident_pvc_085e79f3_1506_441e_bcaa_8cbf7b15389b aggr1_node1 online RW 33GB 30.57GB 7%
iscsi100 trident_pvc_374dd127_8048_4040_9390_4ed7973eeda7 aggr1_node2 online RW 33GB 31.36GB 4%
iscsi100 trident_pvc_9c8256be_df59_4f5e_b678_144efc252f68 aggr1_node2 online RW 33GB 30.85GB 6%
iscsi100 trident_pvc_b3cc2a3c_3233_4c2a_8000_4d49fb4cbfd4 aggr1_node1 online RW 33GB 32.39GB 1%
iscsi100 trident_pvc_e5643213_9572_46ad_adde_54543da0afa2 aggr1_node1 online RW 33GB 31.54GB 4%
iscsi100 trident_pvc_f2cdfb66_11fa_4080_bbc7_d72e1646faba aggr1_node2 online RW 33GB 30.88GB 6%
7 entries were displayed.
> lun show -vserver iscsi100 -fields path,ostype,size,mapped
vserver path size ostype mapped
-------- ---------------------------------------------------------- ---- ------ --------
iscsi100 /vol/trident_pvc_085e79f3_1506_441e_bcaa_8cbf7b15389b/lun0 30GB linux unmapped
iscsi100 /vol/trident_pvc_374dd127_8048_4040_9390_4ed7973eeda7/lun0 30GB linux unmapped
iscsi100 /vol/trident_pvc_9c8256be_df59_4f5e_b678_144efc252f68/lun0 30GB linux unmapped
iscsi100 /vol/trident_pvc_b3cc2a3c_3233_4c2a_8000_4d49fb4cbfd4/lun0 30GB linux unmapped
iscsi100 /vol/trident_pvc_e5643213_9572_46ad_adde_54543da0afa2/lun0 30GB linux unmapped
iscsi100 /vol/trident_pvc_f2cdfb66_11fa_4080_bbc7_d72e1646faba/lun0 30GB linux unmapped
6 entries were displayed.
> snapshot show -vserver iscsi100 -volume trident* -fields snapshot,create-time
vserver volume snapshot create-time
-------- ------------------------------------------------ --------------------------------------------- ------------------------
iscsi100 trident_pvc_085e79f3_1506_441e_bcaa_8cbf7b15389b snapshot-f8fd1e34-ac6a-4bef-b598-e6baa06171ab Fri Jun 12 16:03:57 2026
iscsi100 trident_pvc_374dd127_8048_4040_9390_4ed7973eeda7 snapshot-5d5f5c9e-ae23-46d8-b34c-6acd0b5ae378 Fri Jun 12 16:05:35 2026
iscsi100 trident_pvc_9c8256be_df59_4f5e_b678_144efc252f68 snapshot-7ce424f3-f683-4e67-8b13-c4d275ef24e0 Fri Jun 12 16:06:59 2026
iscsi100 trident_pvc_b3cc2a3c_3233_4c2a_8000_4d49fb4cbfd4 snapshot-984f23a4-7df4-4e78-939f-2837e5350f5e Fri Jun 12 16:03:33 2026
iscsi100 trident_pvc_e5643213_9572_46ad_adde_54543da0afa2 snapshot-1d0928a8-30be-47ef-8395-6cbff33a237e Fri Jun 12 16:06:12 2026
iscsi100 trident_pvc_f2cdfb66_11fa_4080_bbc7_d72e1646faba snapshot-daa57df3-63f1-4c3d-afe1-73661a7c8d5b Fri Jun 12 16:04:00 2026
6 entries were displayed.
ダウンロードが完了すると[カタログ]からも[ブート元のボリュームの選択]でLinux系のOSが表示されるようになります。

Storageprofileを確認するとCloneを実施する際にCopyではなくてSnapshotを利用する旨やData Import Cron Source FormatがPVCでは無くsnaoshotの記載が確認できます。
> oc describe storageprofile/ontap-san
Name: ontap-san
Namespace:
(中略)
Spec:
Status:
Claim Property Sets:
Access Modes:
ReadWriteMany
Volume Mode: Block
Clone Strategy: snapshot
Data Import Cron Source Format: snapshot
Provisioner: csi.trident.netapp.io
Snapshot Class: csi-snapclass
Storage Class: ontap-san
Events: <none>
2. virtctlの導入
virtctlは、仮想マシンを管理するKubeVirtおよびOpenShift Virtualizationを操作するための専用CLIツールとなり、コンソール接続(VNC/シリアル)や仮想マシンの起動・停止・ライブマイグレーションなどが実行できるようになります。
2-1. virtctlのダウンロード
画面左側の[仮想化]から[概要]をクリックし、表示された画面右側の[virtctl コマンドラインユーティリティーのダウンロード]をクリックします。

表示された画面下方から踏み台サーバに合わせたものを選択します。
(本記事だと踏み台サーバはRHELで作成しているの)
2-2. tarを展開
踏み台サーバ上でダウンロードしたものを展開します。
# tarファイルの移動
> pwd
/home/user01/ダウンロード
> mv virtctl.tar.gz /home/user01/work/
# tarファイルの展開
> sudo tar -C /usr/local/bin -xvzf virtctl.tar.gz virtctl
virtctl
# CLIが動作する事の確認
> virtctl
Available Commands:
addvolume add a volume to a running VM
adm Administrate KubeVirt configuration.
completion Generate the autocompletion script for the specified shell
console Connect to a console of a virtual machine instance.
create Create a manifest for the specified Kind.
(中略)
# virtctlコマンドの自動補完を有効化(再ログイン後に有効化されます)
> virtctl completion bash > virtctl_bash_completion
> sudo cp virtctl_bash_completion /etc/bash_completion.d/
3. VMの作成
本記事ではFedora VMの作成を実施します。
3-1. テンプレートカタログからの作成
画面左側の[仮想化]から[カタログ]をクリックし、画面情報の[プロジェクト]を選択してから、[テンプレートカタログ]タブを選択し、表示された画面から[Fedora VM]を選択します。
表示された画面下方でVirtualMachine名を管理しやすい名前に変えてから、
[VirtualMachineのカスタマイズ]を選択します。

Disk名の指定やサイズ等の指定を実施します。
(ここでは20GiBで作成)
[StorageClass]はiSCSI用が選択されている事を確認します。

画面下方の[VirtualMachineの作成]を選択します。

VMへの接続はWebコンソールの他に、virtctlを利用する事ができます。
ゲストログイン認証情報はGUIのWebコンソール画面で確認できます。
> virtctl console fedora-001 -n testspace01
Successfully connected to fedora-001 console. Press Ctrl+] or Ctrl+5 to exit console.
fedora-001 login: fedora
Password:
[fedora@fedora-001 ~]$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/vda3 30G 671M 29G 3% /
devtmpfs 889M 0 889M 0% /dev
tmpfs 934M 0 934M 0% /dev/shm
efivarfs 256K 50K 202K 20% /sys/firmware/efi/efivars
tmpfs 374M 756K 373M 1% /run
none 1.0M 0 1.0M 0% /run/credentials/systemd-journald.service
none 1.0M 0 1.0M 0% /run/credentials/systemd-resolved.service
tmpfs 934M 0 934M 0% /tmp
/dev/vda3 30G 671M 29G 3% /boot
/dev/vda3 30G 671M 29G 3% /home
/dev/vda3 30G 671M 29G 3% /var
/dev/vda2 100M 22M 79M 22% /boot/efi
none 1.0M 0 1.0M 0% /run/credentials/getty@tty1.service
none 1.0M 0 1.0M 0% /run/credentials/serial-getty@ttyS0.service
tmpfs 187M 4.0K 187M 1% /run/user/1000
[fedora@fedora-001 ~]$ sudo fdisk -l /dev/vdc
Disk /dev/vdc: 20 GiB, 21474836480 bytes, 41943040 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
3-2. VM作成中及び作成後の状態について
VM作成中にDataVolume (DV) の状態変化を確認すると、以下のようにOS部分のCloneは約4秒程度で完了している事が確認できます。
> oc get dv -w
NAME PHASE PROGRESS RESTARTS AGE
fedora-001 0s
dv-fedora-001-add-disk01-7j97wo 0s
fedora-001 0s
dv-fedora-001-add-disk01-7j97wo 0s
fedora-001 0s
dv-fedora-001-add-disk01-7j97wo Pending 0s
fedora-001 0s
dv-fedora-001-add-disk01-7j97wo Pending N/A 0s
fedora-001 CloneScheduled 0s
fedora-001 CloneScheduled N/A 0s
dv-fedora-001-add-disk01-7j97wo Pending N/A 0s
dv-fedora-001-add-disk01-7j97wo Pending N/A 0s
fedora-001 CloneScheduled N/A 1s
fedora-001 CloneFromSnapshotSourceInProgress N/A 1s
dv-fedora-001-add-disk01-7j97wo Pending N/A 1s
fedora-001 CloneFromSnapshotSourceInProgress N/A 2s
fedora-001 CloneFromSnapshotSourceInProgress N/A 2s
fedora-001 CloneFromSnapshotSourceInProgress N/A 3s
fedora-001 CloneFromSnapshotSourceInProgress N/A 3s
fedora-001 CloneFromSnapshotSourceInProgress N/A 4s
fedora-001 CloneFromSnapshotSourceInProgress N/A 4s
fedora-001 CloneFromSnapshotSourceInProgress N/A 4s
fedora-001 Succeeded 100.0% 4s
fedora-001 Succeeded 100.0% 4s
dv-fedora-001-add-disk01-7j97wo ImportScheduled N/A 6s
dv-fedora-001-add-disk01-7j97wo ImportScheduled N/A 6s
dv-fedora-001-add-disk01-7j97wo ImportScheduled N/A 6s
dv-fedora-001-add-disk01-7j97wo ImportInProgress N/A 10s
dv-fedora-001-add-disk01-7j97wo ImportInProgress N/A 12s
dv-fedora-001-add-disk01-7j97wo Succeeded 100.0% 13s
dv-fedora-001-add-disk01-7j97wo Succeeded 100.0% 13s
dv-fedora-001-add-disk01-7j97wo Succeeded 100.0% 14s
VM作成後はPCやPVCが以下のように確認できます。
> oc get vm -n testspace01
NAME AGE STATUS READY
fedora-001 26m Running True
> oc get pv
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS VOLUMEATTRIBUTESCLASS REASON AGE
pvc-2fe674b7-6e78-47a6-bb97-b3b37c2804fb 20Gi RWX Delete Bound testspace01/dv-fedora-001-add-disk01-7j97wo ontap-san <unset> 26m
pvc-c274c48b-2028-4531-a759-43156791e403 30Gi RWX Delete Bound testspace01/fedora-001 ontap-san <unset> 26m
> oc get pvc -n testspace01
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS VOLUMEATTRIBUTESCLASS AGE
dv-fedora-001-add-disk01-7j97wo Bound pvc-2fe674b7-6e78-47a6-bb97-b3b37c2804fb 20Gi RWX ontap-san <unset> 27m
fedora-001 Bound pvc-c274c48b-2028-4531-a759-43156791e403 30Gi RWX ontap-san <unset> 27m
ONTAP側からは以下のようにOS ImageがDownLoadされた際に作成されたSnapshotからCloneが利用されている旨が確認できます。(VM作成完了時間は2026/06/16 14:29)
> lun show -mapped mapped -vserver iscsi100
Vserver Path State Mapped Type Size
--------- ------------------------------- ------- -------- -------- --------
iscsi100 /vol/trident_pvc_2fe674b7_6e78_47a6_bb97_b3b37c2804fb/lun0
online mapped linux 20GB
iscsi100 /vol/trident_pvc_c274c48b_2028_4531_a759_43156791e403/lun0
online mapped linux 30GB
2 entries were displayed.
> volume clone show -vserver iscsi100 -flexclone trident_pvc_c274c48b_2028_4531_a759_43156791e403
Vserver Name: iscsi100
FlexClone Volume: trident_pvc_c274c48b_2028_4531_a759_43156791e403
FlexClone Type: RW
FlexClone Parent Vserver: iscsi100
FlexClone Parent Volume: trident_pvc_b3cc2a3c_3233_4c2a_8000_4d49fb4cbfd4
FlexClone Parent Snapshot: snapshot-984f23a4-7df4-4e78-939f-2837e5350f5e
FlexClone Volume State: online
Junction Path: -
Junction Active: -
Space Guarantee Style: none
Space Guarantee In Effect: true
FlexClone Aggregate: aggr1_node1
FlexClone Data Set ID: 1127
FlexClone Master Data Set ID: 2155667793
FlexClone Size: 33GB
Used Size: 722.4MB
Split Estimate: 622.9MB
Blocks Scanned: -
Blocks Updated: -
Comment: {"provisioning":{"svm":"iscsi100"}}
(中略)
> volume snapshot show -vserver iscsi100 -volume trident_pvc_b3cc2a3c_3233_4c2a_8000_4d49fb4cbfd4 -fields create-time
vserver volume snapshot create-time
-------- ------------------------------------------------ --------------------------------------------- ------------------------
iscsi100 trident_pvc_b3cc2a3c_3233_4c2a_8000_4d49fb4cbfd4 snapshot-984f23a4-7df4-4e78-939f-2837e5350f5e Fri Jun 12 16:03:33 2026
参考及びリンク
Demystifying Clone Strategy in Storage Profile and its relationship with Trident Storage Class
ONTAPを使用したRed Hat OpenShift Virtualizationの導入
Red Hat OpenShift Virtualization を使用してONTAPストレージ上に VM を作成する
OpenShift VirtualizationでTrident + ONTAP利用①【OpenShiftのInstall】
OpenShift VirtualizationでTrident + ONTAP利用②【OpenShifを構築し、iSCSI Storage用の作成とTrident の導入】












