今天心血来潮,想把闲置服务器的PVE7.4-17升级到最新的PVE8.1,主要也是给我的inter cpu的mini主机先探探路,毕竟生产设备不能随便拿来升级,失败了就惨了。
前面的步骤我就跳过了,毕竟不是重点,并且网上的教程也很多,大家可以参考这位博主的文章:Proxmox VE(PVE) 7.X 升级到 8.0 教程。
关键问题在于在运行到关键一步,运行以下命令升级pve8.0的时候:
apt dist-upgrade -y
结果出现下图的错误并导致升级8.0失败:
这可能是因为我以前准备研究ceph的时候动过ceph的一些依赖有关。不管咋说问题出现就要解决,我在网上搜索了半天,最后终于解决了,这里就把解决步骤记录一下。
1、编辑pveapthook配置文件
vim /etc/apt/apt.conf.d/10pveapthook
如下图,并保存退出:
2、依次运行如下命令
dpkg --configure -a
apt-get --fix-broken install
apt full-upgrade
3、查看librbd1的依赖关系
apt-get install librbd1=16.2.11+ds-2
可以看到librbd1的依赖关系如红框中所示:
先安装需要的依赖关系librados2:
apt-get install librados2=16.2.11+ds-2
4、然后依次安装如下依赖:
apt-get install librbd1=16.2.11+ds-2
apt-get install python3-ceph-argparse=16.2.11+ds-2
apt-get install python3-ceph-common=16.2.11+ds-2
apt-get install python3-cephfs=16.2.11+ds-2
apt-get install python3-rbd=16.2.11+ds-2
如果安装某步的时候出现报错,就像上节一样先安装缺少的依赖,比如我在安装第4条的时候出现报错:
我就先运行以下命令安装缺少的依赖:
apt-get install libcephfs2=16.2.11+ds-2
apt-get install python3-rados=16.2.11+ds-2
然后重新运行报错的命令就能成功了。
5、重新安装proxmox-ve
apt-get install --reinstall proxmox-ve
6、重新编辑pveapthook配置文件,将里面的"#"注释全部去掉,保存退出,这里可以reboot一下。
7、重新运行apt dist-upgrade -y
,已经可以正常升级了:
直接回车:
直接回车:
成功:
注1:大家升级之前,老版本pve上的虚拟机都要做好备份,我以前出过一次问题,导致虚拟机都没了,还好那时虚拟机不多,如果是现在,估计我跳楼的心都有了~~~~如果是生产环境的PVE,谨慎升级,跨大版本升级的确有风险,除非是确认新版本有新功能对自己很重要,否则还是不要轻易升级,因为对一般人来说,基本感觉不到区别~。
注2:如果升级过程中真出了问题,其实也不用太过绝望,可以直接使用在linux上全新安装PVE的方式直接安装新版本,文件都在的话,虚拟机也不会丢失。