HPE Morpheus VM Essentials / HVM が Ubuntu 24.04 ベースにも対応するも別環境として構築必須

しれっとドキュメントが更新されているので気が付きにくいのですが、Ubuntu 22.04 LTSベースだった HPE Morpheus VM Essentials / HVM が v8.0.5 からUbuntu 24.04 LTS ベースに対応しています。

ただ、クラスターに登録する際のインタフェースを見る限りでは、Ubuntu 22.04ベースはHPE VM 1.1クラスタ、Ubuntu 24.04ベースは HPE VM 1.2クラスタと分割する必要があるようです。(2025年5月末時点でのドキュメントには、そもそもクラスタのバージョンについて書かれていませんが・・・)

現状運用しているUbuntu 22.04ベースのHPE VM 1.1クラスタをUbuntu 24.04ベースのHPE VM 1.2クラスタにアップデートすることについての記述がないので、継続運用性に若干疑問が・・・

HPE VMEssentialsでNVIDIA vGPUは使えるか?

HPE VMEssentials環境でNVIDIA vGPUが使えるか試してみたところ、libvirtを直接操作することで仮想マシンにvGPUの割り当てが行えることを確認した。

ただし、HPE VMEssentialsで管理していると思われる仮想マシンのXML形式の設定ファイルと、virsh dumpxml で取得できるXML形式の設定ファイルの内容は別物になっていて、HPE Web UIで設定変更するとvirshで直接編集した結果は破棄されてしまうので注意が必要

仮想マシンの起動/停止レベルであれば問題ないが、設定変更はダメだった

HPE VMEssentialsのGUIでパススルー設定をして仮想マシンに割り当てるという設定も可能ではあるのだが、パススルー設定できるデバイスでvGPUデバイスが選択できない状態だった。つまりは、NVIDIA vGPUドライバを入れずに仮想マシンから直接GPU全体を割り当てる、といった使い方しかできない。

HPE VMessentials側の設定:下地作り

パススルーする際に必要となるIOMMU関連設定は、hpe-vm v8.0.5.1では設定実施済みとなっていた。

必要なのはLinux標準のnouveauドライバを使用しないようにするための blacklist.conf 設定だった

実施後、nvidia vGPU のうちUbuntu版の nvidia-vgpu-ubuntu-570_570.133.10_amd64.deb をインストールして対応完了

Secure Boot有効の場合はUEFIへのキー埋め込みも行ってくれた。

また、sriov-manager -e ALL を実行して、GPUを分割されるか確認

pcuser@vgpuserver:~$ lspci -d 10de: -nnk
08:00.0 3D controller [0302]: NVIDIA Corporation GA107GL [A2 / A16] [10de:25b6] (rev a1)
        Subsystem: NVIDIA Corporation Device [10de:157e]
        Kernel driver in use: nouveau
        Kernel modules: nvidiafb, nouveau, nvidia_vgpu_vfio, nvidia
root@vgpuserver:~# /usr/lib/nvidia/sriov-manage -e ALL
Enabling VFs on 0000:08:00.0
/usr/lib/nvidia/sriov-manage: line 148: /sys/bus/pci/drivers/nvidia/bind: No such file or directory
/usr/lib/nvidia/sriov-manage: line 148: /sys/bus/pci/drivers/nvidia/bind: No such file or directory
/usr/lib/nvidia/sriov-manage: line 148: /sys/bus/pci/drivers/nvidia/bind: No such file or directory
/usr/lib/nvidia/sriov-manage: line 148: /sys/bus/pci/drivers/nvidia/bind: No such file or directory
/usr/lib/nvidia/sriov-manage: line 148: /sys/bus/pci/drivers/nvidia/bind: No such file or directory
/usr/lib/nvidia/sriov-manage: line 148: /sys/bus/pci/drivers/nvidia/bind: No such file or directory
/usr/lib/nvidia/sriov-manage: line 148: /sys/bus/pci/drivers/nvidia/bind: No such file or directory
/usr/lib/nvidia/sriov-manage: line 148: /sys/bus/pci/drivers/nvidia/bind: No such file or directory
/usr/lib/nvidia/sriov-manage: line 148: /sys/bus/pci/drivers/nvidia/bind: No such file or directory
/usr/lib/nvidia/sriov-manage: line 148: /sys/bus/pci/drivers/nvidia/bind: No such file or directory
/usr/lib/nvidia/sriov-manage: line 148: /sys/bus/pci/drivers/nvidia/bind: No such file or directory
/usr/lib/nvidia/sriov-manage: line 148: /sys/bus/pci/drivers/nvidia/bind: No such file or directory
/usr/lib/nvidia/sriov-manage: line 148: /sys/bus/pci/drivers/nvidia/bind: No such file or directory
/usr/lib/nvidia/sriov-manage: line 148: /sys/bus/pci/drivers/nvidia/bind: No such file or directory
/usr/lib/nvidia/sriov-manage: line 148: /sys/bus/pci/drivers/nvidia/bind: No such file or directory
/usr/lib/nvidia/sriov-manage: line 148: /sys/bus/pci/drivers/nvidia/bind: No such file or directory
/usr/lib/nvidia/sriov-manage: line 90: /sys/bus/pci/drivers/nvidia/bind: No such file or directory
root@vgpuserver:~# lspci -d 10de:
08:00.0 3D controller: NVIDIA Corporation GA107GL [A2 / A16] (rev a1)
08:00.4 3D controller: NVIDIA Corporation GA107GL [A2 / A16] (rev a1)
08:00.5 3D controller: NVIDIA Corporation GA107GL [A2 / A16] (rev a1)
08:00.6 3D controller: NVIDIA Corporation GA107GL [A2 / A16] (rev a1)
08:00.7 3D controller: NVIDIA Corporation GA107GL [A2 / A16] (rev a1)
08:01.0 3D controller: NVIDIA Corporation GA107GL [A2 / A16] (rev a1)
08:01.1 3D controller: NVIDIA Corporation GA107GL [A2 / A16] (rev a1)
08:01.2 3D controller: NVIDIA Corporation GA107GL [A2 / A16] (rev a1)
08:01.3 3D controller: NVIDIA Corporation GA107GL [A2 / A16] (rev a1)
08:01.4 3D controller: NVIDIA Corporation GA107GL [A2 / A16] (rev a1)
08:01.5 3D controller: NVIDIA Corporation GA107GL [A2 / A16] (rev a1)
08:01.6 3D controller: NVIDIA Corporation GA107GL [A2 / A16] (rev a1)
08:01.7 3D controller: NVIDIA Corporation GA107GL [A2 / A16] (rev a1)
08:02.0 3D controller: NVIDIA Corporation GA107GL [A2 / A16] (rev a1)
08:02.1 3D controller: NVIDIA Corporation GA107GL [A2 / A16] (rev a1)
08:02.2 3D controller: NVIDIA Corporation GA107GL [A2 / A16] (rev a1)
08:02.3 3D controller: NVIDIA Corporation GA107GL [A2 / A16] (rev a1)
root@vgpuserver:~#


分割されるようであれば、これが起動時に実行されるよう/usr/local/lib/systemd/system/nvidia-sriov.service を作成し、起動する

root@vgpuserver:~# mkdir -p /usr/local/lib/systemd/system
root@vgpuserver:~# vi /usr/local/lib/systemd/system/nvidia-sriov.service
root@vgpuserver:~# cat /usr/local/lib/systemd/system/nvidia-sriov.service
[Unit]
Description=Enable NVIDIA SR-IOV
Before=pve-guests.service nvidia-vgpud.service nvidia-vgpu-mgr.service

[Service]
Type=oneshot
ExecStart=/usr/lib/nvidia/sriov-manage -e ALL

[Install]
WantedBy=multi-user.target
root@vgpuserver:~# systemctl  daemon-reload
root@vgpuserver:~# systemctl status nvidia-sriov.service
○ nvidia-sriov.service - Enable NVIDIA SR-IOV
     Loaded: loaded (/usr/local/lib/systemd/system/nvidia-sriov.service; disabled; vendor preset: enabled)
     Active: inactive (dead)
root@vgpuserver:~# systemctl enable --now nvidia-sriov.service
Created symlink /etc/systemd/system/multi-user.target.wants/nvidia-sriov.service → /usr/local/lib/systemd/system/nvidia-sriov.service.
root@vgpuserver:~# systemctl status nvidia-sriov.service
○ nvidia-sriov.service - Enable NVIDIA SR-IOV
     Loaded: loaded (/usr/local/lib/systemd/system/nvidia-sriov.service; enabled; vendor preset: enabled)
     Active: inactive (dead) since Thu 2025-05-22 18:08:35 JST; 1s ago
    Process: 2853 ExecStart=/usr/lib/nvidia/sriov-manage -e ALL (code=exited, status=0/SUCCESS)
   Main PID: 2853 (code=exited, status=0/SUCCESS)
        CPU: 44ms

May 22 18:08:35 vgpuserver systemd[1]: Starting Enable NVIDIA SR-IOV...
May 22 18:08:35 vgpuserver sriov-manage[2857]: GPU at 0000:08:00.0 already has VFs enabled.
May 22 18:08:35 vgpuserver systemd[1]: nvidia-sriov.service: Deactivated successfully.
May 22 18:08:35 vgpuserver systemd[1]: Finished Enable NVIDIA SR-IOV.
root@vgpuserver:~#

再起動してnvidia-smiが動くか確認


pcuser@vgpuserver:~$ nvidia-smi
Tue May 27 15:39:51 2025
+-----------------------------------------------------------------------------------------+
| NVIDIA-SMI 570.133.10             Driver Version: 570.133.10     CUDA Version: N/A      |
|-----------------------------------------+------------------------+----------------------+
| GPU  Name                 Persistence-M | Bus-Id          Disp.A | Volatile Uncorr. ECC |
| Fan  Temp   Perf          Pwr:Usage/Cap |           Memory-Usage | GPU-Util  Compute M. |
|                                         |                        |               MIG M. |
|=========================================+========================+======================|
|   0  NVIDIA A2                      On  |   00000000:08:00.0 Off |                  Off |
|  0%   50C    P8              9W /   60W |       0MiB /  16380MiB |      0%      Default |
|                                         |                        |                  N/A |
+-----------------------------------------+------------------------+----------------------+

