PVE 5 升級到 6 紀錄

因為 5/16 開始看到 PVE 5 即將停止支援的訊息, 另外 PVE 6.2 已經能夠讓使用本機硬碟的 VM 進行線上遷移(Live Migration)

  • 本機硬碟是 zfs storage
  • VM 有設定定時複寫到另一台主機, 遷移的資料只有上次複寫之後的差異

所以應該值得將現有 PVE 5 升級到 PVE 6

依照官方的 wiki 說明升級程序, 似乎不太困難, 因此將實際的升級程序操作紀錄在底下

  1. 將現在 PVE 5 所有主機都先生級到最新版本 Exp. 5.4-13 → 5.4-14 (有更新到 linux-kernel 需要重開機)
  2. 確定可以穩定存取每一台的參數檔儲存區 (萬一有異常可以直接進去手動修改)
  3. 確定目前的 Cluster 是健康穩定狀態
  4. 驗證與測試所有 VM 與 CT 的備份都是正確 (萬一出現災難還有降災還原的機會)
  5. 確定是正確升級存儲庫的配置
  6. 根目錄至少要有 1GB 的磁碟空間
  7. Ceph: upgrade the Ceph cluster to Nautilus after you have upgraded: Follow the guide Ceph Luminous to Nautilus
  1. 所有主機都執行升級檢測工具
    pve5to6

    正常應該只會出現一個警告與一個錯誤

    1. 警告 :
      WARN: 8 running guest(s) detected - consider migrating or stopping them.

      正式升級時要遷移或關閉 VM 與 CT

    2. 錯誤 :
      FAIL: corosync 2.x installed, cluster-wide upgrade to 3.x needed!

      所以需要先進行 corosync 升級

      1. 遷移或關閉 VM 與 CT
      2. 再次執行 pve5to6 已經沒有警告項目
      3. 關閉所有主機 HA 機制
        systemctl stop pve-ha-lrm
      4. 每個節點都執行完成關閉 pve-ha-lrm 後才可以執行以下命令
        systemctl stop pve-ha-crm
      5. 設定 Corosync 3 存儲庫
        echo "deb http://download.proxmox.com/debian/corosync-3/ stretch main" > /etc/apt/sources.list.d/corosync3.list
      6. 執行更新 Corosync 3 每一台都執行一遍, 過程會看到部份主機離線, 但還是可以連上
        apt update
        apt list --upgradable
        apt dist-upgrade
      7. 確認 Cluster 是否都正確
        pvecm status
      8. 如果更新都沒問題就啟動 HA 服務
        systemctl start pve-ha-lrm
        systemctl start pve-ha-crm
    3. 所有主機再都執行升級檢測工具
      pve5to6

      正常應該不會出現錯誤項目

  2. 主機升級前, 先將重要的 VM 與 CT 遷移到其他主機上
  3. 再次確認目前執行環境是 PVE 5.4 的最新版本
    apt update
    apt dist-upgrade
  4. 修改 source.list
    sed -i 's/stretch/buster/g' /etc/apt/sources.list
  5. 設定 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
  6. 升級套件確認
    apt update
    apt list --upgradable

    可以看到預計升級的套件清單, 會包含 pve-6.2 2)

  7. 執行升級程序
    apt dist-upgrade
    1. 出現以下訊息, 要輸入 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.
    2. 會跳出一個說明 ← 按下 q 跳開
    3. 會詢問 /etc/issue 要不要修改 ← 預設 N, 不過我是選 Y
    4. 會詢問升級過程一有一些服務需要重新啟動, 是否自動啟動還是要詢問 ← 預設 No, 不過我還是選 Yes
    5. 會詢問 pve-enterprise.list ← 預設 N, 我也是選 N
  8. 重新開機就會是 PVE 6.2
  9. 如果都沒問題就可以將 corosync3 的儲存庫設定移除
    rm /etc/apt/sources.list.d/corosync3.list
要注意更新過程的錯誤訊息, 如果出現
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 來繼續進行


1)
社群版本儲存庫
2)
pve-manager/stable 6.2-4 amd64 [upgradable from: 5.4-15]
  • tech/pve5to6.txt
  • 上一次變更: 2020/05/20 23:21
  • jonathan_tsai