1. 为什么可以用两个 Swapfile?

Linux 内核支持同时挂载多个 Swap 空间(包括分区和文件)。你可以给不同的 Swapfile 设置不同的 优先级 (Priority)。

  • 建议策略:

    • Swapfile A (在系统盘/SSD): 设置高优先级。虽然只有 10G,但如果系统盘是 SSD,读写延迟低。
    • Swapfile B (在 2T 存储盘): 设置低优先级。作为“最后的防线”,防止内存溢出导致 PBS 进程被 OOM Killer 杀掉。

2. 操作步骤

假设你的 2T 存储挂载在 /mnt/storage:

第一步:创建第一个 Swapfile (例如 2GB,在系统盘)

Bash

fallocate -l 2G /swapfile_sys
chmod 600 /swapfile_sys
mkswap /swapfile_sys
swapon -p 10 /swapfile_sys  # 优先级设为 10

第二步:创建第二个 Swapfile (例如 4GB,在 2T 存储盘)

Bash

fallocate -l 4G /mnt/storage/swapfile_storage
chmod 600 /mnt/storage/swapfile_storage
mkswap /mnt/storage/swapfile_storage
swapon -p 5 /mnt/storage/swapfile_storage  # 优先级设为 5

第三步:持久化配置 (/etc/fstab)

编辑 /etc/fstab,添加以下两行:

Plaintext

/swapfile_sys               none    swap    sw,pri=10   0 0
/mnt/storage/swapfile_storage none    swap    sw,pri=5    0 0

3. 特别提醒(针对 PBS 和小内存)

  • ZFS 注意事项: 如果你的 2T 存储使用了 ZFS,千万不要把 Swapfile 放在 ZFS 文件系统上!这会导致内核死锁。如果存储是 Ext4 或 XFS,则没有问题。
  • Swappiness 调优: 既然内存只有 2G,建议调高 vm.swappiness。

Bash

sysctl vm.swappiness=60
  • 10G 系统盘预警: PBS 的日志和 /var/lib/proxmox-backup 下的索引文件(Chunks index)会随时间增长。

    • 避坑指南: 建议将 PBS 的数据存储目录(Datastore)设在 2T 的盘上,同时通过软链接将 /var/log/proxmox-backup 也指向 2T 盘,防止 10G 系统盘被日志撑爆。

4. 优先级的小知识

当内存不足时,内核会先耗尽 Priority 10 的 Swap,只有当它满了,才会去用 Priority 5 的。这样可以确保你性能最好的磁盘优先承担压力。