本教程介绍如何在 Linux VPS 上通过创建交换文件(Swap File)来扩展虚拟内存,防止小内存服务器因内存耗尽(OOM)而导致服务崩溃。
🛠 核心命令速查(快速部署)
如果您熟悉操作,可以直接按顺序执行以下命令(以创建 2GB Swap 为例):
sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
free -h
📖 详细操作步骤
第一步:创建 Swap 文件
使用 fallocate 命令瞬间分配指定大小的磁盘空间。这里以创建 2GB 为例:
sudo fallocate -l 2G /swapfile
💡 避坑提示:
fallocate速度极快。但在极少数情况下(如老旧文件系统或部分虚拟化架构 VPS),该命令可能会报错。如果报错,请使用传统慢速命令替代:sudo dd if=/dev/zero of=/swapfile bs=1M count=2048💡 终极避坑:如果你的 VPS 使用的是 Btrfs 文件系统,在格式化(mkswap)之前,必须先关闭该文件的写时复制特性,否则激活必报错。只需执行一行:
sudo chattr +C /swapfile即可。
第二步:设置安全权限
为了防止其他普通用户读取 Swap 文件中的内存缓存数据,必须将权限严格限制为仅 root 可读写:
sudo chmod 600 /swapfile
第三步:格式化为 Swap 格式
将刚刚创建的文件正式初始化为交换分区格式:
sudo mkswap /swapfile
第四步:激活并启用 Swap
让系统立即开始使用这个新的虚拟内存空间:
sudo swapon /swapfile
第五步:设置开机自动挂载
上述启用命令在系统重启后会失效。执行以下命令,将配置永久写入系统配置文件 /etc/fstab 中:
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
第六步:验证是否生效
检查系统当前的内存与 Swap 状态:
free -h
如果输出结果中的 Swap: 那一行显示的总量与你设置的大小(如 2.0Gi)一致,说明配置成功!
💡 进阶优化:调整 Swappiness(可选)
swappiness 参数决定了系统有多倾向于使用 Swap。取值范围是 0-100,数值越大,系统越积极地将内存数据移动到 Swap 中。
-
查看当前设置:
cat /proc/sys/vm/swappiness(通常 VPS 默认是 60)
-
推荐修改: 对于普通 VPS,为了保护硬盘寿命并提升物理内存利用率,推荐将值设为 10 或 20:
sudo sysctl vm.swappiness=10 -
永久生效: 将以下配置写入系统配置文件,防止重启复原:
echo 'vm.swappiness=10' | sudo tee -a /etc/sysctl.conf
🗑 如何删除 Swap
如果未来不需要 Swap 了,可以通过以下命令完整卸载并删除:
sudo swapoff /swapfile # 停用 Swap
sudo rm /swapfile # 删除文件
注意:最后需要手动打开
/etc/fstab文件,删掉包含"/swapfile"的那一整行配置。