Proxmox 8.3.1から8.4.0へのアップグレード手順 - クラスタ環境でのローリングアップデート

## はじめに

Proxmox VEは高機能なオープンソースの仮想化プラットフォームです。定期的にバージョンアップが行われ、新機能や安定性の向上、セキュリティ修正などが提供されています。本記事では、Proxmox VE 8.3.1から最新の8.4.0へのアップグレード手順について、3台のクラスタ構成での実施方法を詳しく解説します。

## Proxmox VE 8.4.0の主な新機能・改善点

Proxmox VE 8.4.0（2025年4月9日リリース）には多くの新機能と改善が含まれています：

- **環境基盤のアップデート**：Debian Bookworm (12.10)ベース、Linux Kernel 6.8.12-9（デフォルト）、オプショナルな6.14カーネル、QEMU 9.2.0、LXC 6.0.0、ZFS 2.2.7など
- **NVIDIA vGPUのライブマイグレーション**：vGPUなどのmediated deviceを使用する実行中の仮想マシンをライブマイグレーション可能に
- **外部バックアッププロバイダーサポート**：APIを介して外部バックアップソリューションとの統合が可能に
- **Virtiofsによるホスト・ゲスト間ディレクトリ共有**：ネットワークファイルシステムのオーバーヘッドなしでのファイル共有
- **AMD SEV-SNP (Secure Nested Paging)の初期サポート**：ホストとゲスト間の分離強化
- **Webインターフェースの改善**：同意バナー、ファイルソートの改善、プロキシ設定の拡張など
- **バックアップ・リストア機能の強化**：フリージングバックアップの堅牢性向上、エラー処理の改善
- **各種ストレージ、クラスタ管理、ファイアウォール、SDN関連の多数の改善と修正**

## 準備作業

### システム状態の確認

アップグレード前に、現在のシステム状態を確認しましょう：

```bash
# Proxmoxバージョンの確認
pveversion

# クラスタ状態の確認
pvecm status

# ディスク容量の確認
df -h

# メモリ使用状況の確認
free -m
```

```bash
root@pve53:~# pveversion
pve-manager/8.3.3/f157a38b211595d6 (running kernel: 6.8.12-8-pve)
root@pve53:~# pvecm status
Cluster information
-------------------
Name:             cluster
Config Version:   3
Transport:        knet
Secure auth:      on

Quorum information
------------------
Date:             Tue May  6 09:33:32 2025
Quorum provider:  corosync_votequorum
Nodes:            3
Node ID:          0x00000001
Ring ID:          1.136
Quorate:          Yes

Votequorum information
----------------------
Expected votes:   3
Highest expected: 3
Total votes:      3
Quorum:           2
Flags:            Quorate

Membership information
----------------------
    Nodeid      Votes Name
0x00000001          1 192.168.13.53 (local)
0x00000002          1 192.168.13.54
0x00000003          1 192.168.13.55
root@pve53:~# df -h
Filesystem                      Size  Used Avail Use% Mounted on
udev                            3.8G     0  3.8G   0% /dev
tmpfs                           777M  1.6M  776M   1% /run
rpool/ROOT/pve-1                227G  3.0G  224G   2% /
tmpfs                           3.8G   57M  3.8G   2% /dev/shm
tmpfs                           5.0M     0  5.0M   0% /run/lock
efivarfs                        256K   71K  181K  29% /sys/firmware/efi/efivars
rpool/var-lib-vz                226G  1.9G  224G   1% /var/lib/vz
rpool                           224G  128K  224G   1% /rpool
rpool/ROOT                      224G  128K  224G   1% /rpool/ROOT
rpool/data                      224G  128K  224G   1% /rpool/data
/dev/fuse                       128M   32K  128M   1% /etc/pve
192.168.11.219:/mnt/zpool2/nfs  183G  6.0G  177G   4% /mnt/pve/NFS
tmpfs                           777M     0  777M   0% /run/user/0
root@pve53:~# free -m
               total        used        free      shared  buff/cache   available
Mem:            7767        2637        5188          58         230        5130
Swap:              0           0           0
```

