Skip to content

aodox/swap

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Linux VPS 一键 Swap 管理脚本

版本:v2.0.0
更新日期:2024年
适用环境:KVM / OpenVZ / LXC 等主流 VPS 架构

功能特性

  • Swap 管理:添加、删除、调整 Swap 大小
  • 智能推荐:根据内存自动计算推荐 Swap 大小
  • 内存优化:swappiness、vfs_cache_pressure 参数调优
  • ZRAM 支持:内存压缩技术,比传统 Swap 更快
  • 多架构支持:KVM 标准方式 + OpenVZ fake_meminfo 方式
  • 命令行模式:支持快捷命令,适合脚本调用

快速开始

方式一:交互式菜单

# 下载并运行
sudo bash swap.sh

方式二:命令行快捷命令

# 查看当前 Swap 状态
sudo bash swap.sh --status

# 添加 2GB Swap
sudo bash swap.sh --add 2048

# 删除 Swap
sudo bash swap.sh --delete

# 查看帮助
sudo bash swap.sh --help

方式三:一键远程执行

# 如果上传到服务器可用此方式
curl -sSL https://your-server.com/swap.sh | sudo bash

功能菜单说明

╔══════════════════════════════════════════════════════════════╗
║      Linux VPS 一键 Swap 管理脚本 v2.0.0                     ║
╚══════════════════════════════════════════════════════════════╝

  [Swap 管理]
    1. 添加 Swap          - 创建新的 Swap 文件
    2. 删除 Swap          - 移除现有 Swap
    3. 调整 Swap 大小     - 修改 Swap 容量
    4. 查看 Swap 状态     - 显示完整内存信息

  [内存优化]
    5. 设置 swappiness           - 控制 Swap 使用倾向
    6. 设置 vfs_cache_pressure   - 控制缓存回收
    7. 一键优化(推荐配置)       - 应用最佳参数

  [高级功能]
    8. ZRAM 压缩内存管理  - 内存压缩技术

    0. 退出

Swap 大小推荐

物理内存 推荐 Swap 大小 说明
≤ 512MB 1024MB (1GB) 内存的 2 倍
1GB 2048MB (2GB) 内存的 2 倍
2GB 4096MB (4GB) 内存的 2 倍
4GB 4096MB (4GB) 内存的 1 倍
8GB+ 8192MB (8GB) 内存的 1 倍

脚本会自动根据当前内存计算推荐值

内存优化参数说明

vm.swappiness

控制内核使用 Swap 的倾向程度。

说明
0 尽可能不使用 Swap(除非内存耗尽)
10 推荐值(服务器) - 优先使用物理内存
60 默认值(桌面系统)
100 积极使用 Swap
# 查看当前值
cat /proc/sys/vm/swappiness

# 临时修改
echo 10 > /proc/sys/vm/swappiness

# 永久修改(写入 /etc/sysctl.conf)
echo "vm.swappiness=10" >> /etc/sysctl.conf
sysctl -p

vm.vfs_cache_pressure

控制内核回收 inode/dentry 缓存的倾向。

说明
0 永不回收(可能导致内存问题)
50 推荐值 - 保留更多缓存
100 默认值
200 积极回收缓存

推荐配置组合

vm.swappiness = 10
vm.vfs_cache_pressure = 50
vm.dirty_ratio = 10
vm.dirty_background_ratio = 5

ZRAM 说明

ZRAM 是 Linux 内核提供的内存压缩技术:

  • 原理:在内存中创建压缩的块设备作为 Swap
  • 优点:比磁盘 Swap 快得多,适合 SSD VPS
  • 缺点:占用 CPU 进行压缩/解压
  • 建议:设置为物理内存的 25%-50%
# 手动启用 ZRAM (512MB)
modprobe zram
echo "512M" > /sys/block/zram0/disksize
mkswap /dev/zram0
swapon -p 100 /dev/zram0

# 查看 ZRAM 状态
zramctl

虚拟化环境说明

KVM

  • 完全支持所有 Swap 操作
  • 使用标准 swapfile 方式

OpenVZ

  • 使用 fake_meminfo 方式模拟 Swap
  • 实际上是将部分容器内存显示为 Swap
  • 重启后需要重新挂载(脚本已自动添加 crontab)

LXC

  • 支持情况取决于宿主机配置
  • 部分功能可能受限

故障排除

1. "swapon 执行失败"

# 检查文件系统是否支持
df -T /

# 如果是 XFS/Btrfs,脚本会自动使用 dd 而非 fallocate

2. "swapoff 执行缓慢"

Swap 正在被使用时,关闭需要将数据写回内存:

# 查看 Swap 使用情况
free -h

# 强制关闭所有 Swap
swapoff -a

3. "磁盘空间不足"

# 检查磁盘空间
df -h /

# 清理不需要的文件后重试

4. 重启后 Swap 消失

检查 /etc/fstab 是否包含 Swap 条目:

cat /etc/fstab | grep swap
# 应该有类似这行:
# /swapfile none swap defaults 0 0

文件说明

文件路径 说明
/swapfile Swap 文件
/etc/fstab 开机自动挂载配置
/etc/sysctl.conf 内核参数配置
/proc/swaps 当前 Swap 状态
/proc/sys/vm/swappiness 当前 swappiness 值

参考项目

本脚本参考了以下优秀开源项目:

更新日志

v2.0.0

  • 新增:ZRAM 压缩内存支持
  • 新增:swappiness / vfs_cache_pressure 设置
  • 新增:一键优化功能
  • 新增:命令行参数支持
  • 新增:OpenVZ fake_meminfo 支持
  • 优化:自动推荐 Swap 大小
  • 优化:磁盘空间预检查
  • 优化:文件系统兼容性(XFS/Btrfs)
  • 修复:fstab 重复条目问题
  • 修复:命令执行错误处理

v1.0.0

  • 基础 Swap 添加/删除/调整功能

许可证

MIT License

About

一键增加vps虚拟内存,适用于 KVM、OpenVZ 等主流 VPS 架构。

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages