linux swap是内存压力下的关键缓冲机制,通过将不活跃页换出到磁盘避免oom崩溃;现代推荐使用swapfile而非分区,因其更灵活易管理,启用需fallocate、chmod 600、mkswap、swapon四步,并配置fstab实现开机自动挂载。

Linux系统中,SWAP不是可有可无的“备胎”,而是内存压力下的关键缓冲机制。物理内存不足时,内核靠它把不活跃页换出到磁盘,避免OOM崩溃。现代实践中,交换文件(swapfile)比交换分区更常用——无需重划磁盘、灵活调整大小、便于管理。
怎么判断当前是否需要SWAP
先看现状,再决定动作:
- 运行
free -h,若 Swap 行 total 为 0,说明尚未启用任何交换空间 - 运行
swapon --show,空输出即表示未启用;有结果则显示已激活的设备或文件及其优先级、使用量 - 观察
cat /proc/meminfo | grep -i swap,重点关注SwapTotal和SwapFree
创建并启用交换文件(推荐方式)
以创建 4GB 交换文件为例,全程在终端执行(需 root 权限):
- 快速分配空间:
fallocate -l 4G /swapfile(速度快,适合大多数文件系统) - 兼容性更强的替代方案:
dd if=/dev/zero of=/swapfile bs=1M count=4096 - 设严格权限(必须):
chmod 600 /swapfile(防止非 root 用户读取敏感内存页) - 格式化为交换区:
mkswap /swapfile - 立即启用:
swapon /swapfile
启用后再次运行 swapon --show 或 free -h 即可确认生效。
让交换文件开机自动启用
否则每次重启都要手动 swapon。编辑 /etc/fstab,追加一行:
注意:
- 第一列是文件路径,必须与你创建的完全一致
- 第二列写 none 或 swap 均可,但惯例用 none
- 第三列固定为 swap,表示文件系统类型
- 第四列 sw 是挂载选项缩写(等价于 defaults),支持 discard(SSD优化)可加 sw,discard
多交换源与优先级控制
系统可同时启用多个 SWAP 源(如一个 swapfile + 一个 swap 分区),内核按优先级(priority)决定使用顺序:
- 默认优先级为 -2;数值越大越优先使用
- 启用时指定:
swapon -p 10 /swapfile和swapon -p 5 /dev/sdb2 - 查看优先级:
swapon --show输出中的PRIO列 - 优先级相同则轮询使用;建议主交换文件设高优先级,备用分区设低值
不复杂但容易忽略