### バックアップの取得

トラブル発生時の復旧に備え、以下のバックアップを取得します：

```bash
# 仮想マシンのバックアップ（重要なVMに対して実施）
vzdump <VMID> --compress zstd

# 設定ファイルのバックアップ
tar czvf /root/proxmox-config-backup.tar.gz /etc/pve
```

## クラスタ環境でのローリングアップデート手順

クラスタ環境では、ノードを1台ずつ順番にアップグレードする「ローリングアップデート」が推奨されます。NFSデータストア上のVMを稼働させながらアップグレードを行います。

### 前提条件
- 3台のProxmoxサーバーでクラスタを構成
- ノード1: pve53 (192.168.11.53)
- ノード2: pve54 (192.168.11.54)
- ノード3: pve55 (192.168.11.55)
- NFSデータストア上に仮想マシンが稼働している
- 無償サブスクリプションを利用

### 全ノード共通：リポジトリの準備

各ノードで以下の手順を実行し、リポジトリを設定します。

1. **エンタープライズリポジトリの無効化**:

```bash
sed -i 's/^deb /#deb /' /etc/apt/sources.list.d/pve-enterprise.list
```

2. **無償リポジトリの追加**:

```bash
echo "deb http://download.proxmox.com/debian/pve bookworm pve-no-subscription" > /etc/apt/sources.list.d/pve-no-subscription.list
```

3. **リポジトリ情報の更新**:

リポジトリ情報の更新を行います。
この操作を行わない場合、最新バージョンへのアップグレードが行えない場合があります。

```bash
apt update
```

### ノード1(pve53): 最初のノードのアップグレード

1. **仮想マシンの移行**:
   - ノード1で実行中の仮想マシンを他のノードに移行します
   - NFSデータストア上のVMは、クラスタ内の他のホストに簡単に移行できます

```bash
# ノード1から他のノードへVMを移行（GUIまたはCLIで実行）
qm migrate <VMID> <target-node> --online
```

```bash
状態確認
root@pve53:~# qm list
      VMID NAME                 STATUS     MEM(MB)    BOOTDISK(GB) PID
       101 linuxmint            running    2048              32.00 2012
       102 mint3                stopped    4096              32.00 0
       103 mint-non-qcow2       stopped    2048              32.00 0

仮想マシンのライブマイグレーション
root@pve53:~# qm migrate 101 pve54 --online
Requesting HA migration for VM 101 to node pve54

状態確認（完了までしばらく待つ）
root@pve53:~# qm list
      VMID NAME                 STATUS     MEM(MB)    BOOTDISK(GB) PID
       102 mint3                stopped    4096              32.00 0
       103 mint-non-qcow2       stopped    2048              32.00 0
```

2. **メンテナンスモードの有効化**:
   - WebUIから「ノード」→「システム」→「オプション」→「メンテナンスモードを開始」を選択
   - または、以下のコマンドを実行:

```bash
ha-manager crm-command node-maintenance enable <target-node>
```

```bash
状態確認
root@pve53:~# ha-manager status
quorum OK
master pve55 (active, Tue May  6 09:48:57 2025)
lrm pve53 (active, Tue May  6 09:49:02 2025)
lrm pve54 (active, Tue May  6 09:49:02 2025)
lrm pve55 (idle, Tue May  6 09:49:03 2025)
service vm:101 (pve54, started)

メンテナンスモード有効化
root@pve53:~# ha-manager crm-command node-maintenance enable pve53

状態確認（有効化されるまで少し待つ）
root@pve53:~# ha-manager status
quorum OK
master pve55 (active, Tue May  6 09:49:27 2025)
lrm pve53 (maintenance mode, Tue May  6 09:49:32 2025)
lrm pve54 (active, Tue May  6 09:49:32 2025)
lrm pve55 (idle, Tue May  6 09:49:33 2025)
service vm:101 (pve54, started)
```

