zaki work log

作業ログやら生活ログやらなんやら

Proxmox VE 7のVM上でRocky LinuxやAlmaLinuxのRHEL系コンテナが「CPU does not support x86-64-v2」エラーになるときの対策

Proxmox VE 7.4-16 で発生する現象。

暫定的にはVMのCPU種別を「host」にすれば回避可能。
恒久対策としてはProxmox VEをバージョン8へアップグレードしCPU種別を「x86-64-v2」を指定。

現象

[zaki@cloud-dev2 ~]$ docker run --rm -it rockylinux:9-minimal bash
Fatal glibc error: CPU does not support x86-64-v2

VMのCPU種別をデフォルトの「kvm64」にしていると発生。 これはホストのVMUbuntuでもFedoraでも関係なく再現し、コンテナがUbuntuDebianだと発生しない。
試した限りでは、Rocky Linux 9 / AlmaLinux 9 / CentOS Stream 9 / UBI(RHEL) 9 で再現。

zaki@ubuntu-work:~$ docker run --rm -it quay.io/centos/centos:stream9 bash
Fatal glibc error: CPU does not support x86-64-v2
zaki@ubuntu-work:~$ docker run --rm -it registry.access.redhat.com/ubi9/ubi:9.2 bash
Fatal glibc error: CPU does not support x86-64-v2

ちなみにver8のコンテナだと発生せず、コンテナでなくVMの場合もRHEL9は再現するので「新しいバージョンのRHEL系OSで発生」する模様。
ハード寄りの話は苦手なんで詳しくは消化できてないけど、これらのOS環境はx86-64-v2がサポートするSSE 4.2という機能が必要。らしい。
で、デフォルトのkvm64がこの機能に対応していない、という流れみたい。

回避策 (PVE7)

というわけで比較的新しいCPU種別を選択すれば良さそうなんだけど、選択肢が多くてどれが良いかわからず…結局ホストと同じ機能が使えるっぽい「host」を選択するのが無難なのかな。

hostを選択する場合の参考情報は以下。
おそらく移植性が下がって、異なる構成でクラスタ組んでるときのデメリットがあるかも。うちはシングルノードだから関係ないかな。

forum.proxmox.com

対応策 (PVE8)

あとはProxmox VEのバージョン8で改善されてそうな記述あり。 Proxmox VEをバージョン8にすれば、CPU種別に「x86-64-v2」を選択でき、これらのVMやコンテナを実行できる。

forum.proxmox.com

Add virtual machine CPU models based on the x86-64 psABI Micro-Architecture Levels and use the widely supported x86-64-v2-AES as default for new VMs created via the web UI.

The x86-64-v2-AES provides important extra features over the qemu64/kvm64 like SSE3, SSE4 and SSE4.1 and was slightly adapted to also provide AES support, improving performance of many computing operations dramatically.
See the Virtual Machines (KVM/QEMU) section for details.


Proxmox VE 8.0のRoadmapより

Proxmox VEのバージョンアップについては以下も参照。

zaki-hmkc.hatenablog.com


参考

github.com

developers.redhat.com

上記の翻訳記事

rheb.hatenablog.com

access.redhat.com


無邪気に「RHEL系コンテナ」って表現してるけど、問題ない?問題あったら修正します。