+-----------------------------------------------------------------------------------------+
| Processes:                                                                              |
|  GPU   GI   CI              PID   Type   Process name                        GPU Memory |
|        ID   ID                                                               Usage      |
|=========================================================================================|
|  No running processes found                                                             |
+-----------------------------------------------------------------------------------------+
pcuser@vgpuserver:~$ 

HPE VMessentials側の設定:libvirtいじり

v8.0.5時点ではHVM経由ではvGPU割り当てができないので、libvirtを直接いじってvGPUを仮想マシンに割り当てる必要がある

参考になるドキュメントは「Configuring the vGPU Manager for a Linux with KVM Hypervisor

まず、このデバイスがサポートしている”nvidia-3桁数字”という書式のデバイス種別を確認するため「mdevctl types」を実行。また、同時に「0000:08:00.4」といった形でPCIデバイスのアドレスを確認

root@vgpuserver:~# mdevctl types
0000:08:00.4
  nvidia-742
    Available instances: 1
    Device API: vfio-pci
    Name: NVIDIA A2-1B
    Description: num_heads=4, frl_config=45, framebuffer=1024M, max_resolution=5120x2880, max_instance=16
  nvidia-743
    Available instances: 1
    Device API: vfio-pci
    Name: NVIDIA A2-2B
    Description: num_heads=4, frl_config=45, framebuffer=2048M, max_resolution=5120x2880, max_instance=8
  nvidia-744
    Available instances: 1
    Device API: vfio-pci
    Name: NVIDIA A2-1Q
    Description: num_heads=4, frl_config=60, framebuffer=1024M, max_resolution=5120x2880, max_instance=16
  nvidia-745
    Available instances: 1
    Device API: vfio-pci
    Name: NVIDIA A2-2Q
    Description: num_heads=4, frl_config=60, framebuffer=2048M, max_resolution=7680x4320, max_instance=8
  nvidia-746
    Available instances: 1
    Device API: vfio-pci
    Name: NVIDIA A2-4Q
    Description: num_heads=4, frl_config=60, framebuffer=4096M, max_resolution=7680x4320, max_instance=4
  nvidia-747
    Available instances: 1
    Device API: vfio-pci
    Name: NVIDIA A2-8Q
    Description: num_heads=4, frl_config=60, framebuffer=8192M, max_resolution=7680x4320, max_instance=2
  nvidia-748
    Available instances: 1
    Device API: vfio-pci
    Name: NVIDIA A2-16Q
    Description: num_heads=4, frl_config=60, framebuffer=16384M, max_resolution=7680x4320, max_instance=1
  nvidia-749
    Available instances: 1
    Device API: vfio-pci
    Name: NVIDIA A2-1A
    Description: num_heads=1, frl_config=60, framebuffer=1024M, max_resolution=1280x1024, max_instance=16
  nvidia-750
    Available instances: 1
    Device API: vfio-pci
    Name: NVIDIA A2-2A
    Description: num_heads=1, frl_config=60, framebuffer=2048M, max_resolution=1280x1024, max_instance=8
  nvidia-751
    Available instances: 1
    Device API: vfio-pci
    Name: NVIDIA A2-4A
    Description: num_heads=1, frl_config=60, framebuffer=4096M, max_resolution=1280x1024, max_instance=4
  nvidia-752
    Available instances: 1
    Device API: vfio-pci
    Name: NVIDIA A2-8A
    Description: num_heads=1, frl_config=60, framebuffer=8192M, max_resolution=1280x1024, max_instance=2
  nvidia-753
    Available instances: 1
    Device API: vfio-pci
    Name: NVIDIA A2-16A
    Description: num_heads=1, frl_config=60, framebuffer=16384M, max_resolution=1280x1024, max_instance=1
<略>
  nvidia-753
    Available instances: 1
    Device API: vfio-pci
    Name: NVIDIA A2-16A
    Description: num_heads=1, frl_config=60, framebuffer=16384M, max_resolution=1280x1024, max_instance=1
root@vgpuserver:~#

vGPUでCUDAを使う場合はA2-?Q デバイスあたりを使う

0000:08:00.4にある RAM2GBのA2-2Q の nvidia-745 で定義を作成する

まず「0000:08:00.4」をlibvirtで使用するデバイスIDに変換するためvirsh nodedev-listコマンドで確認する

root@vgpuserver:~# virsh nodedev-list --cap pci|grep 08_00_4
pci_0000_08_00_4
root@vgpuserver:~# 

「pci_0000_08_00_4」の「nvidia-745」が定義ファイルで使う値となる

また、定義ごとに一意のUUIDが必要になるので「uuidgen」コマンドを実行して値を確認してファイルを作成する

