首页/系统/Linux 运维命令速查/swap 文件创建与启用
磁盘与文件系统51 条

swap 文件创建与启用

无独立分区时用文件做交换空间:fallocate/dd 建文件、mkswap 格式化、swapon 启用、fstab 持久化;云主机扩容内存不足的常用低成本手段。

Linux 运维命令速查系统更新于 2026-10-13

swap 文件是怎么工作的

没有独立交换分区时,用普通文件充当交换空间:fallocate(或 dd)建文件、chmod 600 收紧权限、mkswap 写入交换区签名、swapon 启用,最后写进 /etc/fstab 持久化。云主机内存吃紧、临时扩容时这是成本最低的手段。需要明确的是 swap 只是兜底:被大量使用时页面换入换出会让延迟成倍上升,它延后 OOM 而不是避免 OOM。

基本信息

适用平台Linux(ext4/XFS 上 fallocate 可直接用;Btrfs 需先关 COW)
权限要求root
关键命令fallocate/dd、chmod、mkswap、swapon
持久化/etc/fstab 增加 swap 行
常用调优vm.swappiness(默认 60,服务器常降到 10 左右)
查看swapon --show、free -h、cat /proc/swaps

典型使用场景

  • 云主机因内存不足触发 OOM 杀掉进程,临时加 swap 顶过高峰
  • 小规格实例跑编译、打包等瞬时吃内存的任务
  • 集群节点统一做兜底配置,避免个别节点先崩
  • 迁移或新机上架期间临时补交换空间
  • 排查内存问题时验证“把换出压力降下来”的效果(配合 swappiness)

创建与启用

创建与启用
sudo fallocate -l 2G /swapfile      # 建 2G 文件(Btrfs 上先 chattr +C 目录再建)
sudo chmod 600 /swapfile            # 权限必须收紧,否则 swapon 直接拒绝
sudo mkswap /swapfile               # 写入交换区签名
sudo swapon /swapfile               # 立即启用
swapon --show && free -h            # 复核生效大小与内存余量
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab   # 持久化
sudo swapon -a                      # 按 fstab 重新启用全部 swap 条目(验证写法正确)
findmnt --verify                    # 顺带校验 fstab 语法
sudo sysctl -w vm.swappiness=10     # 临时降低换出倾向;写 /etc/sysctl.d/ 才持久

关键检查项

检查项要求不满足的后果
文件权限必须为 600组或其他用户可读时 swapon 拒绝启用
文件系统类型Btrfs 需先关 COW(chattr +C)在开启 COW 的文件上启用会失败
所在磁盘容量给 swapfile 留出稳定余量换出一多就把磁盘写满,引发连锁故障
vm.swappiness服务器通常调低到 10 左右默认 60 容易频繁换出,延迟抖动明显
磁盘介质SSD 上大量换出会加快磨损写寿命被无关的换页消耗
不支持 fallocate 的文件系统或老内核用 dd if=/dev/zero of=/swapfile bs=1M count=2048 生成文件,之后步骤相同;Btrfs 上必须先在目标目录执行 chattr +C 再创建文件。
把 swap 当成内存扩容会掩盖真实的容量问题:页面换入换出使延迟成倍增加,正确做法是加内存或限制应用内存上限,swap 仅用于兜底。

易错点

  • 权限不是 600:swapon 直接报错拒绝启用,容易被误判为命令语法问题
  • 忘记写 fstab 或字段写错:重启后 swap 消失,容量问题再次出现;用 swapon -a 与 findmnt --verify 验证
  • 在 Btrfs 上直接 fallocate 建文件当 swap:COW 机制导致无法使用,需先在目录上关 COW
  • 把 swapfile 放在容量紧张的根分区:一旦大量换出就写满磁盘,故障范围远超内存问题本身
  • 以为加了 swap 就不会 OOM:物理内存耗尽时 OOM killer 仍会动手,swap 只是延后

数据来源与参考

  • man 8 swapon
  • man 8 mkswap
  • Red Hat 文档:Adding swap space

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