PVE 重装后快速恢复以前的虚拟机系统

PVE 重装后快速恢复以前的虚拟机系统

题外话:

为了保障PVE系统即便挂了,里面的虚拟机不受一点影响;可以这么做:

1、PVE自身的宿主机系统可以单独装在一个小的固态硬盘中,16G以上的SSD就够用了;如果用U盘也行,最好是三星或闪迪;

2、PVE下的各种虚拟机全部安装在其他机械盘中;这个盘挂载在PVE系统里面;同时保存好原来的/etc/fstab,这里记录了挂载的硬盘;

一、在原来PVE系统里面保存以下文件:

1、备份PVE下各个虚拟机配置文件

PVE虚拟机部署完成后,请及时备份如下目录文件:/etc/pve/
其中如下几个比较重要:
1)qemu-server:保存了虚机的配置信息(/etc/pve/nodes/pve/qemu-server)

2)lxc:保存了PVE下容器的配置信息(/etc/pve/nodes/KISPVE/lxc/)
    -->插播一个题外话:
       lxc容器的root密码忘记了,重置密码办法;宿主机输入:pct enter ID
       pct enter 806
       这个时候可以看到已经进了ID为806的容器里面,再passwd root就能重置密码了

3)storage.cfg:保存了PVE的数据中心各节点存储信息(/etc/pve)

说明:如果挂载有SMB/CIFS 存储;还要记得把密码文件一并要备份,具体位置在这里:/etc/pve/priv/storage/<STORAGE-ID>.pw

4)/etc/default/grub 这个文件主要是存放有硬件直通信息。

2、备份分区挂载配置文件


备份分区挂载配置文件/etc/fstab,这里记载了磁盘的挂载信息,假如丢失或者不记得,会导致虚机磁盘目录不对,无法启动;也可重新挂载。

3、自动启动设置

/etc/crontab 文件中记录了自动启动的命令

38 15 * * * pvesh create /nodes/K3PVE/qemu/200/status/start

二、全新安装PVE

安装好PVE之后需要干的几件事是:

1、替换好国内源;以及去去除无有效订阅+更新lxc容器下载源;

1.更新Debian源

# 中科大Debian源

sed -i.bak 's|^deb http://ftp.debian.org|deb https://mirrors.ustc.edu.cn|g' /etc/apt/sources.list

# 修改文件的同时, 会创建一个.bak后缀的备份文件

sed -i 's|^deb http://security.debian.org|deb https://mirrors.ustc.edu.cn/debian-security|g' /etc/apt/sources.list

2. 更新PVE软件源

2.1 删除或屏蔽默认企业源

rm -rf /etc/apt/sources.list.d/pve-enterprise.list

# 删除企业源

mv /etc/apt/sources.list.d/pve-enterprise.list /etc/apt/sources.list.d/pve-enterprise.list.bak

#屏蔽企业源

2.2更换中科大源

echo "deb https://mirrors.ustc.edu.cn/proxmox/debian/pve bookworm pve-no-subscription" > /etc/apt/sources.list.d/pve-no-subscription.list

3.更新CEPH分布式源

echo "deb https://mirrors.ustc.edu.cn/proxmox/debian/ceph-quincy bookworm no-subscription" > /etc/apt/sources.list.d/ceph.list

sed -i.bak "s#http://download.proxmox.com/debian#https://mirrors.ustc.edu.cn/proxmox/debian#g" /usr/share/perl5/PVE/CLI/pveceph.pm

4.修复https证书并更新软件源

apt update && apt-get install -y apt-transport-https ca-certificates  --fix-missing

5. 更新索引并升级安装软件包

apt update && apt dist-upgrade

6.更新LXC容器仓库员(CT)

sed -i.bak "s#http://download.proxmox.com/images#https://mirrors.ustc.edu.cn/proxmox/images#g" /usr/share/perl5/PVE/APLInfo.pm

# 重启PVE核心守护进程,稍等下手动刷新webui 页面
systemctl restart pvedaemon  

7.删除无效订阅弹窗

sed -Ezi.bak "s/(Ext.Msg.show\(\{\s+title: gettext\('No valid sub)/void\(\{ \/\/\1/g" /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js && systemctl restart pveproxy.service

# 重启pveproxy.service完成后,需注销PVE登录后, 重新启动浏览器

-------------------------------------------------------------------------

追加信息:

其它常用Debian源

#(任选一个源)

# 清华源

sed -i.bak "s#ftp.debian.org/debian#mirrors.tuna.tsinghua.edu.cn/debian#g" /etc/apt/sources.list  