root@vgpuserver:~# uuidgen
73f353e8-7da8-4b76-8182-04c5a1415dec
root@vgpuserver:~# vi vgpu-test.xml
root@vgpuserver:~# cat vgpu-test.xml
<device>
    <parent>pci_0000_08_00_4</parent>
    <capability type="mdev">
        <type id="nvidia-745"/>
        <uuid>73f353e8-7da8-4b76-8182-04c5a1415dec</uuid>
    </capability>
</device>
root@vgpuserver:~#

作成したファイルをnodedevとして登録する

root@vgpuserver:~# virsh nodedev-define vgpu-test2.xml
Node device 'mdev_73f353e8_7da8_4b76_8182_04c5a1415dec_0000_08_00_4' defined from 'vgpu-test2.xml'

root@vgpuserver:~# virsh nodedev-list --cap mdev --inactive
mdev_73f353e8_7da8_4b76_8182_04c5a1415dec_0000_08_00_4

root@vgpuserver:~# virsh nodedev-list --cap mdev

root@vgpuserver:~#

登録できたmdevを開始する

root@vgpuserver:~# virsh nodedev-start mdev_73f353e8_7da8_4b76_8182_04c5a1415dec_0000_08_00_4
Device mdev_73f353e8_7da8_4b76_8182_04c5a1415dec_0000_08_00_4 started

root@vgpuserver:~# virsh nodedev-list --cap mdev
mdev_73f353e8_7da8_4b76_8182_04c5a1415dec_0000_08_00_4

root@vgpuserver:~# virsh nodedev-list --cap mdev --inactive

root@vgpuserver:~#

こうして作られたmdevデバイスをvirtshコマンドを使って直接仮想マシンに追加する

root@vgpuserver:~# virsh attach-device almalinux --persistent /dev/stdin <<EOF
<hostdev mode='subsystem' type='mdev' managed='no' model='vfio-pci' display='on'>
  <source>
    <address uuid='73f353e8-7da8-4b76-8182-04c5a1415dec'/>
  </source>
</hostdev>
EOF
Device attached successfully

root@vgpuserver:~# 

これで設定ができたのであとは仮想マシンを起動して、仮想マシン内でvGPUドライバをインストールすれば使えました

ただ、HVM管理UIで設定を変えるとmdev設定は消えてしまうので、実用するにはつらいですね

vSphere代替と話題になっているHPE VM EssentailsことUbuntu 22.04LTS KVM hypervisor with HP製管理GUIを試して見てる

vSphereがアレなことになってしまってから、いろいろ面倒なことになっています。

そんな中、HPEからHPE VM Essentialsなる仮想基盤を出すという話が・・・

2025/01/14にHPE VM Essentials trial というページが公開されているというのに気がついて、ダウンロードしてみました。

ただ、2025/02/04時点でもドキュメントの理解ができてないので、いまいち設定がよくわかりません・・・

まだ世間に設定してみた情報が少ないので、問題になった点とかのメモもかねて公開していきます。

2025/02/05 17:00時点の感想

v8.0.2.1を使用しての感想

・ドキュメントが足らなすぎる
・処理中なのかどうかもう少し表現してほしい
・仮想DVDドライブのメディア入れ替えが動作しないのと初期設定時以外に設定追加できないのなんとかしてほしい
iSCSIストレージの追加ってどこからやるの?
ローカルストレージの追加ってどこからやるの?
・ドキュメント上 /var/morpheus ディレクトリで容量使うってどこにも書いてない気がするんですが!!!
・作成した仮想マシンBIOS設定だったんだけど、UEFIへの切り替えはどこでやるの?(作成後に変更不可っぽい)
Secure Boot / vTPM への対応はするの?(仮想イメージの設定側で変更する?)

配布パッケージについて

HPE VM Essentials trial というページにて公開されています。

登録後は My HPE Software Center から左側の「Software」を開き、Searchキーワードに「HPE VME」と入力して検索すると、Search Resultsにその時点での最新版が表示されます。

2025/03/26注: [My HPE Software Center]からSinginしないで「Browse Free Software」をクリックする、というアクセス方法に代わっていた

2024/01/14時点では、 HPE_VM_Essentials_SW_image_v8.0.1.1_S5Q83-11001.iso の中に、Ubuntu 22.04上へインストールするためのパッケージファイル(hpe-vm_1.0.2-1_amd64.deb)と、HPE Manager用の仮想ディスクイメージファイル(hpe-vme-8.0.1-1.qcow2.gz)が入っていました。

その後、2025/01/29付けで HPE_VM_Essentials_SW_image_8.0.2_1_S5Q83-11003.iso に差し替わり、こちらはパッケージファイルはそのまま(hpe-vm_1.0.2-1_amd64.deb)と、HPE Manager用の仮想ディスクイメージファイルが更新されて hpe-vme-8.0.2-1.qcow2.gz になっていました。

現状ではアップデートされたかどうかのお知らせが出ていないようなので、自分で確認する必要があるようです。(2025/02/26 Release Noteが公開されるようになった)

