最后还是没用1c2G10G装PBS,大盘性能毕竟太差了。还是安静的做个存储吧。

既然你使用的是块存储(Block Storage),性能通常比挂载的网络磁盘(如 NFS/WebDAV)要好得多。

对于 PBS (Proxmox Backup Server) 这种极其依赖文件索引和频繁 IO 的服务,我建议使用 LVM 来管理这 2T 存储,但在文件系统选择上要保持克制。

以下是针对你的硬件环境(2G 内存/2T 磁盘)的最佳实践建议:


1. 为什么建议使用 LVM?

即使你现在只有一块 2T 的磁盘,使用 LVM 依然有以下不可替代的优势:

  • 弹性扩展: 如果以后你的存储不够了,再挂载一块新的块存储,你可以通过 lvextend 无缝把两个磁盘合并成一个大的逻辑卷,而无需迁移数据。
  • 管理方便: 你可以在 LVM 上直接划分一个独立的 Logical Volume (LV) 作为 Swap 空间,这比 Swapfile 的性能理论上更稳定。
  • 快照能力: 虽然 PBS 内部有冗余逻辑,但 LVM 快照在某些系统底层维护时非常有用。

2. 最佳方案架构:LVM + Ext4

在 2G 内存 的限制下,千万不要用 ZFS。ZFS 虽然是 Proxmox 的亲儿子,但它的 ARC 缓存会疯狂吞噬内存,在 2G 环境下会导致 PBS 在执行垃圾回收(GC)时频繁触发 OOM(内存溢出)。

最佳配置:

  • 底层: LVM (Logical Volume Manager)
  • 文件系统: Ext4(比 XFS 在处理 PBS 这种数以百万计的小文件时更省资源,且支持缩减容量)。

3. 落地执行步骤

A. 初始化 LVM

假设你的块存储设备是 /dev/sdb(请务必确认名称!):

# 1. 创建物理卷
pvcreate /dev/sdb

# 2. 创建卷组 (命名为 pbs_data)
vgcreate pbs_data /dev/sdb

# 3. 创建逻辑卷 (留一点点余量,比如分配 1.9T,剩下的以后应急)
lvcreate -L 1.9T -n datastore pbs_data

B. 格式化并挂载(针对 PBS 优化)

PBS 会产生海量的 4MB 左右的 chunk 文件,我们需要对 Ext4 进行优化:

# 格式化,启用 64bit 以支持大容量,禁止预留块以榨干空间
mkfs.ext4 -m 0 -O 64bit /dev/pbs_data/datastore

# 挂载时禁用 atime (减少写 IO,提升 PBS 扫描速度)
mkdir -p /mnt/pbs_storage
mount -o noatime /dev/pbs_data/datastore /mnt/pbs_storage

别忘了把挂载信息写入 /etc/fstab:
/dev/pbs_data/datastore /mnt/pbs_storage ext4 noatime,defaults 0 2


4. 关于 Swap 的进阶策略

既然你用了 LVM,你可以考虑把之前想做的第二个 Swapfile 换成 Swap LV:

  1. 在 2T 的 LVM 里分出 8G 做 Swap:

    lvcreate -L 8G -n swap_lv pbs_data
    mkswap /dev/pbs_data/swap_lv
    swapon -p 5 /dev/pbs_data/swap_lv
  2. 系统盘(10G SSD) 依然保留一个 2G 的 Swapfile (优先级设为 10)。
  3. 这样性能最好的 SSD 优先承担交换压力,2T 磁盘作为大容量兜底。

5. PBS 特有的优化(2G 内存活下去的关键)

由于 PBS 在执行 Garbage Collection (GC) 时会扫描所有索引,非常吃内存。

  • 限制 Datastore 缓存: 在 PBS 的 Web UI 创建 Datastore 时,由于我们用的是 Ext4,Linux 内核会自动利用剩余内存做 Page Cache,这比手动限制要智能。
  • 网络调优: 既然这台是存储 VPS,记得把你的 BBR 跑起来,毕竟备份数据流通常很大。


不使用pbs的情况

给大盘划分出一个较大的swap,比用swapfile效率高,且不影响存储区的‘文件碎片’。

准备: 安装lvm2

apt update && apt install lvm2 -y

1. 初始化物理卷 (PV)

如果直接输入 pvcreate 报错,请尝试加上路径 /sbin/。

# 初始化 2T 的 vdb
pvcreate /dev/vdb

2. 创建卷组 (VG)

为了和系统自带的 vg 区分开,建议起名为 vg_data。

# 创建名为 vg_data 的卷组
vgcreate vg_data /dev/vdb

3. 创建逻辑卷 (LV)

A. 创建 Swap 卷 (假设 8G)

lvcreate -L 8G -n lv_swap vg_data

# 格式化并启用
mkswap /dev/vg_data/lv_swap
swapon /dev/vg_data/lv_swap

B. 创建数据卷 (使用剩余所有空间)

lvcreate -l 100%FREE -n lv_storage vg_data

格式化为 ext4 (或者 xfs)

mkfs.ext4 /dev/vg_data/lv_storage

4. 挂载与开机自启

创建挂载点并修改 /etc/fstab:

mkdir -p /data

写入 fstab

cat >> /etc/fstab <<EOF
/dev/vg_data/lv_swap  none  swap  sw  0  0
/dev/vg_data/lv_storage  /data  ext4  defaults  0  2
EOF

挂载数据卷

systemctl daemon-reload

运行

mount -a

注意事项:

  1. 工具路径:如果 pvcreate 依然提示找不到,请执行 export PATH=$PATH:/sbin:/usr/sbin 临时修复环境变量。
  2. 扩容灵活性:之所以建议数据卷不一定要一次性占满 100%FREE,是因为 LVM 支持在线扩容。如果你以后想给 Swap 增加空间,留一点剩余在 VG 里会更方便。
  3. 确认磁盘:请确保 vdb 确实是空的,执行 pvcreate 会擦除该盘上的所有元数据。

ULTRAVPS推荐 AFF 用aff前6个月有15%折扣(活动款除外)