设置swap文件和调整swap大小

Author Avatar
Administrator
发表:2026-09-29 20:30:40
修改:2026-09-29 20:30:40

下面给你一份通用、可直接照着敲的 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=progress

2️⃣ 设置权限(必须)

sudo chmod 600 /swapfile

✅ 防止其他用户读取 swap 内容(安全风险)


3️⃣ 格式化为 swap

sudo mkswap /swapfile

4️⃣ 启用 swap

sudo swapon /swapfile

验证:

swapon --show
free -h

5️⃣ 开机自动挂载(重要)

编辑 /etc/fstab:

sudo nano /etc/fstab

添加一行:

/swapfile none swap sw 0 0

二、修改 swap 文件大小(扩容 / 缩容)

⚠️ 不能在线 resize,需要关闭 swap 再重建


✅ 示例:从 4G → 8G

1️⃣ 关闭 swap

sudo swapoff /swapfile

2️⃣ 删除旧文件

sudo rm /swapfile

3️⃣ 创建新大小的文件

sudo fallocate -l 8G /swapfile

4️⃣ 重新设置权限 & 格式化

sudo chmod 600 /swapfile
sudo mkswap /swapfile

5️⃣ 重新启用

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=10

2️⃣ vfs_cache_pressure(可选)

sudo sysctl vm.vfs_cache_pressure=50

四、常见坑 & 注意事项

✅ SSD 完全没问题(swap 写入量很小)

✅ btrfs 必须关闭 COW:

sudo chattr +C /swapfile

(创建文件前执行)

❌ 不要在容器(Docker/LXC)里直接创建 swap 文件

❌ 不要用 cp 复制 swap 文件


五、快速总结

操作

命令

创建

fallocate + mkswap + swapon

开机挂载

/etc/fstab

修改大小

swapoff → 删除 → 新建 → swapon

性能

与 swap 分区几乎一致

评论