2025/02/24付けで ver 8.0.3-1がリリースされました。
HPE_VM_Essentials_SW_image_8.0.3_1_S5Q83_11005.iso の中のdebファイルは変わらずhpe-vm_1.0.2-1_amd64.deb のまま。HPE Manager用仮想ディスクイメージが hpe-vme-8.0.3-1.qcow2.gz に更新。

また、追加でHPE Manager仮想マシン内のファイルをアップデートする用に hpe_vm_essentials_8.0.3_1_amd64.deb と hpe_vm_essentials_supplemental_8.0.3_1_all.deb が増えました

変更点ってなんなの?と聞いてみたら、ドキュメントサイト上に v8.0.3 Release Notesが追加されました。

2025/04/03になって ver 8.0.4-1がリリースされました。(ドキュメント上 v8.0.4 March 31, 2025 と書いてあるけど、サイトで公開されたのは4/3)
HPE_VM_Essentials_SW_image_8.0.4_1_S5Q83-11007.iso の中は hpe-vm_1.0.4-1_amd64.deb と hpe-vme-8.0.4-1.qcow2 になりました。
2025/04/04 10時時点では HPE Manager仮想マシンアップデート用のファイルは未公開です。

2025/04/25付けで ver 8.0.5がリリース されました。
HPE_VM_Essentials_SW_image_8.0.5_1_S5Q83-11009.iso のみ公開で、HPE Manager仮想マシンアップデート用ファイルは無し
Ubuntu 24.04 LTSを使えるようになりました!!

2025/06/11付けで ver 8.0.6がリリースされました
HPE_VM_Essentials_SW_image_8.0.6_S5Q83-11015.iso のみ公開
hpe-vme_1.0.8-1_amd64.deb と hpe-vm-essentials-8.0.6-3.qcow2 でした。

HPE VM Essentialsの構成について

HPE VM Essentialsのドキュメントページに下記の絵があります。

2025年1月末時点では、Ubuntu 22.04ベースのサーバ上に、HPE VM Consoleパッケージ(hpe-vm_1.0.2-1_amd64.deb)を追加する。
2025年4月末リリースのv8.0.5.1から Ubuntu 24.04ベースになりました。

追加したサーバのうち1台の上に、中央管理サーバとなるHPE VME Manager仮想マシンを構築して起動する、というものになる。

ベースとなるUbuntu 22.04について

Ubuntu 22.04インストール時に最小インストールで実施してみたところ、hpe-vm_1.0.2-1_amd64.deb パッケージインストール時に足らないパッケージを全部持ってきてるようだったので、それで大丈夫だろう、と思って設定していたのですが、HPE VME Manager仮想マシンの構築で失敗するという問題が発生しました。

原因が半月以上わからないままだったのですが、ふと思いついてUbuntuの再インストール時に最小インストール “Ubuntu Server (minimized)” をやめたらすんなりと成功するいう・・・

Ubuntuインストール時のパーテーション構成について

ドキュメント上、特に記載がないが、動作をみたところ、/var/morpheus/kvm/ 以下にデフォルトのデータストア(仮想マシン格納場所)が作成されていた

このため、 /var/morpheus は別のパーテーションとして容量を確保した方がよいかと思われる。

ネットワーク設定について

とりあえず、普通に固定IPアドレスを割り当てたネットワークインタフェースが1つあれば、仮想マシンを動かす設定まで作れる。

ポイント的なものでいうと
・Ubuntu 22.04インストール時に使用するネットワークインタフェースに固定IPを割り当てる
・上記で使ったネットワークインタフェース名(たとえばeno5)は HPE VM Managerインストール時に何回か入力することになる
・Compute VLANを別に用意しなくても問題なく、管理用と同じで動作させることはできる

仮想環境で使用するネットワークについては、open vswitchを利用したものが作成される。

インストール直後は「default」だけだが、HPE VM Managerの初期セットアップとサーバの登録が終わると「Management」と「Compute」という設定ができている。(virsh net-listで確認できる)

hpe-vmパッケージインストール

Ubuntu 22.04 Serverをインストールした後、ISOイメージの中にある hpe-vmのdebパッケージをインストールすることで、HPE VM Essentailsで使用するhypervisor用サーバとなる。

「sudo apt install -f hpe-vm_1.0.2-1_amd64.deb」というふうに実行すると、必要なUbuntuパッケージとともにインストールされる。

ただ、パッケージインストール後、一度OS再起動した方が良さそうな気がします。

インストール直後の virsh net-list –all実行結果

vmadmin@hpevm:~$ virsh net-list --all
 Name   State   Autostart   Persistent
----------------------------------------

vmadmin@hpevm:~$

再起動後の実行結果

vmadmin@hpevm:~$ virsh net-list --all
 Name      State    Autostart   Persistent
--------------------------------------------
 default   active   yes         yes

vmadmin@hpevm:~$

HPE VME Manager仮想マシンのセットアップについて

hpe-vm パッケージをインストールすると、「hpe-vm」コマンドが実行できるようになります。