3. **アップグレードの実行**:

```bash
apt full-upgrade -y
```

4. **システムの再起動**:

```bash
reboot
```

5. **再起動後の確認**:
   - ノードが正常に起動したことを確認
   - クラスタへの再参加を確認
   - Proxmoxバージョンを確認

```bash
pveversion
pvecm status
```

```bash
root@pve53:~# pveversion
pve-manager/8.4.1/2a5fa54a8503f96d (running kernel: 6.8.12-10-pve)
root@pve53:~# pvecm status
Cluster information
-------------------
Name:             cluster
Config Version:   3
Transport:        knet
Secure auth:      on

Quorum information
------------------
Date:             Tue May  6 09:59:01 2025
Quorum provider:  corosync_votequorum
Nodes:            3
Node ID:          0x00000001
Ring ID:          1.148
Quorate:          Yes

Votequorum information
----------------------
Expected votes:   3
Highest expected: 3
Total votes:      3
Quorum:           2
Flags:            Quorate

Membership information
----------------------
    Nodeid      Votes Name
0x00000001          1 192.168.13.53 (local)
0x00000002          1 192.168.13.54
0x00000003          1 192.168.13.55
```

6. **メンテナンスモードの解除**:
   - WebUIから「ノード」→「システム」→「オプション」→「メンテナンスモードを終了」を選択
   - または、**target-node以外のノード**で、以下のコマンドを実行:

```bash
ha-manager crm-command node-maintenance enable <target-node>
```

```bash
状態確認
root@pve54:~# ha-manager status
quorum OK
master pve55 (active, Tue May  6 10:01:07 2025)
lrm pve53 (maintenance mode, Tue May  6 10:01:06 2025)
lrm pve54 (active, Tue May  6 10:01:02 2025)
lrm pve55 (idle, Tue May  6 10:01:08 2025)
service vm:101 (pve54, started)

メンテナンスモードの無効化
root@pve54:~# ha-manager crm-command node-maintenance disable pve53

状態確認（無効化されるまでしばらく待つ）
root@pve54:~# ha-manager status
quorum OK
master pve55 (active, Tue May  6 10:01:17 2025)
lrm pve53 (idle, Tue May  6 10:01:21 2025)
lrm pve54 (active, Tue May  6 10:01:22 2025)
lrm pve55 (idle, Tue May  6 10:01:18 2025)
service vm:101 (pve54, started)
```

### ノード2およびノード3のアップグレード

ノード1と同様の手順で、残りのノードを順番にアップグレードします。各ノードのアップグレード前に必ず以下を確認してください：

- 前のノードのアップグレードが完全に成功していること
- クラスタが正常な状態であること
- 仮想マシンを必要に応じて他のノードに移行していること

### ノード2(pve54)のアップグレード

1. **仮想マシンの移行**:

```bash
状態確認
root@pve54:~# qm list
      VMID NAME                 STATUS     MEM(MB)    BOOTDISK(GB) PID
       101 linuxmint            running    2048              32.00 6462

仮想マシンのライブマイグレーション
root@pve54:~# qm migrate 101 pve55 --online
Requesting HA migration for VM 101 to node pve55

状態確認（完了までしばらく待つ）
root@pve54:~# qm list
```

2. **メンテナンスモードの有効化**:

```bash
状態確認
root@pve54:~# ha-manager status
quorum OK
master pve55 (active, Tue May  6 10:15:37 2025)
lrm pve53 (idle, Tue May  6 10:15:37 2025)
lrm pve54 (active, Tue May  6 10:15:32 2025)
lrm pve55 (active, Tue May  6 10:15:39 2025)
service vm:101 (pve55, started)

メンテナンスモード有効化
root@pve54:~# ha-manager crm-command node-maintenance enable pve54

状態確認（有効化されるまで少し待つ）
root@pve54:~# ha-manager status
quorum OK
master pve55 (active, Tue May  6 10:16:27 2025)
lrm pve53 (idle, Tue May  6 10:16:37 2025)
lrm pve54 (maintenance mode, Tue May  6 10:16:37 2025)
lrm pve55 (active, Tue May  6 10:16:29 2025)
service vm:101 (pve55, started)
```