sed -i "s#security.debian.org#mirrors.tuna.tsinghua.edu.cn/debian-security#g" /etc/apt/sources.list

# aliyun源

sed -i.bak "s#ftp.debian.org/debian#mirrors.aliyun.com/debian#g" /etc/apt/sources.list     

sed -i "s#security.debian.org#mirrors.aliyun.com/debian-security#g" /etc/apt/sources.list  

# 163源

sed -i.bak "s#ftp.debian.org/debian#mirrors.163.com/debian#g" /etc/apt/sources.list     

sed -i "s#security.debian.org#mirrors.163.com/debian-security#g" /etc/apt/sources.list     

其它常用软件源 

# 清华源

echo "deb https://mirrors.tuna.tsinghua.edu.cn/proxmox/debian bookworm pve-no-subscription" > /etc/apt/sources.list.d/pve-no-subscription.list

2、更新PVE宿主机到最新;

3、删除local-lvm

使用命令删除 local-lvm lvremove /dev/pve/data

再将 local-lvm 的空间转移到 local,使用命令lvextend -rl +100%FREE /dev/pve/root

web上存储中心 删除 local-lvm 存储;更新local的内容,全选既可;

4、挂载原有的磁盘

1)用blkid命令首先检查原有虚拟机磁盘的硬盘现在是/dev下的那个sd*;

查看硬盘的PARTUUID,使用blkid查看,比如我的分区是/dev/sdb2

将这个PARTUUID写进fstab,注意将我们常规的defaults选项换成nofail,x-systemd.device-timeout=15s 这样防止找不到硬盘,而卡引导;

如下所示:

把这个PARTUUID的磁盘以ext4的磁盘方式挂载到了/mnt/4T

PARTUUID=65d57770-a386-fa46-8db7-68277f3e0f5d /mnt/4T ext4 nofail,x-systemd.device-timeout=5s 0 0

也可以直接恢复备份的fstab,注意查看PARTUUID是否一致既可;

5、开通或恢复硬件直通

恢复的只需要将/etc/default/grub 文件复制到新的PVE下面后,直接更新grub

update-grub

或者直接编辑后重启PVE, 具体如下:

#编辑grub,请不要盲目改。根据自己的环境,选择设置 vi /etc/default/grub #在里面找到:
GRUB_CMDLINE_LINUX_DEFAULT="quiet" #然后修改为:
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt" #如果是amd cpu请改为:
GRUB_CMDLINE_LINUX_DEFAULT="quiet amd_iommu=on iommu=pt"

#如果是需要显卡直通,建议在cmdline再加一句video=vesafb:off video=efifb:off video=simplefb:off,加了之后,pve重启进内核后停留在一个画面,这是正常情况
GRUB_CMDLINE_LINUX_DEFAULT="quiet amd_iommu=on iommu=pt video=vesafb:off video=efifb:off video=simplefb:off"

6、恢复虚拟机、容器、存储信息的配置。

把对应的conf文件直接复制到新的PVE下面, 下面示例的KISPVE也就是我们安装PVE给取的名称

1)qemu-server:恢复虚拟机的配置信息(/etc/pve/nodes/KISPVE/qemu-server)

2)lxc:恢复虚拟机容器的配置信息(/etc/pve/nodes/KISPVE/lxc/)
3)storage.cfg:恢复PVE的数据中心各节点存储信息(/etc/pve)

说明:如果挂载有SMB/CIFS 存储;还要记得把密码文件一并要恢复,具体位置在:/etc/pve/priv/storage/<STORAGE-ID>.pw

7、恢复自启动设置文件 /etc/crontab

将备份的crontab文件复制过来既可

30 8 * * * pvesh create /nodes/K3PVE/qemu/200/status/start

其他事项:

2个PVE或者2个linux只要在同一个局域网,传输文件可以用scp命令

scp -r /mnt/2t/images/102/ root@192.168.6.31:/mnt/4T/images/102/

从前面这个路径复制到后面那个路径;所以在2个PVE随便哪个机器上输入命令都行,主要区分好前后路径就行。

避坑说明:

最近弄PVE服务器,发现以前收藏记录的重装,只备份/var/lib/pve-cluster/config.db 文件的方式来备份恢复PVE,有坑,这个方式只会打不开PVE的web页面,只显示空白出错的页面。不要用这个方式了,至少我的PVE 8.3.2无法成功的

LICENSED UNDER CC BY-NC-SA 4.0