前言
Proxmox Backup Server (简称PBS)作为一个备份服务器,体验还是不错的,它除了备份PVE的虚拟机外,备份系统重要文件体验也是相当不错:backup-client,现在,我使用它的场景几乎都是备份重要文件,无论内网还是公网,备份起来都非常方便。
官方当然推荐的方式是独立的物理机了,个人使用在资源有限的前提下使用虚拟机也没有问题,甚至有人把它改造成Docker容器了:ayufan/proxmox-backup-server。不过,在个人使用的前提下,这些使用方式都有其缺点:
-
物理机,没有独立的物理机给它造。
-
虚拟机,太浪费内存资源,内存资源紧张,能不用虚拟机就不用。
-
Docker容器,更新可能会比官方慢很久,并且功能不完整,比如查看PBS系统日志,比如自动续签SSL证书等等,还有就是镜像一更新就要往磁盘写入几百M甚至几G的数据,对SSD不友好。
-
LXC容器,配置麻烦,想要直接访问宿主上的磁盘要么麻烦,要么性能下降得厉害。
-
还有一种形式,直接在现有NAS系统中安装proxmox-backup-server,但这需要NAS系统是Debian或基于Debian,不过会产生一个新的问题,系统隔离性不好。
那么有没有一种方式,能规避掉这些缺点呢,有的,那就是 Systemd Container。关于它的详细介绍,见 Arch Wiki 上的 Systemd-nspawn,一些常用命令,以及常见问题该链接中都有,本文没有提及的内容请参考该链接。
systemd-nspawn 跟 chroot 命令类似,是个终极版的 chroot。systemd-nspawn 可以在轻量的命名空间容器中运行命令或系统。它比 chroot 强大的地方是,它完全虚拟了文件系统层次结构、进程树、各种 IPC 子系统以及主机名。systemd-nspawn 将容器中各种内核接口的访问限制为只读,像是 /sys, /proc/sys 和 /sys/fs/selinux。网络接口和系统时钟不能从容器内更改,不能创建设备节点。不能从容器中重启宿主机,也不能加载内核模块。相比 LXC 或 Libvirt, systemd-nspawn 更容易配置。
安装
以下均为 root 用户运行的。
基础环境
对于 Debian 和基于 Debian 的系统,需要安装 systemd-container
以及 debootstrap
:
|
|
对于 Arch Linux 和基于 Arch Linux 的系统,系统默认安装的 systemd
已经包含了 systemd-container
,只需要安装 debootstrap
和 debian-archive-keyring
:
|
|
安装 Debian Base
Proxmox Backup Server 基于 Debian,在安装 Proxmox Backup Server 前需要先安装 Debian Base,以本文成文时的 Debian 最新稳定版 bookworm
为例:
|
|
其中 https://deb.debian.org/debian
可以替换为国内镜像站点(国内高校开源镜像站汇总)。dbus-broker
和 systemd-container
是必须安装的,在 Systemd-nspawn 中有解释。
配置密码
|
|
配置macvlan网卡
还是建议 Proxmox Backup Server 使用和宿主机不一样的 IP,这可以使用MacVLAN来实现,在宿主机上为pbs配置:
|
|
然后输入以下内容:
|
|
启动
|
|
配置网络
因为我们使用以MacVLAN网络,所以要单独地为容器配置网络,进入容器后创建并编辑 /etc/network/interfaces.d/macvlan
,内容如下,其中的 mv-eth0
是容器中的MacVLAN虚拟网卡名,可以通过输入命令 ip a
查看到。
|
|
这是按照DHCP的方式来配置的,你也可以按照自己的习惯设置为固定IP。
然后重启网络:
|
|
如果后面仍然无法访问网络,则还需要设置DNS服务器,编辑 /etc/resolv.conf
,设置nameserver如下面的形式,你可以改为你所使用的DNS服务器。
|
|
安装 Proxmox Backup Server
进入pbs后,配置 Debian 和 Proxmox Backup Server的仓库源,将 /etc/apt/sources.list
修改为这样(基于 Debian 12 bookworm),其中建议前两行修改为你下载最快 国内源, 帮助文档。
|
|
信任 Proxmox 的 keyring(只下载了当前版本 bookworm 的 key):
|
|
新建 /etc/apt/sources.list.d/pbs.list
,内容如下,也可以修改为你下载最快的 国内源, 帮助文档。
|
|
安装 Proxmox Backup Server:
|
|
安装完成以后会多产生一个文件 /etc/apt/sources.list.d/pbs-enterprise.list
,将其内容注释掉。
然后就可以愉快的访问 https://<IP>:8007
来配置PBS了,有DDNS的童鞋也可以在webui中设置acme自动更新ssl证书。
其他
- 如果想要在 Proxmox Backup Server 可以查看磁盘的SMART信息,则
/etc/systemd/nspawn/pbs.nspawn
下面这样的:
|
|
然后对上述设置过的磁盘设置允许容器读取信息:
|
|
- 设置pbs容器在宿主机开机时自启:
|
|
-
在容器内默认仍然是宿主机的
hostname
,在容器内可以修改/etc/hostname
为pbs
。 -
如果未来要更新PBS,进入容器后输入
apt update && apt upgrade
就好了,简单方便。 -
使用MacVLAN时,默认情况下宿主机无法访问和自身处在同一个子网下的 Systemd 容器,不在一个子网的可以访问,所以建议将PBS的IP设置在和宿主机不在一个子网下。当然,在一个子网也可以访问,可以在宿主机再额外创建一个macvlan桥来达到目的:
|
|
在宿主机重启以后,需要再次输入以上命令,如果希望自动化实现,可以根据以下情况的不同来选择。
-
宿主机是 Debian 的话,新建
/etc/network/if-up.d/mymv
,内容如下,其中eth0
mymv
76:d3:4a:8b:81:47
10.0.0.30
请根据上文的解释和你的实际情况修改。1 2 3 4 5 6 7 8
#!/bin/sh if [ "$IFACE" = "eth0" ]; then ip link add mymv link eth0 type macvlan mode bridge ip link set dev mymv address "76:d3:4a:8b:81:47" ip link set mymv up ip route add 10.0.0.30 dev mymv fi
然后为该脚本增加可执行权限:
1
chmod +x /etc/network/if-up.d/mymv
-
宿主机是 Arch Linux 的话,如果使用的网络管理软件是
networkmanager
,可以创建/etc/NetworkManager/dispatcher.d/10-mymv
,内容如下,其中eth0
mymv
76:d3:4a:8b:81:47
10.0.0.30
请根据上文的解释和你的实际情况修改。1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
#!/bin/bash export LANG='C' INTERFACE=$1 STATUS=$2 set_ip_route() { if [[ "$INTERFACE" == "eth0" ]]; then ip link add mymv link eth0 type macvlan mode bridge ip link set dev mymv address "76:d3:4a:8b:81:47" ip link set mymv up ip route add 10.0.0.30 dev mymv fi } case "$STATUS" in "up"|"vpn-up") set_ip_route;; esac exit 0
该脚本同样需要可执行权限:
1
chmod +x /etc/NetworkManager/dispatcher.d/10-mymv
- 其他功能详见 Systemd-nspawn。