最常用、最稳妥的方案是用大文件充当swap,关键四步:分配空间(fallocate/dd)、设权限(chmod 600)、格式化(mkswap)、激活(swapon);需写入/etc/fstab持久化,并注意文件系统兼容性与swappiness调优。

在没有空闲分区的情况下,用一个大文件充当 swap 是最常用、最稳妥的方案。它不需要调整磁盘分区表,不破坏现有数据,适合云服务器、已部署系统或磁盘空间紧张的环境。
创建并启用 swap 文件的关键步骤
核心操作分四步:分配空间 → 设置权限 → 格式化 → 激活。每一步都有明确目的,缺一不可。
-
分配真实块空间:不能用
touch或重定向生成空文件,必须用fallocate(推荐)或dd分配实际磁盘块。例如创建 2GB swap 文件:fallocate -l 2G /swapfile
若fallocate报错(如 ext3 或某些 XFS 配置不支持),改用:dd if=/dev/zero of=/swapfile bs=1M count=2048 -
严格设置文件权限:swap 文件必须仅 root 可读写,否则
swapon会拒绝加载:chmod 600 /swapfilechown root:root /swapfile -
格式化为 swap 类型:
mkswap /swapfile
成功后会输出 UUID 和大小信息,说明已准备好被系统识别。 -
立即启用:
swapon /swapfile
执行后可用swapon --show或free -h验证是否生效。
让 swap 文件开机自动挂载
临时启用只在当前会话有效。要持久化,需写入 /etc/fstab:
- 编辑 fstab:
echo '/swapfile none swap sw 0 0' >> /etc/fstab - 注意字段顺序和语法:路径、
none(挂载点无意义)、swap(文件系统类型)、sw(挂载选项)、两个0(dump/pass 不用于 swap) - 建议先运行
swapon --verify --verbose /swapfile确保配置无误,再重启测试
常见失败原因与应对
不是所有路径或文件系统都支持 swap 文件:
- “Text file busy” 或 “Permission denied”:文件正被其他进程占用(如 vim 临时锁、journal 写入),或权限未设为 600;
- “Invalid argument”:目标路径位于 tmpfs、overlayfs、NFS 或某些加密文件系统上 —— swap 文件必须建在本地 ext4/xfs 等原生文件系统中;
-
“No space left on device”:即使
df显示有空间,也可能因 inode 耗尽或配额限制导致fallocate失败,此时换用dd更可靠。
后续优化建议
启用后别忘了调优内核行为:
- 查看当前 swappiness:
cat /proc/sys/vm/swappiness - 对内存充裕的服务器(如 16GB+),建议设为 10 或更低:
sysctl vm.swappiness=10
并写入/etc/sysctl.conf持久生效 - swap 文件大小建议参考:物理内存 ≤ 2GB → 设为 2 倍;2–64GB → 设为等量或 +2GB;>64GB → 4–8GB 通常足够,避免过度依赖磁盘交换影响性能











