设置swap文件和调整swap大小
下面给你一份通用、可直接照着敲的 Linux swap 文件操作指南,适用于 Ubuntu / Debian / CentOS / Rocky / Alma / 大部分发行版。
一、使用文件作为 swap(创建 & 启用)
1️⃣ 创建 swap 文件
以创建 4G swap 为例(可按需改大小):
sudo fallocate -l 4G /swapfile如果
fallocate不可用(某些文件系统不支持),用 dd:
sudo dd if=/dev/zero of=/swapfile bs=1G count=4 status=progress2️⃣ 设置权限(必须)
sudo chmod 600 /swapfile✅ 防止其他用户读取 swap 内容(安全风险)
3️⃣ 格式化为 swap
sudo mkswap /swapfile4️⃣ 启用 swap
sudo swapon /swapfile验证:
swapon --show
free -h5️⃣ 开机自动挂载(重要)
编辑 /etc/fstab:
sudo nano /etc/fstab添加一行:
/swapfile none swap sw 0 0二、修改 swap 文件大小(扩容 / 缩容)
⚠️ 不能在线 resize,需要关闭 swap 再重建
✅ 示例:从 4G → 8G
1️⃣ 关闭 swap
sudo swapoff /swapfile2️⃣ 删除旧文件
sudo rm /swapfile3️⃣ 创建新大小的文件
sudo fallocate -l 8G /swapfile4️⃣ 重新设置权限 & 格式化
sudo chmod 600 /swapfile
sudo mkswap /swapfile5️⃣ 重新启用
sudo swapon /swapfile验证:
swapon --show
free -h✅ 缩容(如 8G → 2G)
步骤完全一样,只是 fallocate 大小改小即可。
三、推荐调优(可选但重要)
1️⃣ swappiness(何时使用 swap)
查看当前值:
cat /proc/sys/vm/swappiness服务器:推荐
10桌面:推荐
10–30默认通常是
60
临时修改:
sudo sysctl vm.swappiness=10永久生效:
sudo nano /etc/sysctl.conf添加:
vm.swappiness=102️⃣ vfs_cache_pressure(可选)
sudo sysctl vm.vfs_cache_pressure=50四、常见坑 & 注意事项
✅ SSD 完全没问题(swap 写入量很小)
✅ btrfs 必须关闭 COW:
sudo chattr +C /swapfile(创建文件前执行)
❌ 不要在容器(Docker/LXC)里直接创建 swap 文件
❌ 不要用 cp 复制 swap 文件