発生事象
CephのSSD交換ついでにパッケージのアップデートもしようかなと気軽に更新した後、SSD交換作業中に退避させていたVMを元のノードに戻そうとLive migrationをしたら、以下のエラーが発生しました。
|
|
Live migration時にResumeに失敗したというエラーは出るものの、VMの移動出来ていて電源も入っており、SSHでアクセスできました。
しかし、管理画面から確認するとResume前のsuspend状態と表示されており、実際の状態とProxmox VEの管理状態が不整合を起きているようでした。
Forumの様子
立て続けに2件の不具合投稿が行われました。
- 2022/11/19 14:04 https://forum.proxmox.com/threads/after-upgrading-to-7-2-14-on-starting-vms-error-dev-tap104i0-master-static-failed-exit-code-255-when-ovs-is-used.118222/
- 2022/11/20 00:20 https://forum.proxmox.com/threads/network-initialization-issues-after-latest-update.118253/
報告の内容を見ると、Open vSwitchを使っていてFirewall機能が無効になっていると発生するらしいことが分かりました。
パッケージバージョンの差分
ひとまず、クラスタ3台の内の1台目のアップデートで発生したので、2台目以降は更新作業を停止。
まずはパッケージバージョンの差分を取得します。(当時突貫で取得したログ)
|
|
この中に、おそらく原因と思われる変更が入ったのでしょう。
原因となった変更部分
Proxmox VEの開発コードのコミットログを見に行きます。今回は色々探した後でしたが、ひとまず悪いのは qemu-server ではないかと思われたので、そのコミットログを見に行きます。
https://git.proxmox.com/?p=qemu-server.git;a=shortlog
fdb
で検索すると、2022-11-13辺りに以下の4件の変更が入っていました。
- 12 days ago Alexandre Derumier migration : add del_nets_bridge_fdb commit
- 12 days ago Thomas Lamprecht net devs: avoid registering MAC to fdb if not static
- 12 days ago Thomas Lamprecht net devs: code cleanup new fdb mac add helper
- 12 days ago Alexandre Derumier net devs: register vNIC mac to FDB on start/resume
手元の環境やスレッドの情報から、問題が発生するのがLive migrationのResume時と、VMの起動時だったので、最も怪しいのは、一番下の register vNIC mac to FDB on start/resume
です。
Proxmox VEをディストリビューションISOでインストールしていれば、この修正されたファイルパスは /usr/share/perl5/PVE/QemuServer.pm
になります。
そして、調査中に qemu-server
に更新(7.2-10 -> 7.2-11)が入り、Open vSwitchの場合は bridge fdb append
コマンドを実行しないように修正されました。
Proxmox VE Test Repositoryからアップデート
サブスクリプション無しでProxmox VEを使用している場合でも、利用できるいくつかのaptリポジトリがあります。
そのうちの一つに Proxmox VE Test Repository
があります。
https://pve.proxmox.com/wiki/Package_Repositories#sysadmin_test_repo
今回の修正では、Proxmox VEの開発チームが修正したパッケージを Proxmox VE Test Repository にリリースしてくれました。
スレッドの中でそのパッケージを使って問題が解決したか確認しあっており、問題が無さそうなので Proxmox VE No-Subscription Repository にもリリースする。という流れがになっていました。
もし修正を急いでいて、内容がある程度把握できる軽微なバグ修正の場合であれば、先のgitページのバージョンと見比べながら Proxmox VE Test Repository からパッケージを導入しても良いと思います。
私の場合は、今回の修正を /usr/share/perl5/PVE/QemuServer.pm
に手動で適用して動作を確認したあと、Proxmox VE No-Subscription Repository にリリースされるのを待ちました。
2022-11-21 15:00以降の状況
今のところ、問題を引き起こすコマンドが無効になったパッケージ qemu-server: 7.2-11
が Proxmox VE No-Subscription Repository で配布されています。
最新版を入れると、自然とこれ以降のバージョンがインストールされるので、この問題は発生しないと思います。
(事象を発生させてみたい人は qemu-server: 7.2-10
を明示的にインストールしてみてください)
あとがき
Proxmox VE自体はかなり成熟していて、通常の操作ではかなり安定感のあるディストリビューションなのですが、時折このようなバグが紛れ込むことがあります。
調査の参考になれば幸いです。
終わり。