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」にしていると発生。
これはホストのVMがUbuntuでもFedoraでも関係なく再現し、コンテナがUbuntuやDebianだと発生しない。
試した限りでは、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
を選択する場合の参考情報は以下。
おそらく移植性が下がって、異なる構成でクラスタ組んでるときのデメリットがあるかも。うちはシングルノードだから関係ないかな。
対応策 (PVE8)
あとはProxmox VEのバージョン8で改善されてそうな記述あり。
Proxmox VEをバージョン8にすれば、CPU種別に「x86-64-v2」を選択でき、これらのVMやコンテナを実行できる。
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のバージョンアップについては以下も参照。
参考
上記の翻訳記事
無邪気に「RHEL系コンテナ」って表現してるけど、問題ない?問題あったら修正します。