PVE 5 升級到 6 紀錄
因為 5/16 開始看到 PVE 5 即將停止支援的訊息, 另外 PVE 6.2 已經能夠讓使用本機硬碟的 VM 進行線上遷移(Live Migration)
- 本機硬碟是 zfs storage
- VM 有設定定時複寫到另一台主機, 遷移的資料只有上次複寫之後的差異
所以應該值得將現有 PVE 5 升級到 PVE 6
依照官方的 wiki 說明升級程序, 似乎不太困難, 因此將實際的升級程序操作紀錄在底下
升級程序
預先準備
- 將現在 PVE 5 所有主機都先生級到最新版本 Exp. 5.4-13 → 5.4-14 (有更新到 linux-kernel 需要重開機)
- 確定可以穩定存取每一台的參數檔儲存區 (萬一有異常可以直接進去手動修改)
- 確定目前的 Cluster 是健康穩定狀態
- 驗證與測試所有 VM 與 CT 的備份都是正確 (萬一出現災難還有降災還原的機會)
- 確定是正確升級存儲庫的配置
- 根目錄至少要有 1GB 的磁碟空間
- Ceph: upgrade the Ceph cluster to Nautilus after you have upgraded: Follow the guide Ceph Luminous to Nautilus
執行升級
- 所有主機都執行升級檢測工具
pve5to6
正常應該只會出現一個警告與一個錯誤
- 警告 :
WARN: 8 running guest(s) detected - consider migrating or stopping them.
正式升級時要遷移或關閉 VM 與 CT
- 錯誤 :
FAIL: corosync 2.x installed, cluster-wide upgrade to 3.x needed!
所以需要先進行 corosync 升級
- 遷移或關閉 VM 與 CT
- 再次執行 pve5to6 已經沒有警告項目
- 關閉所有主機 HA 機制
systemctl stop pve-ha-lrm
- 每個節點都執行完成關閉 pve-ha-lrm 後才可以執行以下命令
systemctl stop pve-ha-crm
- 設定 Corosync 3 存儲庫
echo "deb http://download.proxmox.com/debian/corosync-3/ stretch main" > /etc/apt/sources.list.d/corosync3.list
- 執行更新 Corosync 3 每一台都執行一遍, 過程會看到部份主機離線, 但還是可以連上
apt update apt list --upgradable apt dist-upgrade
- 確認 Cluster 是否都正確
pvecm status
- 如果更新都沒問題就啟動 HA 服務
systemctl start pve-ha-lrm systemctl start pve-ha-crm
- 所有主機再都執行升級檢測工具
pve5to6
正常應該不會出現錯誤項目
- 主機升級前, 先將重要的 VM 與 CT 遷移到其他主機上
- 再次確認目前執行環境是 PVE 5.4 的最新版本
apt update apt dist-upgrade
- 修改 source.list
sed -i 's/stretch/buster/g' /etc/apt/sources.list
- 設定 PVE 6 的儲存庫 Exp. deb http://download.proxmox.com/debian/pve buster pve-no-subscription 1)
echo "deb http://download.proxmox.com/debian/pve buster pve-no-subscription" > /etc/apt/sources.list.d/pve-install-repo.list
- 升級套件確認
apt update apt list --upgradable
可以看到預計升級的套件清單, 會包含 pve-6.2 2)
- 執行升級程序
apt dist-upgrade
- 出現以下訊息, 要輸入 enter 來確認繼續升級
W: (pve-apt-hook) !! ATTENTION !! W: (pve-apt-hook) You are attempting to upgrade from proxmox-ve '5.4-2' to proxmox-ve '6.2-1'. Please make sure to read the Upgrade notes at W: (pve-apt-hook) https://pve.proxmox.com/wiki/Upgrade_from_5.x_to_6.0 W: (pve-apt-hook) before proceeding with this operation. W: (pve-apt-hook) W: (pve-apt-hook) Press enter to continue, or C^c to abort.
- 會跳出一個說明 ← 按下 q 跳開
- 會詢問 /etc/issue 要不要修改 ← 預設 N, 不過我是選 Y
- 會詢問升級過程一有一些服務需要重新啟動, 是否自動啟動還是要詢問 ← 預設 No, 不過我還是選 Yes
- 會詢問 pve-enterprise.list ← 預設 N, 我也是選 N
- 重新開機就會是 PVE 6.2
- 如果都沒問題就可以將 corosync3 的儲存庫設定移除
rm /etc/apt/sources.list.d/corosync3.list
要注意更新過程的錯誤訊息, 如果出現
zpool: symbol lookup error: /lib/libzfs.so.2: undefined symbol: efi_rescan
千萬不要立即重新開機, 可以嘗試執行
zpool: symbol lookup error: /lib/libzfs.so.2: undefined symbol: efi_rescan
千萬不要立即重新開機, 可以嘗試執行
apt-get install libuutil1linux:amd64=0.7.13-pve1~bpo2
先修復看看, 可以執行
zpool list
看看是否有修復成功
root@TP-PVE-249:~# zpool list NAME SIZE ALLOC FREE EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT rpool 928G 1.48G 927G - 0% 0% 1.00x ONLINE -
萬一更新到一半發生網路斷線, 或跳離 PVE shell console 可以透過以下方式修復
apt -f install
會出現應該可以解決問題的命令.. Exp.
E: dpkg was interrupted, you must manually run 'dpkg --configure -a' to correct the problem.
所以就改下 dpkg –configure -a 來繼續進行