安装Proxmox Backup Server新姿势,Syste

2024-01-22  本文已影响0人  EvineDeng

前言

Proxmox Backup Server (简称PBS)作为一个备份服务器,体验还是不错的,它除了备份PVE的虚拟机外,备份系统重要文件体验也是相当不错:backup-client,现在,我使用它的场景几乎都是备份重要文件,无论内网还是公网,备份起来都非常方便。

官方当然推荐的方式是独立的物理机了,个人使用在资源有限的前提下使用虚拟机也没有问题,甚至有人把它改造成Docker容器了:ayufan/proxmox-backup-server。不过,在个人使用的前提下,这些使用方式都有其缺点:

那么有没有一种方式,能规避掉这些缺点呢,有的,那就是 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

apt install debootstrap systemd-container

对于 Arch Linux 和基于 Arch Linux 的系统,系统默认安装的 systemd 已经包含了 systemd-container,只需要安装 debootstrapdebian-archive-keyring

pacman -S debootstrap debian-archive-keyring

安装 Debian Base

Proxmox Backup Server 基于 Debian,在安装 Proxmox Backup Server 前需要先安装 Debian Base,以本文成文时的 Debian 最新稳定版 bookworm 为例:

cd /var/lib/machines
debootstrap --include=dbus-broker,systemd-container --components=main bookworm pbs https://deb.debian.org/debian

其中 https://deb.debian.org/debian 可以替换为国内镜像站点(国内高校开源镜像站汇总)。dbus-brokersystemd-container 是必须安装的,在 Systemd-nspawn 中有解释。

配置密码

cd /var/lib/machines
systemd-nspawn -D ./pbs
passwd
logout

配置macvlan网卡

还是建议 Proxmox Backup Server 使用和宿主机不一样的 IP,这可以使用MacVLAN来实现,在宿主机上为pbs配置:

mkdir -p /etc/systemd/nspawn
nano /etc/systemd/nspawn/pbs.nspawn

然后输入以下内容:

[Exec]
Hostname=pbs

[Network]
## eth0是指基于宿主机上的eth0创建MacVLAN网卡,需要修改为自己的,比如 vmbr0, ens18, eno1等等
MACVLAN=eth0

[Files]
PrivateUsersChown=yes
## Proxmox Backup Server的备份数据存放位置,类似于Docker的映射,冒号左边是宿主机的路径,右边是容器内的路径,如果之前用过Docker,可以直接用的之前配置的路径
Bind=/mnt/data:/mnt/data

启动

machinectl start pbs       # 启动pbs
machinectl shell root@pbs  # 进入pbs

配置网络

因为我们使用以MacVLAN网络,所以要单独地为容器配置网络,进入容器后创建并编辑 /etc/network/interfaces.d/macvlan,内容如下,其中的 mv-eth0 是容器中的MacVLAN虚拟网卡名,可以通过输入命令 ip a 查看到。

auto mv-eth0
iface mv-eth0 inet dhcp
iface mv-eth0 inet6 dhcp

这是按照DHCP的方式来配置的,你也可以按照自己的习惯设置为固定IP。

然后重启网络:

systemctl enable --now networking.service
systemctl restart networking.service

如果后面仍然无法访问网络,则还需要设置DNS服务器,编辑 /etc/resolv.conf,设置nameserver如下面的形式,你可以改为你所使用的DNS服务器。

nameserver 223.5.5.5

安装 Proxmox Backup Server

进入pbs后,配置 Debian 和 Proxmox Backup Server的仓库源,将 /etc/apt/sources.list 修改为这样(基于 Debian 12 bookworm),其中建议前两行修改为你下载最快 国内源, 帮助文档

deb https://deb.debian.org/debian bookworm main contrib
deb https://deb.debian.org/debian bookworm-updates main contrib
deb https://deb.debian.org/debian-security bookworm-security main contrib

信任 Proxmox 的 keyring(只下载了当前版本 bookworm 的 key):

apt install wget
wget http://download.proxmox.com/debian/proxmox-release-bookworm.gpg -O /etc/apt/trusted.gpg.d/proxmox-release-bookworm.gpg

新建 /etc/apt/sources.list.d/pbs.list ,内容如下,也可以修改为你下载最快的 国内源, 帮助文档

deb http://download.proxmox.com/debian/pbs bookworm pbs-no-subscription

安装 Proxmox Backup Server:

apt update
apt install proxmox-backup-server

安装完成以后会多产生一个文件 /etc/apt/sources.list.d/pbs-enterprise.list,将其内容注释掉。

然后就可以愉快的访问 https://<IP>:8007 来配置PBS了,有DDNS的童鞋也可以在webui中设置acme自动更新ssl证书。

其他

  1. 如果想要在 Proxmox Backup Server 可以查看磁盘的SMART信息,则 /etc/systemd/nspawn/pbs.nspawn 下面这样的:
[Exec]
Hostname=pbs
Capability=CAP_SYS_RAWIO

[Network]
## eth0是指基于宿主机上的eth0创建MacVLAN网卡,需要修改为自己的,比如 vmbr0, ens18, eno1等等
MACVLAN=eth0

[Files]
PrivateUsersChown=yes
## Proxmox Backup Server的备份数据存放位置,类似于Docker的映射,冒号左边是宿主机的路径,右边是容器内的路径,如果之前用过Docker,可以直接用的之前配置的路径
Bind=/mnt/data:/mnt/data
## 允许 Proxmox Backup Server 查看哪些磁盘的SMART信息,全部映射给它就好
Bind=/dev/sda
Bind=/dev/sdb
...其他磁盘

然后对上述设置过的磁盘设置允许容器读取信息:

systemctl set-property systemd-nspawn@pbs DeviceAllow='/dev/sda r'
systemctl set-property systemd-nspawn@pbs DeviceAllow='/dev/sdb r'
...其他磁盘
  1. 设置pbs容器在宿主机开机时自启:
machinectl enable pbs
  1. 在容器内默认仍然是宿主机的 hostname ,在容器内可以修改 /etc/hostnamepbs

  2. 如果未来要更新PBS,进入容器后输入 apt update && apt upgrade 就好了,简单方便。

  3. 使用MacVLAN时,默认情况下宿主机无法访问和自身处在同一个子网下的 Systemd 容器,不在一个子网的可以访问,所以建议将PBS的IP设置在和宿主机不在一个子网下。当然,在一个子网也可以访问,可以在宿主机再额外创建一个macvlan桥来达到目的:

ip link add mymv link eth0 type macvlan mode bridge # mymv是新创建的网桥名称(下同),eth0是上述容器内虚拟MacVLAN网卡桥接的宿主机网卡的名称,此二者按需修改
ip link set dev mymv address "76:d3:4a:8b:81:47"    # 新网桥的mac地址你可以按需修改
ip link set mymv up
ip route add "10.0.0.30" dev mymv                   # 10.0.0.30是pbs容器的ip,修改为自己的

在宿主机重启以后,需要再次输入以上命令,如果希望自动化实现,可以根据以下情况的不同来选择。

  1. 其他功能详见 Systemd-nspawn

截图

数据存储 系统日志
上一篇 下一篇

猜你喜欢

热点阅读