「sudo hpe-vm」で起動すると以下のような画面となります。

最初は「Keyboard Layout / TimeZone」でキーボードとタイムゾーンを設定します。

コマンドで「sudo timedatectl set-timezone Asia/Tokyo」でもよい。

VC Keymapを「sudo localectl set-keymap jp106」で設定しようかと思ったのですが、そちらはパッケージが足らないらしくエラーになりました(UIから選択すると自動的にインストールされる)

管理はHPE VME Manager仮想マシン経由で行うため、環境内に1台だけインストールを行う。

HPE VME Manager仮想マシンのインストールはhpe-vmの「Install Morpheus」から実施する。

以下のような形でセットアップパラメータを指定する

IP Address: HPE VME Manager仮想マシンのIPアドレス
Netmask, Gateway, DNS Serverは普通に設定

Appliance URLは、セットアップ完了後、HPE VME Manager仮想マシンの管理Webにアクセスする際のURLを指定する。https://ホスト名.ドメイン名 というようなDNSサーバで解決できる名前を指定することを推奨している模様。IPアドレス指定でも大丈夫だった。

Hostname はHPE VME Manager仮想マシンのホスト名

Admin User / Admin Password はHPE VME Manager仮想マシンにsshでログインする場合のユーザ情報

Select VM Sizeは「Small」「Medium」「Large」の3種類から選ぶが、現状のドキュメントでは仮想マシンスペックの違いしかかかれておらず、管理対象台数などがどう変わるかについては不明。

Host Configration Optionsの Management Interface には、ホストサーバで、管理用のIPアドレスがついているインタフェースを選んだ

インストールを開始すると、93%で一度長時間止まる。

これは初回起動にとても時間がかかるためで10分ちょい放置すると、サービスが起動したというウィンドウが表示される。

起動が終わる前に管理URLにアクセスすると以下のような表示が出る。(最初は ポート80しかあいてないが、そのうちポート443もアクセスできるようになる)

完了すると「Morpheus VM Installed」という表示が出る。(下記キャプチャはAppliance URLを IPアドレスで設定した場合のキャプチャ)

サービスの起動が完了したあとにAppliance URLで指定したURLにブラウザからアクセスすると、下記のようなログイン画面が表示される。

階層構造について

ドキュメントで解説している箇所がよくわからないが、以下のツリー構成になっているようだ。

テナント名
 └グループ名
  └クラウド名
   └クラスター名
    ├ホスト
    ├VM(仮想マシン)
    ├ネットワーク
    ├ストレージ
    └仮想イメージ

あと、上記とは直接関係なく「ラベル名」という区別のための識別符をつけることもできる。

テナント名: 初回ログイン時にマスターテナント名として指定

v8.0.2.1時点ではテナントの管理URLっぽいのにアクセスするとエラーになるので、これからなんか実装していくっぽい

グループ名:拠点などでわけることを想定していると思われるもの

クラウド名:「HPE VM Essentials環境」と「vSphere環境」の2種類を登録できる。

クラスター名:vSphereのクラスターとほぼ同じ意味合いでのクラスター。この下に実際の物理Ubuntuサーバ with HPE VMを登録する

初回ログイン時の設定項目について

初回ログイン時に設定が求められる項目として以下がある

マスターテナント名: 適当になんか名前を設定

マスターユーザーの作成で、主管理ユーザを作成。メールアドレスも必須

初期セットアップは、Install Morpheus で入力したものを指定

最後にライセンス登録。評価版の時はなにも入力しない

以上で初期セットアップ終了

HPE VM Managerセットアップ後のvirsh net-list –allを確認すると、設定が変わっている。

vmadmin@hpevm:~$ virsh net-list --all
 Name         State    Autostart   Persistent
-----------------------------------------------
 default      active   yes         yes
 Management   active   yes         yes

vmadmin@hpevm:~$

サーバ登録

初期設定が終わったらサーバ登録を行う。

「インフラストラクチャ」から「グループ」作成→「クラウド作成」

クラウド作成は多少時間がかかるので、ステータスが「INITIALIZING」から「OK」に変わるのを確認すること(自動更新をしないようなので再読み込みで確認)

で、作成されたこのクラウドのリンクをクリックして、「クラスター」を開く

クラスターの追加ウィザードの中で重要なポイントは以下の構成オプションのところ

hpe-vmパッケージをインストールしたUbuntuサーバをSSHホストとして指定

Management Net Interface、Compute Net Interface、Overlay net Interfaceに使用するネットワークインタフェース名を入れる。全部同じインタフェースを使用しても動作した。

(Overlay net Interfaceを空欄で進めたら指定していないはずの eno0デバイスがないというエラーが出たので、指定しないとダメっぽい)

タグVLANを使う場合はCompute Net Interfaceに使うインタフェース名と、COMPUTE VLANSにタグVLANの値を列挙する。

レイアウトは「HPE VM 1.1 Cluster on Existing Ubuntu 22.04」と「HPE VM 1.1 HCI Ceph Cluster on Existing Ubuntu 22.04」の選択肢になっているのだが、HCI構成の場合の要求要件がわからないのでまだ手を付けていない

