【Proxmox】7.x がサポート終了するので 8.x に移行する

# はじめに
proxmox 7.x が 24/07/31 にサポート終了する(した)ようなので、8.x に移行する。ここではその手順を残しておく。

https://forum.proxmox.com/threads/proxmox-ve-support-lifecycle.35755/

移行には、公式が手順を出しているのでこの手順に従う。

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

# 現状をバックアップする
念のために後々復旧できるよう、バックアップを取っておく

## コンテナのバックアップ
1. 外部 HDD を接続する
```bash 
# 接続されているドライブを表示
lsblk -f
# ↑ で確認したドライブをマウントする
mount -t ntfs-3g -o rw DRIVE_PATH MOUNT_PATH
```

2. Web UI からそれぞれのコンテナをバックアップする
Backup > Backup now
```sh
# バックアップしたファイルをコピーする
# デフォルトでは　/var/lib/vz/dump/　に配置されている
cp -ai /var/lib/vz/dump/* MOUNT_PATH/backup/
```

## /etc 以下のファイルをバックアップ
1. `/etc/pve`, `/etc/passwd`, `/etc/network/interfaces`, `/etc/resolv.conf` をバックアップする
```sh
cp -ai {/etc/pve,/etc/passwd,/etc/network/interfaces,/etc/resolv.conf} MOUNT_PATH/backup/
```

# 前提条件をクリアする
1. Proxmox VE 7.4 の最新バージョンにアップグレードする (`7.4-15` 以上)
```sh
# 更新する
apt update && apt upgrade && apt dist-upgrade
# バージョンを確認する
pveversion
# pve-manager/7.4-18/b1f94095 (running kernel: 5.15.158-1-pve)
```

2. Ceph をアップグレードする (Ceph 17.2 Quincy 以上)
```
自環境では使用してないのでスキップ
```

3. Proxmox Backup Server を v3 へアップグレード
```
使用していないためスキップ
```

4. 信頼できるネットワークアクセス
```
ローカルネットワーク環境なのでクリア
```

5. 健全なクラスター
```
自環境では 1 台のみ編成なので関係なし
```

6. バックアップ
```
前セクションで実行済み
```

7. 空きディスク領域が 5GB 以上
```sh
# 確認済み
df -h /
# Filesystem            Size  Used Avail Use% Mounted on
# /dev/mapper/pve-root   94G   76G   14G  85% /
```

