Proxmox VEクラスターをVMを止めずに1台ずつ更新する|脆弱性対応を想定したローリングアップデート手順について

こんにちは。クララです。

2026年10月にCVE-2026-99999が発表されました。Linuxカーネルの仮想化機能であるKVMの脆弱性で、悪用されるとVMからホスト側へ抜け出せてしまういわゆる「VMエスケープ」につながるおそれのある脆弱性です。対応にはハイパーバイザー側の更新が必要で、近年注目を集めているProxmoxも対象です。

本記事では、脆弱性への対応を想定して、ISOからインストールしたままのProxmox VEクラスターを、VMを止めずに1台ずつ最新の状態まで更新してみます。

この記事でわかること

  • 脆弱性が修正されたバージョンと、今動いているバージョンの確認方法
  • HAのメンテナンスモードを使ったローリングアップデートの流れ
  • アップデート中のVMの動き(通信の途切れ方、所要時間、VMが元のノードに戻るか)

👇あわせて読みたいおすすめ記事

目次

検証環境

今回用意したのはISOからインストールしたままの3ノードのProxmox VEクラスターです。
VMのストレージには、Ceph(各ノードにOSD 2本)と、OSディスク上のZFS(ZFSレプリケーションで他ノードと同期)の2種類を使い、どちらのVMもHAで管理しています。移行用のネットワークには、Cephと同じ10GbEのネットワークを指定しています。

項目更新前更新後
Proxmox VE9.2.29.2.24
カーネル7.0.2-6-pve7.0.14-26-pve
Ceph20.2.120.2.4

事前確認

1. 脆弱性が修正されたバージョンを確認する

まずは、どのバージョンで脆弱性が修正されたかを確認します。Proxmoxの情報は、公式フォーラムの「Proxmox Virtual Environment Security Advisories」にまとまっています。

https://forum.proxmox.com/threads/proxmox-virtual-environment-security-advisories.149331

今回のCVE-2026-99999は、カーネル7.0.14-24-pveで修正されています。動いているカーネルが7.0.14-24-pve以降になっていることが、今回のゴールです。

2. 今動いているバージョンを確認する

各ノードの「サマリー」から「パッケージのバージョン」をクリックすると、今動いているカーネルのバージョンやインストールされているパッケージの一覧が確認できます。
今回は7.0.2-6-pveで動いていることが確認できました。

3. 修正されたバージョンまで上がるか確認する

ノードの「更新」画面で「再表示」をクリックすると、更新できるパッケージの一覧が更新されます。「new」の欄で、カーネルが7.0.14-24-pve以降まで上がることを確認します。

「Changelog」をクリックすると、パッケージごとの変更内容も確認できます。
修正内容にきちんとCVE-2026-99999に該当するKVMの修正が含まれていることが確認できます。
※今回は、修正が公開されたタイミングとCVEの採番の都合でCVE-2026-99999の番号は記載されていませんでした。

この確認を3台すべてのノードで行います。

ローリングアップデートの手順

クラスターとCephの状態を確認する

作業を始める前に、クラスターとCephが正常であることを確認しておきます。

Cephにnooutフラグを設定する(任意)

Cephは、OSDが一定時間(既定では10分)停止したままになると、そのOSDを外してデータの再配置を始めます。ファームウェアのアップデートを一緒に行うなど、再起動に時間がかかる場合に備えて、nooutフラグを設定しておきます。
※今回は3ノード構成なので、OSDが外れてもデータを移す先のノードがなく、実際には再配置は起きません。

「Ceph」→「OSD」→「グローバルフラグを管理」から、nooutにチェックを入れます。
※nooutを設定すると、Cephの状態に警告が表示されます。それ以外に警告が出ていなければ問題ありません。

ノードをメンテナンスモードに入れる

更新するノードを、HAのメンテナンスモードに入れます。Proxmox VE 9.2ではGUI上でメンテナンスモードに入れることができないため、この操作はCLIで行います。

ha-manager crm-command node-maintenance enable <ノード名>

メンテナンスモードに入ると、ノードのアイコンが🔧マークに変わり、HAで管理しているVMがほかのノードへ自動でライブマイグレーションされます。HAに入れていないVM103(testvm-alma10-nonHA)以外のVMは他のノードへ移動しました。

ノードにVMが残っていないことを確認する

メンテナンスモードはHAの仕組みの中の機能なので、HAで管理していないVMは移動しません。ノードに残っているVMがあれば、手動でマイグレーションするか、シャットダウンします。
※HA管理外のVMをそのままにして再起動すると、そのVMはシャットダウンされます。再起動後に自動で起動するのは、「ブート時に起動」が有効なVMだけです。

アップグレードを実行する

ノードの「更新」画面で「アップグレード」をクリックすると、コンソールが開いてアップデートが始まります。
※「アップグレード」ボタンは、root@pamでログインしているときだけ使えます。Proxmox VE上でAdministrator権限を付けたユーザーでも、GUIからはアップグレードできません。

ノードを再起動する

パッケージの更新が終わったら、ノードを再起動します。
アップグレードで開いたシェルの中でqm listでVMがいないことを確認し、rebootを打つのが対象を間違えないのでお勧めです。

再起動後の状態を確認する

ノードが起動してきたら、次の2点を確認します。

  • クラスターとCephの状態が正常であること
    • noout flag(s) set以外に警告がない
    • PGsがすべてactive+cleanである
  • ノードの「サマリー」画面で、カーネルが7.0.14-24-pve以降になっていること

