Proxmox Virtual Environment を8系から9系にバージョンアップした


はじめに

Proxmox Virtual Environment (以下、 PVE) のDebian 13ベースである9系がリリースされました。

Proxmox Virtual Environment 9.0 with Debian 13 released

殆どは Wiki に書いてあるが、ハマりどころやクラスタ全体をアップグレードする中で気づいたことがあったので書いておく。

サーバの環境

クラスタを組んだノードが 5 台あり、 Ceph などは利用していない環境でシステムは大きく弄っていない。 Mackerel だけホストにインストールを行っている。

マシン自体は DELL PowerEdge だったり、自作マシンだったり色々。

基本的なインプレースアップグレード

これまでの大型アップデートとやり方は大きくは変わらないが、 Debian 13 (Trixie) 由来の変更などが入っているので注意が必要。

先ずは、 apt update && apt upgrade で Debian 12 (Bookworm) の環境を最新の状態にする。最新版にするとおまじない程度だが、 pve8to9 コマンドが利用出来るようになるので実行して中身を確認しておく。

問題が無ければ apt のリポジトリを書き変える。

sed -i 's/bookworm/trixie/g' /etc/apt/sources.list
sed -i 's/bookworm/trixie/g' /etc/apt/sources.list.d/pve-enterprise.list
sed -i 's/bookworm/trixie/g' /etc/apt/sources.list.d/ceph.list

その後、 apt update を実行しリポジトリが取得出来ることを確認して apt dist-upgrade を実行する。実行中のファイルの置き換え確認については殆どメンテナバージョンを入れてしまって問題ないので Y を選んでおく。

再起動後は何かとバタバタするので apt でのアップグレードが終わったら再起動前に apt modernize-sources を実行して deb822 スタイルに変更しておく。

ただし、 気が利かないのもあり PVE のエンタープライズリポジトリのコメントアウトを無視して処理をしてしまうのでファイルの変更が必要になる。

/etc/apt/sources.list.d/pve-enterprise.sources を開き、以下を追加して無効化する。

Enabled: false

deb822 スタイルに変更した際にバックアップファイルが作成されているので、一度 apt update を実行して意図したリポジトリが取得出来ていることを確認したら、古い /etc/apt/*.list.bak, /etc/apt/sources.list.d/*.list.bak を削除する。

ここまで来たらノードの再起動を WebUI から行ってしまって構わない。1

アップグレード後…

無事にノードがオンラインになったら成功です。 これだけだったら特に書くこともないんだけれど…。

アップグレードをしている際に、 5 ノード中 2 ノードが GRUB の起動が一瞬見えたあとに UEFI 設定に入ってしまう症状になった。

症状としては公式フォーラムに報告されている例と全く同じだが、やや解決方法が異なった。

適当な Linux のライブ環境上で (Debian にしておくのが無難だとは思うが…) 、以下を実行することで解消した。

ただし、 各ノードで作業中に実行したコマンドのメモから拾ってきているので、余計なコマンドが含まれている可能性がある。

# LVM を認識出来るようにする
vgscan
vgchange -ay

# EFI パーティション (e.g. /dev/sdaX) を確認しておく
lsblk

# 必要そうなものをマウントしておく
mount /dev/pve/root /mnt
mount /dev/sdaX /mnt/boot/efi
mount --bind /dev /mnt/dev
mount --bind /sys /mnt/sys
mount --bind /proc /mnt/proc

# chroot して潜る
chroot /mnt

# chroot 内でマウント
mount -t efivarfs efivarfs /sys/firmware/efi/efivars

# initramfs を再生成 ※実行後に exit してから reboot して解消していれば問題ない。
update-initramfs -u -k all

# 前のステップのコマンドで grub-efi-amd64 のインストールを推奨されるので、インストールをする
apt install --reinstall grub-efi-amd64

# 再度 initramfs を再生成
update-initramfs -u -k all

# chroot を抜ける
exit

# 再起動
reboot

最後に

grub-efi-amd64 をインストールすることで解消したが、インプレースアップグレードが成功しているノードもある。

恐らくこの辺りが起因していそうだが、インストールしてもインストールを推奨させるメッセージは消えなかったので、やや後味が悪い。


  1. 最終的にはクラスタ全体を更新するが、一台ずつ再起動してしまっても問題ない。 ↩︎


comments powered by Disqus