3. **アップグレードの実行**:

```bash
apt full-upgrade -y
```

4. **システムの再起動**:

```bash
reboot
```

5. **再起動後の確認**:

```bash
root@pve54:~# pveversion
pve-manager/8.4.1/2a5fa54a8503f96d (running kernel: 6.8.12-10-pve)
root@pve54:~# pvecm status
Cluster information
-------------------
Name:             cluster
Config Version:   3
Transport:        knet
Secure auth:      on

Quorum information
------------------
Date:             Tue May  6 10:32:27 2025
Quorum provider:  corosync_votequorum
Nodes:            3
Node ID:          0x00000002
Ring ID:          1.163
Quorate:          Yes

Votequorum information
----------------------
Expected votes:   3
Highest expected: 3
Total votes:      3
Quorum:           2
Flags:            Quorate

Membership information
----------------------
    Nodeid      Votes Name
0x00000001          1 192.168.13.53
0x00000002          1 192.168.13.54 (local)
0x00000003          1 192.168.13.55
```

6. **メンテナンスモードの解除**:

```bash
状態確認
root@pve55:~# ha-manager status
quorum OK
master pve55 (active, Tue May  6 10:33:37 2025)
lrm pve53 (idle, Tue May  6 10:33:43 2025)
lrm pve54 (maintenance mode, Tue May  6 10:33:40 2025)
lrm pve55 (active, Tue May  6 10:33:39 2025)
service vm:101 (pve55, started)

メンテナンスモードの無効化
root@pve55:~# ha-manager crm-command node-maintenance disable pve54

状態確認（無効化されるまでしばらく待つ）
root@pve55:~# ha-manager status
quorum OK
master pve55 (active, Tue May  6 10:33:57 2025)
lrm pve53 (idle, Tue May  6 10:34:03 2025)
lrm pve54 (idle, Tue May  6 10:34:05 2025)
lrm pve55 (active, Tue May  6 10:33:59 2025)
service vm:101 (pve55, started)
```

### ノード3(pve55)のアップグレード

1. **仮想マシンの移行**:

```bash
状態確認
root@pve55:~# qm list
      VMID NAME                 STATUS     MEM(MB)    BOOTDISK(GB) PID
       100 test                 stopped    2048              10.00 0
       101 linuxmint            running    2048              32.00 13445

仮想マシンのライブマイグレーション
root@pve55:~# qm migrate 101 pve53 --online
Requesting HA migration for VM 101 to node pve53

状態確認（完了までしばらく待つ）
root@pve55:~# qm list
      VMID NAME                 STATUS     MEM(MB)    BOOTDISK(GB) PID
       100 test                 stopped    2048              10.00 0
```

2. **メンテナンスモードの有効化**:

```bash
状態確認
root@pve55:~# ha-manager status
quorum OK
master pve55 (active, Tue May  6 10:36:37 2025)
lrm pve53 (active, Tue May  6 10:36:38 2025)
lrm pve54 (idle, Tue May  6 10:36:40 2025)
lrm pve55 (active, Tue May  6 10:36:39 2025)
service vm:101 (pve53, started)

メンテナンスモード有効化
root@pve55:~# ha-manager crm-command node-maintenance enable pve55

状態確認（有効化されるまで少し待つ）
root@pve55:~# ha-manager status
quorum OK
master pve55 (active, Tue May  6 10:37:07 2025)
lrm pve53 (active, Tue May  6 10:37:08 2025)
lrm pve54 (idle, Tue May  6 10:37:10 2025)
lrm pve55 (maintenance mode, Tue May  6 10:37:14 2025)
service vm:101 (pve53, started)
```

3. **アップグレードの実行**:

