Linux系统跑着跑着突然卡成幻灯片,甚至直接死机?这多半是物理内存(RAM)告急,而Swap空间又没起到缓冲作用。Swap,你可以把它理解成内存的“应急仓库”,当物理内存不够用时,系统会把一些暂时不用的数据挪到这里,给紧急任务腾出地方。如果这个仓库太小或者压根没开,系统自然就容易“撑死”。
别担心,给Linux加Swap不算难事,主要有两种路子:一种是创建Swap文件,灵活方便;另一种是划出独立分区,性能更稳。下面咱们就一步步来。

一、检查当前Swap状态
动手之前,先摸清家底。看看系统现在有没有Swap,有多大,这决定了我们后续要怎么做。
打开终端,用这个命令看一眼:
free -m
重点看输出里“Swap”那一行的“total”值。如果显示是0,那就说明Swap功能根本没启用。如果有个数值,但远小于你的物理内存(比如你内存是8G,Swap才512M),那很可能就是它太小了,需要扩容。
如果想更详细地看看Swap设备在哪,可以补两个命令:
swapon -s 或者 cat /proc/swaps
二、使用swapfile方式动态增加Swap空间
这是现在最推荐的方法,尤其对新手和大多数桌面、服务器环境。它不用动磁盘分区,不用重启,就像在硬盘上划出一个特定大小的文件来当Swap用。
1. 创建Swap文件
先找个空间充足的目录,比如 /var 或 /(根目录)。然后,用dd命令创建一个指定大小的空文件。下面这个例子是创建一个4GB的文件:
dd if=/dev/zero of=/var/swapfile bs=1M count=4096
2. 设置严格权限
为了防止安全风险,必须把这个文件的权限设成只有root能读写:
chmod 600 /var/swapfile
3. 格式化为Swap格式
告诉系统这个文件是拿来当Swap用的:
mkswap /var/swapfile
4. 立即启用它
现在就让这个Swap文件开始工作:
swapon /var/swapfile
5. 确认生效
再次运行 free -m,看看Swap的总量是不是已经增加了。
三、使用独立分区方式永久扩展Swap
如果你对系统I/O性能有更高要求,或者磁盘布局允许,可以专门分出一个磁盘分区来做Swap。这种方法理论上效率稍高一点。
1. 创建Swap分区
使用 fdisk 或 parted 工具,在一块有未分配空间的磁盘上创建一个新分区。记住,在设置分区类型时,要选 82 (Linux swap)。
2. 格式化分区
假设新分区是 /dev/sdb2,运行:
mkswap /dev/sdb2
3. 启用分区
swapon /dev/sdb2
4. 验证
用 swapon -s 命令,应该能看到新分区及其大小。
5. 持久化配置(关键!)
为了重启后还能用,必须把这一行加到 /etc/fstab 文件末尾:
/dev/sdb2 swap swap defaults 0 0
四、配置开机自动挂载Swap
不管你用上面哪种方法,如果不做这一步,下次重启系统后,新增的Swap就没了,问题还会重现。
1. 编辑fstab文件
vi /etc/fstab
2. 添加挂载项
在文件最后加一行。如果是Swap文件,就这样写(路径换成你的实际位置):
/var/swapfile swap swap defaults 0 0
如果是Swap分区,写法见上一节第5步。
3. 检查配置
保存退出后,运行下面命令测试一下配置有没有语法错误,没报错就是对的:
mount -a
4. 手动加载测试
重启前,可以先用 swapon -a 命令让所有fstab里定义的Swap都生效,再用 free -m 确认一下。
五、关闭并清理旧Swap资源
当你新增的Swap稳定运行后,如果旧的Swap文件或分区不再需要了,最好清理掉,避免浪费空间和潜在冲突。
1. 停用旧Swap
swapoff /var/swapfile 或 swapoff /dev/sdb2
2. 移除fstab中的配置
编辑 /etc/fstab,删除对应旧Swap的那一行。
3. 删除Swap文件(仅文件方式)
rm -f /var/swapfile
4. 删除Swap分区(仅分区方式)
如果确定分区不要了,可以用 fdisk 等工具删除该分区,并更新分区表。
走完这几步,你的Linux系统就拥有了一个更充裕的“内存缓冲区”。对于大多数场景,Swap大小设置为物理内存的1到2倍是个不错的起点。当然,如果条件允许,直接给物理内存扩容才是治本之策,Swap终究只是个补救方案。希望这个指南能帮你摆脱内存不足的困扰。