あと「CPU Model」のところで、そのクラスタで使用する仮想マシンに許可するCPU世代を指定できる。(VMware EVCみたいな感じか)

これで完了をクリックして、少し待つと、クラスターに登録される

登録した後は、情報同期が行われているようなので、10分ぐらい放置する

登録直後は、各サーバの詳細を見ると、下記のようにストレージ情報がありません、と出る。

しばらく待つとそのサーバのローカルディスクが表示される

他のタブでも同様の状態となっているのだが、情報更新中であることを示すアイコンがあるのかどうか現状不明なので、とりあえず再読み込みしてみるしかない模様

ある程度処理が進んでいると「virsh net-list」の実行結果が下記のように「Management」と「Compute」になっていて、最初合ったdefaultが消えている。

vmadmin@hpevm:~$ virsh net-list --all
 Name         State    Autostart   Persistent
-----------------------------------------------
 Compute      active   yes         yes
 Management   active   yes         yes

vmadmin@hpevm:~$

UEFI Secure BootとTPMについて

現状、以下の機能は実装されていない模様
・UEFI/BIOSの明示的な切り替え
・UEFI時のSecure Boot 有効/無効 切り替え
・TPMの有効化

このため、標準設定のWindows 11をインストールすることはできない。

とりあえず試験的にインストールしたWindowsとLinuxはBIOS構成となっていた。

Windowsのインストールについて

Windows Serverなどをインストールするとき、標準的なWindows ISOイメージにはKVM環境向けのvirtioドライバーが含まれていないため、インストーラ上からディスクを認識できない。

Nutanixなどであれば、途中で読み込ませるISOファイルをVirtioドライバISOに換えればよいのだが、HPE VM EssentailsのWeb UIからISOファイルを別のものに変更する操作が動作しない。

正解は仮想マシン新規作成時の「Advanced Options」の中にある「ATTACH VIRTIO DRIVERS」にチェックを入れる、というもの。

これによりOSインストール用のISOイメージの他に、virtioのISOイメージがマウントされた状態で起動するようになる。

なお、v8.0.2.1の状態ではGUI上で作成済みの仮想マシンに対してISOファイルマウントの設定を行うことはできない模様。

インストールに必要なもの

RedHat VirtIO SCSI controller :VEN_1AF4&DEV_1001 → viostor

デバイスマネージャで警告が表示されたもの

PCIシンプル通信コントローラ :VEN_1AF4&DEV_1003 → vioserial
PCIデバイス :VEN_1AF4&DEV_1002 → balloon
イーサネット コントローラー :VEN_1AF4&DEV_1000 → NetKVM
マルチメディア オーディオ コントローラ :VEN_8086&DEV_2415 → Intel(r) 82801AA AC’97 Audio Controller

マルチメディア オーディオコントローラ(Intel 82801AAエミュレーション)については、適用できるドライバが64bit向けがない?

そのほか virioのISOに含まれるドライバ

VEN_1AF4&DEV_1004 → vioscsi
VEN_1AF4&DEV_1005 → viorng
VEN_1AF4&DEV_1041 → NetKVM
VEN_1AF4&DEV_1044 → viorng
VEN_1AF4&DEV_1045 → balloon
VEN_1AF4&DEV_1050 → viogpudo
VEN_1AF4&DEV_1052 → vioinput
VEN_1AF4&DEV_105A → viofs
VEN_8086&DEV_2930 → smbus
VEN_1B36&DEV_0002 ~ DEV_0004 → qemupciserial
VEN_1B36&DEV_0100 → qxl(xp,win7,2008R2),qxldod (win2012~2019)

(VEN_1AF4,VEN_1B36はRedHat Inc、VEN_8086はIntel)

仮想マシンのコンソールについて

基本的にはWebブラウザから操作することになっている。

が、virtで管理されているので 「virsh dumpxml 仮想マシン名」を実行してみると下記のようなvncに関する設定項目があるのがわかる

    <graphics type='vnc' port='41001' autoport='no' listen='127.0.0.1'>
      <listen type='address' address='127.0.0.1'/>
    </graphics>

上記の場合、サーバローカルに対してのみポート41001でアクセスする場合に使えるので、sshトンネルで127.0.0.1:41001にアクセスする設定をいれてやれば、他のマシンからでも接続できる

この状態で、Windowsにvirt-viewerをインストールして「”C:\Program Files\VirtViewer v11.0-256\bin\remote-viewer.exe” vnc://127.0.0.1:41001」を実行すると接続できる。

パスワードが求められるが、VNCのパスワードはなぜかdumpxmlでは表示されないので「virsh edit 仮想マシン名」を実行して探す必要がある

    <graphics type='vnc' port='41001' autoport='no' listen='127.0.0.1' passwd='Mo8lzACR'>
      <listen type='address' address='127.0.0.1'/>
    </graphics>

上記の場合、「Mo8lzACR」がパスワードとなる

iSCSIストレージの追加