```bash
apt full-upgrade -y
```

4. **システムの再起動**:

```bash
reboot
```

5. **再起動後の確認**:

```bash
root@pve55:~# pveversion
pve-manager/8.4.1/2a5fa54a8503f96d (running kernel: 6.8.12-10-pve)
root@pve55:~# pvecm status
Cluster information
-------------------
Name:             cluster
Config Version:   3
Transport:        knet
Secure auth:      on

Quorum information
------------------
Date:             Tue May  6 10:44:07 2025
Quorum provider:  corosync_votequorum
Nodes:            3
Node ID:          0x00000003
Ring ID:          1.175
Quorate:          Yes

Votequorum information
----------------------
Expected votes:   3
Highest expected: 3
Total votes:      3
Quorum:           2
Flags:            Quorate

Membership information
----------------------
    Nodeid      Votes Name
0x00000001          1 192.168.13.53
0x00000002          1 192.168.13.54
0x00000003          1 192.168.13.55 (local)
```

6. **メンテナンスモードの解除**:

```bash
状態確認
root@pve54:~# ha-manager status
quorum OK
master pve53 (active, Tue May  6 10:44:28 2025)
lrm pve53 (active, Tue May  6 10:44:28 2025)
lrm pve54 (idle, Tue May  6 10:44:35 2025)
lrm pve55 (maintenance mode, Tue May  6 10:44:35 2025)
service vm:101 (pve53, started)

メンテナンスモードの無効化
root@pve54:~# ha-manager crm-command node-maintenance disable pve55

状態確認（無効化されるまでしばらく待つ）
root@pve54:~# ha-manager status
quorum OK
master pve53 (active, Tue May  6 10:44:58 2025)
lrm pve53 (active, Tue May  6 10:44:58 2025)
lrm pve54 (idle, Tue May  6 10:45:00 2025)
lrm pve55 (idle, Tue May  6 10:45:00 2025)
service vm:101 (pve53, started)
```

## アップグレード後の確認事項

すべてのノードのアップグレードが完了したら、以下の確認を行います：

1. **クラスタ状態の確認**:

```bash
pvecm status
```

2. **各ノードのバージョン確認**:

```bash
pveversion
```

3. **仮想マシンの動作確認**:
   - すべての仮想マシンが正常に起動するか確認
   - ネットワーク接続に問題がないか確認
   - 機能やパフォーマンスに問題がないか確認

4. **WebUIの表示問題がある場合**:
   - ブラウザのキャッシュをクリア（Ctrl+Shift+R）して強制リロード

## トラブルシューティング

### アップデートが失敗した場合

```bash
# パッケージ設定の修復
dpkg --configure -a

# 依存関係の修復
apt install -f
```

### クラスタ通信の問題が発生した場合

```bash
# corosyncサービスの再起動
systemctl restart corosync

# pve-clusterサービスの再起動
systemctl restart pve-cluster
```

### 再起動後にノードがクラスタに参加しない場合

```bash
# クラスタサービスのステータス確認
systemctl status corosync
systemctl status pve-cluster

# ログの確認
tail -n 100 /var/log/pve/cluster/corosync.log
```

## まとめ

Proxmox VE 8.3.1から8.4.0へのアップグレードは、慎重に計画し実行することで、クラスタ環境でも安全に完了できます。本記事で紹介したローリングアップデートの手順に従うことで、サービスの中断を最小限に抑えつつ、最新バージョンの新機能や改善点を活用できるようになります。

アップグレード前のバックアップ取得と、各ステップでの確認を怠らないようにしましょう。問題が発生した場合は、トラブルシューティングセクションを参考に対処してください。

## 参考情報

- [Proxmox VE 8.4.0 リリースノート](https://pve.proxmox.com/wiki/Roadmap#Proxmox_VE_8.4)
- [Proxmox VE 8.4.0 プレスリリース](https://www.proxmox.com/en/about/company-details/press-releases/proxmox-virtual-environment-8-4)