8. [アップグレードの問題](https://pve.proxmox.com/wiki/Upgrade_from_7_to_8#Known_Upgrade_Issues) を確認しておく
```
多分きっとおそらく確認済み
```

# アップグレードする
:::note info
物理コンソールまたは ssh 経由でアップグレードを実行すること。
また、ssh 接続が中断されないように、コンソール経由で実行することをお勧めする。
:::

:::note alert
アップグレード中に接続が中断されるため、
Web GUI の仮想コンソール経由で接続している場合は、アップグレードを実行しないこと。
:::

## pve7to8 チェックリストスクリプト
:::note info
このプログラムは、アップグレードプロセスの前、最中、後に発生する可能性のある問題について、ヒントと警告を知ることができる。
:::
```sh
pve7to8 --full
```

### warn が出たので対策してみる

- Install grub-efi-amd64
```
WARN: System booted in uefi mode but grub-efi-amd64 meta-package not installed, new grub versions will not be installed to /boot/efi! Install grub-efi-amd64.
```
```sh
apt install grub-efi-amd64
```
https://forum.proxmox.com/threads/update-installed-system-booted-in-efi-mode-but-grub-efi-amd64-meta-package-not-installed.137324/

## アップグレード中に実行状態を続けたい場合
アップグレードするノードからアップグレード済みノードに移行する。

が、自環境ではそんなものはないので飛ばす。

## apt リポジトリを更新する
前提条件でやったので飛ばす

## Debian ベースリポジトリを更新する
bullseye から bookworm に更新するためファイル書き換えを行う
```sh
sed -i 's/bullseye/bookworm/g' /etc/apt/sources.list
```

## Proxmox VE 8 リポジトリを追加する
:::note warn
以下はサブスクリプション版の手順なので、サブスクリプション無しの場合は、`/etc/apt/sources.list` の内容を[この内容](https://pve.proxmox.com/wiki/Package_Repositories#sysadmin_no_subscription_repo)にしましょう。

Proxmox VE 7 で非サブスクリプションの設定を行っていれば、Debian リポジトリに置き換えた時の手順で終わっている可能性あり。
:::
```sh
# 削除して新しくする場合
echo "deb https://enterprise.proxmox.com/debian/pve bookworm pve-enterprise" > /etc/apt/sources.list.d/pve-enterprise.list

# 置き換えを使う場合
sed -i -e 's/bullseye/bookworm/g' /etc/apt/sources.list.d/pve-install-repo.list 
```

## Ceph パッケージリポジトリを更新する
現状使用はしていないが念のためやる。

### サブスク版
```sh
echo "deb https://enterprise.proxmox.com/debian/ceph-quincy bookworm enterprise" > /etc/apt/sources.list.d/ceph.list
```

### 非サブスク版
```sh
echo "deb http://download.proxmox.com/debian/ceph-quincy bookworm no-subscription" > /etc/apt/sources.list.d/ceph.list
```

## apt パッケージをリフレッシュする
```sh
apt update
```

## Debian Bookworm, Proxmox VE 8.0 にアップグレードする
アップグレードを行うには以下のコマンドを実行する
環境によっては 5 分未満で終わるが、サーバースペックやネットワーク帯域が弱いと 1 時間かかることもある。
```sh
apt dist-upgrade
```

:::note info
上記の手順では、それぞれのパッケージによってデフォルトの構成が更新された構成ファイルへの変更を承認するように求められる。

問題となっているファイルごとに違いを確認し、設定に最も適した回答を選択することをお勧めする。
:::

0. アップデートニュースのようなものが出るが、`q` で退出できる

0. `Configuration file '/etc/issue'`
Proxmox VE は起動時にこのファイルを自動生成し、ログインコンソールに外観上の効果のみに影響
ここでは、デフォルトの「N」(旧設定を保持する) を使用するのが安全 

0. `Configuring libc6:amd64`
ライブラリアップグレードを行う際に再起動が必要となるが、再起動ごとに確認するか
Yes を選択すると自動的に再起動される。No だと再起動ごとに確認が求められる
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2348896/da90421c-bfbb-fd7a-a9e9-c1f1ddf63c54.png)

0. `Configuration file '/etc/lvm/lvm.conf'`
Proxmox VE に関連する変更が更新され、新しい構成バージョンに役立つことがある。
自分で追加の変更を加えておらず不明な場合は、ここで「Y」(新設定) を選択するとよい

0. `Configuration file '/etc/apt/sources.list.d/pve-enterprise.list'`
おそらく非サブスクリポジトリを追加したときにコメントアウトした変更。
「N」を選択しておけば非サブスクで使えるはず

## もう一度 pve7to8 を実行し問題ないことを確認する
上記同様、もう一度コマンドを実行し問題ないことを確認する
```sh
pve7to8 --full
```

## 再起動し更新を完了する
```sh
reboot
```

# アップグレード完了後
ブラウザキャッシュを空にし、Web UI を強制的に再読み込みさせ動作確認を行う。

# 終わり
無事にアップグレードが完了した！エラーも特になく正常に移行できたかな、？
思ったより簡単だったが、文献がほぼ英語だったのが辛かったかな、、

最後にバージョン確認して終わり！
```sh
pveversion
# pve-manager/8.2.4/faa83925c9641325 (running kernel: 6.8.8-4-pve)
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2348896/2aa5276b-991c-22e3-e0a7-e800d9aa39d3.png)

皆さんも忘れずにアップグレードしておきましょう！

# 参考
https://pve.proxmox.com/wiki/Upgrade_from_7_to_8

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

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

https://remoteroom.jp/diary/2023-10-14/