今回はCephのHEALTH_ERRの警告が出ました。これはCephxの脆弱性についてCeph 20.2.4で追加された警告で、Cephxが使用する認証用の鍵をaesからaes256kへ移行するよう促す警告です。可用性の問題ではないためアップデートを続けても問題ないと判断しました。この警告対応も別記事にできればと思っています。
本当に気づくべき警告が埋もれてしまわないよう、今回は該当の6つの警告を作業の間Muteすることにしました。

メンテナンスモードを解除する

ha-manager crm-command node-maintenance disable <ノード名>

メンテナンスモードを解除すると、HAが他のノードに逃がしていたVMが、元居たノードに自動で戻ってきます。(HAに入れず手動で移動させたVMは戻ってきません。)

残りのノードも同じように更新する

「ノードをメンテナンスモードに入れる」~「メンテナンスモードを解除する」までの手順を、残りのノードでも1台ずつ繰り返します。

nooutフラグを解除する

すべてのノードの更新が終わったら、「グローバルフラグを管理」からnooutのチェックを外します。

クラスター全体の状態を確認する

すべてのノードの更新が終わったら、クラスター全体の状態を確認します。

  • クラスターのHEALTHに警告が出ていないこと
    • Muteした警告は一時的に非表示にしているだけなので、作業が終わったら対応しましょう。
  • Cephのmon・mgr・OSDがすべて新しいバージョン(20.2.4)で動いていること

補足 Cephのメジャーアップグレードについて

Cephのメジャーアップグレード(Squid → Tentacleなど)は、ノード単位ではなく、mon → mgr → OSD → MDSの順にデーモンを入れ替える手順が公式に用意されています。今回のような20.2.1-pve1→20.2.4-pve5のマイナーアップデートでは、ノード単位の再起動で問題なく更新できました。

https://pve.proxmox.com/wiki/Ceph_Squid_to_Tentacle

よくある質問(FAQ)

Q. マイグレーション中、VMの通信はどれくらい途切れますか?

A. 今回の検証では、マイグレーション用のネットワークをCephで使用している10GbEのネットワークに指定しました。移行時にVMが止まる時間(ダウンタイム)は、Cephに置いたVMで十数〜100ms程度、ZFSレプリケーションのVMで45ms程度でした。1秒間隔のPingでは、欠けても1回程度です。

Cephはディスクを共有しているため、移行するのはメモリだけです。ZFSレプリケーションの場合は、移行の前にディスクの差分を送る手順が入るため、移行全体の時間はCephのVM(約9秒)より長く、約21秒かかりました。

※移行に使うネットワークが細い環境では、移行に時間がかかり、途切れる時間も長くなることがあります。検証の途中、100Mbps相当の経路で移行したときは、ZFSレプリケーションのVMでPingが4〜5回途切れました。移行に使うネットワークは、「データセンター」→「オプション」→「移行設定」で指定できます。

Q. 1台あたりどれくらい時間がかかりますか?

A. 1台あたりの所要時間は、「ノード自体の作業(更新と再起動)」と「VMの移行」の合計です。今回の環境では、ノード自体の作業は約15分でした。

VMの移行は、メンテナンスモードに入れるときと解除するときの2回発生します。今回の環境(メモリ2GBのVM)では、1回あたりCephのVMで約9秒、ZFSレプリケーションのVMで約21秒でした。移行にかかる時間は、VMの台数やメモリの量、移行用ネットワークの帯域、同時に移行する台数によって変わります。

Q. VMは何台同時にマイグレーションされますか?

A. 移行元のノードごとに、同時に実行されるのは既定で最大4台です(「データセンター」→「オプション」の「最大Worker/バルク動作数」で変更できます)。移行先のノードの数には関係ありません。VMの台数が多い場合は、この設定と移行用ネットワークの帯域が全体の所要時間に影響します。

Q. メンテナンスモードを解除すると、VMは必ず元のノードに戻りますか?

A. HAで管理しているVMは、元のノードを記憶していて、解除すると自動で戻ります。ただし、メンテナンス中に手動で別のノードへ移したVMや、HAで管理していないVMは戻りません。

Q. ファームウェアも一緒に更新されますか?

A. aptの更新で入るのは、デバイス用のファームウェア(pve-firmware)までです。サーバーのBIOSやBMCのファームウェアは、別途ベンダーの手順で更新する必要があります。

まとめ

Proxmox VEのHAのメンテナンスモードを使うことで、VMを止めずに1台ずつクラスターを更新できました。GUIでほぼ完結できるので、脆弱性の修正が公開されたときにも、手順を決めておけば落ち着いて対応できると思います。

ポイントは以下の通りです。

  • 修正されたバージョンと、今動いているカーネルのバージョンを先に確認しておく
  • メンテナンスモードで移動するのはHAで管理しているVMだけなので、HA管理外のVMは手動で対応する
  • 1台ずつ、クラスターとCephの状態を確認してから次のノードへ進む

オススメ記事はこちらから👇

Contact

まずはお気軽にご相談ください

  • ブログに関するご質問・ご感想
  • お困りの課題のご相談・お見積り依頼
  • 各種サービスの導入方法・料金について
お問い合わせフォームはこちら
よかったらシェアしてね!
目次