まさかクラスター階層の「ストレージ」にiSCSIのターゲットIPの指定があるなんて・・・

これを指定することで、クラスタに所属するサーバ上でiSCSIストレージが追加されました。

vmadmin@hpevm:~$ sudo iscsiadm -m session
tcp: [1] 172.17.44.9:3260,2460 iqn.2007-11.com.nimblestorage:hpevme-v371c7edc5d1bd1e3.000000d2.6a07af3f (non-flash)
tcp: [2] 192.168.44.9:3260,2460 iqn.2007-11.com.nimblestorage:hpevme-v371c7edc5d1bd1e3.000000d2.6a07af3f (non-flash)
vmadmin@hpevm:~$ sudo lsblk
NAME                                MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINTS
loop0                                 7:0    0  63.9M  1 loop  /snap/core20/2318
loop1                                 7:1    0    87M  1 loop  /snap/lxd/29351
loop2                                 7:2    0  38.8M  1 loop  /snap/snapd/21759
loop3                                 7:3    0  44.4M  1 loop  /snap/snapd/23545
loop4                                 7:4    0  63.7M  1 loop  /snap/core20/2434
loop5                                 7:5    0  89.4M  1 loop  /snap/lxd/31333
sda                                   8:0    0 447.1G  0 disk
tqsda1                                8:1    0     1G  0 part  /boot/efi
tqsda2                                8:2    0     2G  0 part  /boot
mqsda3                                8:3    0 444.1G  0 part
  tqubuntu--vg-ubuntu--lv           253:0    0   100G  0 lvm   /
  mqubuntu--vg-morpheus             253:1    0   300G  0 lvm   /var/morpheus
sdb                                   8:16   0 447.1G  0 disk
mqsdb1                                8:17   0 447.1G  0 part
sdc                                   8:32   0 447.1G  0 disk
sdd                                   8:48   0 447.1G  0 disk
sde                                   8:64   0 447.1G  0 disk
sdf                                   8:80   0 447.1G  0 disk
sdg                                   8:96   1     0B  0 disk
sdh                                   8:112  0     1T  0 disk
mq22674a991c8b22b4c6c9ce9003faf076a 253:2    0     1T  0 mpath
sdi                                   8:128  0     1T  0 disk
mq22674a991c8b22b4c6c9ce9003faf076a 253:2    0     1T  0 mpath
sr0                                  11:0    1  1024M  0 rom
vmadmin@hpevm:~$ sudo multipath -ll
22674a991c8b22b4c6c9ce9003faf076a dm-2 Nimble,Server
size=1.0T features='1 queue_if_no_path' hwhandler='1 alua' wp=rw
`-+- policy='service-time 0' prio=50 status=active
  |- 8:0:0:0 sdh 8:112 active ready running
  `- 9:0:0:0 sdi 8:128 active ready running
vmadmin@hpevm:~$

ただ、認識したiSCSIのLUNは、そのままでは利用できず、ファイルシステム作成が必要そうな気配が・・・

セットアップ失敗は再インストールからやり直し

仮想環境上にUbuntu をインストールして、hpe-vmパッケージインストールして、Install morpheusを実施してみたところ、なぜか仮想マシンが作られない

確認したらCPUのハードウェア仮想化/IOMMUを有効化してないせいで、KVMが正常に動かないためだった。

それはいいんだけど、問題なのは、/var/log 以下のどこにもそういったログが見当たらない、ということ。

で・・・有効化して再度実施すればいいのかな?と実行してみたところ、open vswitch側の設定が変なことになっていたらしく、Ubuntu=>VM Managerのping疎通が通らない、という状況に

どこを修正すればいいのかわからない状態なので、Ubuntu OSインストールからやり直すことになりました。(それでうまくいった)

HPE VM Manager仮想マシンのコンソールを開く

VM Manager側の仮想マシンからの疎通確認できるかな?とvirsh edit “VM Managerの名前” でVNCの接続情報を見てvirt-viewerからコンソールを開いてみる

↑はまだセットアップ中だった模様

↓でログインできるようになっていたら初期化が終わってる

Install Morpheusで指定したユーザ名とパスワードでログインできる

HPE VME Manager上にaptレポジトリが作成される

HPE VME Managerからサーバを登録すると、 /etc/apt/sources.list.d/morpheus.list に下記にような内容が追加される

$ cat /etc/apt/sources.list.d/morpheus.list
deb [signed-by=/etc/apt/trusted.gpg.d/morpheus.asc] https://172.17.44.169/apt morpheus main
$

vTPMを有効化する手法

Windows 11仮想マシンを作る場合、vTPMを有効にする必要がある。

インスタンス側の設定項目がないなぁ、と思っていたら、ISOイメージファイルを登録する「仮想イメージ」にて設定項目があるとは思わなかった

ISOイメージ登録時に通常は折りたたまれている「高度」オプションの中にある「UEFI」「VTPM ENABLED」「SECURE BOOT」にチェックを入れておくと、このISOイメージを指定してインスタンスを作成した場合に有効になっている、という仕組みである模様