· 8 min read
全新安装 PVE 并使用旧数据恢复它
喜大普奔,All in boom 了。由于意外停电,PVE 宿主机开机数十分钟后会冻结。日志里没找到特别相关的问题,内存测试跑了一圈,用了一个小时没发现错误。我感觉是硬盘的问题,但是没找到证据能证明。由于有日常本地备份,所以想着直接用控制变量法将两块固态分别重装一次 PVE,跑跑看哪个有问题。有问题的就下岗。所以这次记录一下如何从零开始全新安装 PVE,并使用旧数据恢复我的环境。

Proxmox VE
我使用 Ventoy 来启动 PVE 的安装镜像。
从 Proxmox VE Downloads 找到你想要的系统镜像,下载下来后并托到 Ventoy 的 普通文件分区就行了。
然后在目标主机上插入 U 盘启动 Ventoy,选择 “proxmox-ve_xxx.iso”,然后选择 Normal Mode启动。一定一定不要选 Grab2,会卡在 “Loading initial ramdisk” 这个阶段。
进入 Proxmox VE 安装界面后,要选 GUI 的安装方式,选 CLI 的话,管理网口默认的是 DOWN 的,结果就是无法通过网络访问到 PVE。
小声BB:比较可惜这款工具目前只支持在 Windows 和 Linux 下制作 Ventoy 镜像,我之前就在使用 Ventoy 来做各个系统的启动盘,所以这次继续用它。比较吊诡的是,大概放了一年后,U 盘里的启动引导好像出问题了,放的各个系统的镜像好像还正常。看来 U 盘确实不太适合长期存放文件。最后重新在 Windows 下重做了启动盘后才能用。
OpenWRT
我尽力了,还是没办法在 LXC 下搞定 OpenWRT + Nikki,LXC 下部署 OpenWRT 问题本来就多,好不容易搞定了结果一开 Nikki 又寄了。不知道是 Nikki 更新出了新冲突还是 OpenWRT 又出新反骨,我是放弃了。直接起了 VM 保平安。 现在事情复杂起来了,似乎是构建的各组件依赖有冲突,用 VM 部署还是不正常。我最后换回以前用的 LXC 镜像了,下面是部署方法。
由于我们需要有良好的网络才能继续后面的操作,所以第一个虚拟机得是软路由。
我没有做网口直通之类的操作,而是使用了两个网桥: vmbr0
作为 LAN 口,vmbr1
作为 WAN 口。网桥需要事先创建好。因为我的硬件只有两个网口,所以使用 PVE 默认创建的 vmbr0
作为 LAN 口的网桥。如果你需要配置多个 LAN 口,可以考虑都加进来或者单独再创一个网桥使用。
在 LXC 中创建 OpenWRT
然后下载构建好的镜像,这个是我之前构建的,解压后找到 openwrt-23.05.5-x86-64-generic-rootfs.tar.gz
文件,通过 scp
这类工具复制到 PVE 宿主机中。然后执行下面的命令创建 LXC。
pct create 301 ~/openwrt-23.05.5-x86-64-generic-rootfs.tar.gz \
--arch amd64 \
--hostname OpenWRT \
--rootfs local-lvm:2 \
--memory 2048 \
--cores 6 \
--ostype unmanaged \
--unprivileged 1 \
--features fuse=1,nesting=1 \
--onboot 1 \
--startup order=0 \
--start 1 \
--dev0 /dev/ppp \
--dev1 /dev/net/tun \
--net0 bridge=vmbr0,name=eth0,gw=192.168.31.1,ip=192.168.31.1/24 \
--net1 bridge=vmbr1,name=eth1
最后在 OpenWRT 客户机中的 /etc/init.d/dnsmasq
文件内找到 procd_add_jail_mount /etc/passwd /etc/group /etc/TZ /etc/hosts /etc/ethers
这样的行,追加 /dev/urandom
,最终效果如下:
procd_add_jail_mount /etc/passwd /etc/group /etc/TZ /etc/hosts /etc/ethers /dev/urandom
然后重启容器。
如果有备份之前的 OpenWRT 配置,可以尝试恢复。
在 VM 中创建 OpenWRT
拿出事先准备好的 OpenWRT 的 img 镜像文件。通过 PVE 的 Web GUI 上传或者用 scp 等工具传到 PVE 上。如果是 GUI 上传的,文件路径在这:
执行下面的命令导入镜像到虚拟机的设备列表,这个命令会创建一个带有 OpenWRT 系统的磁盘:
qm disk import 201 /var/lib/vz/template/iso/openwrt-23.05.5-x86-64-generic-ext4-combined-efi.img local-lvm
Proxmox Backup Server
参考这篇文章: Run Proxmox Backup Server (PBS) on a Proxmox VE host
Install the PBS apt repo signing key:
wget https://enterprise.proxmox.com/debian/proxmox-release-bookworm.gpg -O /etc/apt/trusted.gpg.d/proxmox-release-bookworm.gpg
Add the PBS repo to apt:
Open a new file in a text editor:
nano /etc/apt/sources.list.d/pbs-install-repo.list
In the text editor paste in:
# Proxmox Backup Server pbs-no-subscription repository provided by proxmox.com, # NOT recommended for production use deb http://download.proxmox.com/debian/pbs bookworm pbs-no-subscription
CTRL-X, y to save.
Update apt and install:
apt update apt install proxmox-backup-server -y
挂载旧硬盘
由于使用的是有备份数据的旧盘而不是新盘,所以这点有别于新环境的步骤。
挂载旧硬盘:
查看旧硬盘的 UUID:
ls -l /dev/disk/by-uuid
我的硬盘是 st2000,所以下面示例就用这个 st2000 举例。
mkdir /mnt/st2000 mount /dev/disk/by-uuid/<uuid> /mnt/st2000
挂载完成后没问题的话,就可以在
/etc/fstab
中添加挂载信息,以实现开机自动挂载:UUID=<uuid> /mnt/st2000 xfs defaults 0 2
编辑
/etc/proxmox-backup/datastore.cfg
:nano /etc/proxmox-backup/datastore.cfg
我的 PBS 数据都存在硬盘的
backups
目录中,所以增加下面的配置:datastore: st2000 path /mnt/st2000/backups
保存后就会直接在界面上出现存储了,数据都在。
数据存储的目录结构长这样,如果不记得具体位置,可以尝试找到这样结构的目录去试试。
更新:在 3.2.9 后,可以在 GUI 添加已经有数据的目录了。(还没过两周我又重装一次😂。验证过了,从 GUI 添加是 OK 的。)
PVE 连接 PBS
在 PBS 上创建一个用户:
为这个用户增加 /datastore 的管理权限:
复制 PBS 指纹信息:
到 PVE 中增加备份服务器:
恢复数据
完成上面操作后,就可以看到所有的备份数据了。选择你要恢复的进行恢复就好了。
其他
邮件通知
默认情况下似乎收不到邮件,还是需要配一下 SMTP,用已有的电子邮箱服务发信。
创建新的 SMTP 目标后,需要再修改下通知规则,不然其他地方还是不会使用刚刚创建的 SMTP 通知目标的。
这几天一直收到 PVE 实例的邮件系统(mail system)发信失败的通知,是备份成功的通知。但是我确实有收到正常的备份成功的邮件。
我想了下,这个邮件系统应该就是 sendmail
类型的通知,所以我补了上面的步骤,确保只使用了 smtp
类型的通知,但之后还是会在邮箱收到发信失败的通知。又过了两天,我怀疑 PBS 有类似功能,进去看了看,果然有! 按下面步骤直接禁用吧: