Linux增加虚拟内存Swapfile

# 禁用现有 Swap(如果有)
sudo swapoff -a

# 创建新的 Swap 文件(示例:16GB)
sudo fallocate -l 16G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile   # 格式化为 Swap
sudo swapon /swapfile   # 启用

# 永久生效(写入 /etc/fstab)
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

# 降低 swappiness(减少使用 Swap 的倾向,推荐 10~30)
echo 'vm.swappiness=10' | sudo tee -a /etc/sysctl.conf

# 启用内存过量提交(避免 Redis 等应用失败)
echo 'vm.overcommit_memory=1' | sudo tee -a /etc/sysctl.conf

# 应用配置
sudo sysctl -p

​💡 替代方案:直接使用 LVM 或 ZFS​


​🚀 总结​

步骤 命令
​删除旧文件​ sudo swapoff /swapfile && sudo rm /swapfile
​创建无空洞文件​ sudo dd if=/dev/zero of=/swapfile bs=1M count=16384 status=progress conv=sparse
​强制填充​ sudo fallocate -l 16G /swapfile
​设置权限​ sudo chmod 600 /swapfile
​格式化 Swap​ sudo mkswap /swapfile
​启用 Swap​ sudo swapon /swapfile
​永久生效​ `echo '/swapfile none swap sw 0 0'

执行后,free -h 必须显示 Swap 已生效!如果仍然失败,建议改用 ​​LVM/ZFS Swap 卷​​ 或检查文件系统类型(ext4 可能需调整挂载选项)。