Featured image of post Proxmox VE 删除自带 Swap 并重新创建 Swap 🐧

Proxmox VE 删除自带 Swap 并重新创建 Swap 🐧

Proxmox VE 删除自带 Swap 并重新创建 Swap 🐧 详细指导如何在 Proxmox VE (PVE) 中删除默认的 LVM swap 分区并创建更ା

Proxmox VE 删除自带 Swap 并重新创建 Swap 🐧

详细指导如何在 Proxmox VE (PVE) 中删除默认的 LVM swap 分区并创建更灵活的 swap 文件

✨ 概述

PVE 默认使用 LVM 分区创建 swap 空间,但这种方式不够灵活。本指南将帮助您删除默认的 swap 分区,扩展根分区空间,并创建基于文件的 swap 空间,同时优化系统内存使用策略。


⚠️ 重要提示

在执行以下操作前,请确保:

  1. 已备份重要数据
  2. 系统没有重要任务正在运行
  3. 了解操作风险,不建议在生产环境中随意修改

🔧 一、删除默认 Swap 并创建新 Swap 文件

  1. 查看当前 Swap 分区
1
lvs

确认 swap 逻辑卷的名称和大小

  1. 关闭所有交换空间
1
swapoff -a

禁用所有活跃的 swap 空间

  1. 删除 PVE 默认的 swap 分区
1
lvremove /dev/pve/swap

系统会要求确认操作,输入 y 继续

  1. 扩展根分区逻辑卷
1
lvresize -l +100%FREE /dev/pve/root

将释放的 swap 空间分配给根分区

  1. 调整文件系统大小
1
resize2fs /dev/mapper/pve-root

使文件系统适应新的逻辑卷大小

  1. 创建 16GB 的 swap 文件
1
dd if=/dev/zero of=/swapfile bs=1G count=16 status=progress

bs=1G count=16 创建 16GB 文件,可根据需要调整大小

  1. 设置安全权限
1
chmod 0600 /swapfile

确保只有 root 用户可以访问 swap 文件

  1. 格式化 swap 文件
1
mkswap /swapfile

将文件设置为 swap 格式

  1. 启用 swap 文件
1
swapon /swapfile

立即激活 swap 文件

  1. 备份 fstab 文件
1
cp /etc/fstab /etc/fstab.bak

重要:始终备份系统文件 before 修改

  1. 配置开机自动挂载
1
echo '/swapfile none swap sw 0 0' >> /etc/fstab

添加 swap 文件到启动挂载列表

  1. 验证所有 swap 配置
1
swapon -a

激活 fstab 中所有的 swap 配置

  1. 验证 swap 状态
1
free -h

查看内存和 swap 使用情况


⚙️ 二、配置 Swap 策略优化

  1. 查看当前 swappiness 值
1
2
3
cat /proc/sys/vm/swappiness
# 或
sysctl vm.swappiness

默认值通常为 60,表示系统在内存使用达到 40% 时开始使用 swap

  1. 临时调整 swappiness(重启后失效)
1
2
3
4
5
# 方法 1
sysctl vm.swappiness=10

# 方法 2
echo 10 > /proc/sys/vm/swappiness

值越低,系统越不愿意使用 swap(推荐 10-30 对于服务器)

  1. 永久更改 swappiness 值
1
echo 'vm.swappiness=10' >> /etc/sysctl.conf

将此行添加到 sysctl.conf 文件

  1. 应用新的 sysctl 设置
1
sysctl -p

重新加载配置文件使更改生效


📊 Swap 大小建议

系统内存 推荐 Swap 大小 说明 ≤ 2GB 2×内存 传统建议 2-8GB =内存 平衡方案 8-64GB 4-8GB 服务器推荐 ≥ 64GB 4GB 大内存系统

💡 提示:对于 PVE 主机,8-16GB swap 通常足够,除非运行内存密集型虚拟机


🔍 验证与监控

  1. 检查 swap 状态
1
2
swapon --show
free -h
  1. 监控 swap 使用情况
1
2
3
4
5
# 实时监控
watch -n 1 'free -h'

# 查看详细内存信息
cat /proc/meminfo | grep -i swap
  1. 检查 swappiness 设置
1
2
sysctl vm.swappiness
cat /proc/sys/vm/swappiness

🛠️ 故障排除

  1. 如果 swap 文件创建失败
1
2
3
4
5
# 检查磁盘空间
df -h

# 如果空间不足,考虑减小 swap 文件大小
dd if=/dev/zero of=/swapfile bs=1G count=8 status=progress
  1. 如果无法启用 swap
1
2
3
4
5
# 检查文件格式
file /swapfile

# 重新格式化
mkswap -f /swapfile
  1. 恢复默认配置
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
# 禁用 swap 文件
swapoff /swapfile

# 删除 swap 文件
rm -f /swapfile

# 从 fstab 中移除条目
sed -i '/\/swapfile/d' /etc/fstab

# 恢复默认 swappiness
sed -i '/vm.swappiness/d' /etc/sysctl.conf
echo 60 > /proc/sys/vm/swappiness

💡 高级优化技巧

  1. 使用多个 swap 文件
1
2
3
4
5
6
7
8
# 创建第二个 swap 文件
dd if=/dev/zero of=/swapfile2 bs=1G count=4 status=progress
chmod 0600 /swapfile2
mkswap /swapfile2
swapon /swapfile2

# 添加到 fstab
echo '/swapfile2 none swap sw 0 0' >> /etc/fstab
  1. 调整 swap 优先级
1
2
3
# 在 fstab 中添加优先级(数字越小优先级越高)
echo '/swapfile none swap sw,pri=10 0 0' >> /etc/fstab
echo '/swapfile2 none swap sw,pri=5 0 0' >> /etc/fstab
  1. 定期监控 swap 使用
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
# 创建监控脚本
cat > /usr/local/bin/swap_monitor.sh << 'EOF'
#!/bin/bash
echo "=== Swap Usage Monitor ==="
echo "Date: $(date)"
echo "Total swap: $(free -h | awk '/Swap/ {print $2}')"
echo "Used swap: $(free -h | awk '/Swap/ {print $3}')"
echo "Swappiness: $(cat /proc/sys/vm/swappiness)"
EOF

chmod +x /usr/local/bin/swap_monitor.sh

🚨 注意事项

  1. 性能考虑:swap 文件性能略低于专用 swap 分区,但对于大多数用途足够
  2. SSD 磨损:频繁的 swap 操作可能缩短 SSD 寿命,适当调整 swappiness
  3. 内存充足:如果系统有足够内存,可以考虑完全禁用 swap
  4. 监控:定期检查 swap 使用情况,确保系统性能

🔧 提示:对于数据库服务器或高性能应用,建议使用专用 swap 分区而不是 swap 文件


希望本指南帮助您成功优化 PVE 的 swap 配置!如有问题,请参考 PVE 官方文档或社区论坛。

最后更新于 2025-09-28