发布于 2026-02-15
记录如何在 Ubuntu 上创建并启用 Swap 交换空间,并配置为开机自动生效,同时包含可选的内核参数调优步骤。
参考原文: https://www.digitalocean.com/community/tutorials/how-to-add-swap-space-on-ubuntu-20-04
Swap 是硬盘上的一块空间,用于在物理内存(RAM)不足时临时存放数据。
当系统内存压力较大时,内核会把部分不活跃数据从内存移动到 Swap,以避免 OOM(内存耗尽)导致进程被杀或系统崩溃。
注意:
sudo swapon --show
如果没有输出,说明当前系统没有启用 Swap。
free -h
如果 Swap 行显示为 0B,说明未配置 Swap。
在创建 Swap 文件前,需要确认磁盘空间足够。
df -h
重点查看根目录 / 的可用空间,确保可以容纳你计划创建的 Swap 大小。
以下示例创建一个 4G 的 Swap 文件(可根据需求调整大小,例如 1G、2G、4G 等)。
sudo fallocate -l 4G /swapfile
ls -lh /swapfile
应显示大小为 4.0G 左右。
Swap 文件必须只允许 root 访问:
sudo chmod 600 /swapfile
验证权限:
ls -lh /swapfile
权限应为:
-rw-------
sudo mkswap /swapfile
sudo swapon /swapfile
sudo swapon --show
或者:
free -h
此时应能看到新增的 Swap 空间。
默认情况下,重启后 Swap 不会自动加载,需要写入 /etc/fstab。
sudo cp /etc/fstab /etc/fstab.bak
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
这样系统每次启动都会自动加载 /swapfile。
swappiness 决定系统使用 Swap 的积极程度。
取值范围:0 - 100
默认值通常为 60。
cat /proc/sys/vm/swappiness
sudo sysctl vm.swappiness=10
编辑配置文件:
sudo micro /etc/sysctl.conf
添加:
vm.swappiness=10
保存退出。
该参数控制内核回收 inode/dentry 缓存的积极程度。
默认通常为 100。
cat /proc/sys/vm/vfs_cache_pressure
sudo sysctl vm.vfs_cache_pressure=50
编辑:
sudo micro /etc/sysctl.conf
添加:
vm.vfs_cache_pressure=50
保存退出。
重启服务器:
sudo reboot
重启后检查:
swapon --show
或:
free -h
如果仍然显示 Swap 空间,则说明配置成功。
完成上述步骤后:
Swap 可以在低内存服务器(如 2G 内存云主机)上显著提升稳定性,但不应作为长期替代物理内存的方案。