安装Proxmox Backup Server新姿势,Systemd Container!

前言

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

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,修改为自己的

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

  • 宿主机是 Debian 的话,新建 /etc/network/if-up.d/mymv,内容如下,其中 eth0 mymv 76:d3:4a:8b:81:47 10.0.0.30 请根据上文的解释和你的实际情况修改。

    #!/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
    

    然后为该脚本增加可执行权限:

    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 请根据上文的解释和你的实际情况修改。

    #!/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
    

    该脚本同样需要可执行权限:

    chmod +x /etc/NetworkManager/dispatcher.d/10-mymv
    
  1. 其他功能详见 Systemd-nspawn

截图

数据存储
系统日志
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,635评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,628评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,971评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,986评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,006评论 6 394
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,784评论 1 307
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,475评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,364评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,860评论 1 317
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,008评论 3 338
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,152评论 1 351
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,829评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,490评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,035评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,156评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,428评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,127评论 2 356

推荐阅读更多精彩内容