· 8 min read

全新安装 PVE 并使用旧数据恢复它

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

Ventory 启动 PVE 安装器镜像时要选普通模式

进入 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 上传的,文件路径在这:

通过 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:

  1. Open a new file in a text editor:

    nano /etc/apt/sources.list.d/pbs-install-repo.list
  2. 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.

  3. Update apt and install:

    apt update
    apt install proxmox-backup-server -y

挂载旧硬盘

由于使用的是有备份数据的旧盘而不是新盘,所以这点有别于新环境的步骤。

  1. 挂载旧硬盘:

    查看旧硬盘的 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
  2. 编辑 /etc/proxmox-backup/datastore.cfg:

    nano /etc/proxmox-backup/datastore.cfg

    我的 PBS 数据都存在硬盘的 backups 目录中,所以增加下面的配置:

    datastore: st2000
        path /mnt/st2000/backups

    保存后就会直接在界面上出现存储了,数据都在。

    PBS 旧硬盘的数据存储配置生效截图

    数据存储的目录结构长这样,如果不记得具体位置,可以尝试找到这样结构的目录去试试。

    PBS 数据存储的目录结构

    更新:在 3.2.9 后,可以在 GUI 添加已经有数据的目录了。(还没过两周我又重装一次😂。验证过了,从 GUI 添加是 OK 的。)

    GUI 添加旧存储

PVE 连接 PBS

  1. 在 PBS 上创建一个用户:

    创建用户

  2. 为这个用户增加 /datastore 的管理权限:

    在 PBS 中为用户增加所有数据存储的管理权限

  3. 复制 PBS 指纹信息:

    PBS 实例指纹

  4. 到 PVE 中增加备份服务器:

    加备份服务器的入口

    在 PVE 中增加备份服务器

恢复数据

完成上面操作后,就可以看到所有的备份数据了。选择你要恢复的进行恢复就好了。

在 PVE 中能查看到备份列表

其他

邮件通知

默认情况下似乎收不到邮件,还是需要配一下 SMTP,用已有的电子邮箱服务发信。

创建 SMTP 通知目标入口

创建新的 SMTP 目标后,需要再修改下通知规则,不然其他地方还是不会使用刚刚创建的 SMTP 通知目标的。

更改规则

更改规则2

这几天一直收到 PVE 实例的邮件系统(mail system)发信失败的通知,是备份成功的通知。但是我确实有收到正常的备份成功的邮件。

在邮箱中收到发信失败的通知

我想了下,这个邮件系统应该就是 sendmail 类型的通知,所以我补了上面的步骤,确保只使用了 smtp 类型的通知,但之后还是会在邮箱收到发信失败的通知。又过了两天,我怀疑 PBS 有类似功能,进去看了看,果然有! 按下面步骤直接禁用吧:

禁用 Proxmox Backup Server 通知

Back to Blog

相关文章

查看更多 »

在本地运行 Act Runner

这是一个快速步骤备忘录,用于快速手动在 ArchLinux 上运行 Act Runner 并连接到 Gitea 实例。

LumiDock Flex:双色温主动散热台灯

LumiDock Flex:双色温主动散热台灯

这是我制作的第三款照明设备,最大支持 16 W 的 LED 灯。带有 1/4 英寸固定接口,既可以连接支架后作为台灯使用,也可以使用内部锂电池临时作为移动照明灯使用。为了支持 16 W 的灯光功率,还增加了主动散热能力,外壳使用普通树脂光固化打印。