Linux系统在运行过程中突然变得像幻灯片一样卡顿,甚至彻底死机?这通常是由于物理内存(RAM)告急,而Swap空间未能有效发挥缓冲作用所致。Swap可以理解为内存的“应急储备库”——当物理内存不足时,系统会将暂时不用的数据转移到Swap区域,为紧急任务腾出运行空间。如果这个“仓库”容量太小或者根本没有启用,系统自然容易因资源耗尽而崩溃。
别担心,为Linux系统增加Swap并不复杂,主要有两种实现方式:一种是创建Swap文件,操作灵活且便于调整;另一种是划分独立分区,性能更稳定。接下来我们就逐步讲解。

一、查看当前Swap状态
在动手操作之前,先摸清系统底细。确认当前是否已配置Swap、容量是多少,这决定了后续的具体扩容方案。
打开终端,执行以下命令快速查看:
free -m
重点关注输出结果中“Swap”行的“total”数值。如果显示为0,说明Swap功能尚未启用。如果已经存在一个数值,但远小于物理内存容量(例如内存8GB,Swap仅512MB),那么很可能就是Swap空间过小,需要扩容。
若想进一步了解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终究只是一种临时补救方案。希望本指南能帮你彻底摆脱内存不足的困扰。
