准备装已使用的pve8升9了,但是,升级前做一个整机备份,以防万一。
✅当前环境
- PVE 系统盘:
/dev/sda(包含/、/boot等系统分区) - 虚拟机磁盘:整个
/dev/sdb,挂载在/mnt/lvm(不备份) - 数据存储:由
sdc~sdg组成的mdadm RAID5,挂载在/mnt/data(也不备份内容) - 目标:仅备份 PVE 主机系统本身(即
/dev/sda上的内容),并将备份存放到/mnt/data/pve-system-backup/
🔧备份
1. 先停掉所有虚拟机、LXC,以及停掉 pvedaemon, corosync 等。
# 停掉所有虚拟机
qm list
# 停掉running状态虚拟机id
qm stop <vmid>
# 停掉所有LXC
pct list
# 停掉running状态LXC id
pct stop <vmid>
# 停掉pvedaemon、corosync等
systemctl stop pvedaemon
systemctl stop corosync
2. 创建备份目录
mkdir -p /mnt/data/pve-system-backup
- 执行 rsync 备份命令
rsync -aAXHv --numeric-ids \
--exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/lost+found"} \
--exclude="/mnt/*" \
--exclude="/swapfile" \
--exclude="/var/lib/vz/*" \
/ /mnt/data/pve-system-backup/
3. 关键说明:
- --exclude="/mnt/*":不备份外挂目录
- --exclude="/swapfile":不备份交换文件
- --exclude="/var/lib/vz/*":不备份默认镜像、磁盘文件目录。这些文件比较大可以独立cp备份,还原时再cp回去。文件太大了使用
rsync时有可能因权限、大小或磁盘布局不同导致问题。- 如果还有其他目录可以用
--exclude排除- --numeric-ids:保留原始 UID/GID,避免恢复时权限错乱
- 结尾的 / 很重要:/ 表示“根目录内容”,目标目录会接收这些内容
- 等待长时间备份,备份结果结构示例

🔁还原
假设系统盘 sda 损坏 或 系统无法进入。
1. 安装相同版本的 Proxmox VE 到新 sda
- 使用官方 ISO 安装 完全相同的 PVE 版本
- 分区方案尽量一致(至少要有
/和/boot)
2. 挂载 RAID5 并进入系统
# 启动新系统后,RAID5 应自动组装并挂载到 /mnt/data
# 若未自动挂载:
mdadm --assemble --scan
mount /dev/mdX /mnt/data # 替换为你的 md 设备名
3. 停止服务并还原系统
systemctl stop pve-cluster corosync pvedaemon
# 清空当前根目录(谨慎!确保是新装系统)
# 更安全做法:只覆盖关键目录,或直接格式化 /
# 还原(假设备份在 /mnt/data/pve-system-backup-20251121)
rsync -aAXHv --numeric-ids \
--exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/lost+found"} \
/mnt/data/pve-system-backup/ /
4. 重建 swapfile
# 删除可能残留的旧 swapfile(如果还原时不小心包含了)
sudo swapoff /swapfile
sudo rm -f /swapfile
# 创建新的(例如 8GB)
sudo fallocate -l 8G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
# 永久生效:确保 /etc/fstab 中有这一行
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
5. 修复引导
mount --bind /dev /dev
mount --bind /proc /proc
mount --bind /sys /sys
chroot / <<EOF
grub-install /dev/sda
update-grub
update-initramfs -u -k all
exit
EOF
6. 重启
reboot
重启后,PVE 配置、网络、存储定义都会恢复。
由于 VM 磁盘仍在/dev/sdb(挂载到/mnt/lvm),只要storage.cfg正确,PVE 会自动识别它们!
评论区