Linux中可用文件创建Swap,即用普通磁盘文件模拟交换空间,适用于无空闲分区、虚拟机或临时扩容场景;需确保足够磁盘空间,用fallocate或dd创建文件,chmod 600设权限,mkswap格式化后swapon启用,并通过fstab配置UUID实现开机自动挂载。

Linux 中通过文件创建 Swap,本质是用一个普通磁盘文件模拟交换空间,适合没空闲分区、虚拟机或临时扩容的场景。操作不复杂但权限和顺序不能错。
准备一个安全可用的 swap 文件
先确认根目录(或目标挂载点)有足够空闲空间,比如要建 2GB 文件,就得至少剩 2.5GB 避免写满。推荐用 fallocate 快速分配(比 dd 更快且不实际写零):
- fallocate -l 2G /swapfile
- 若系统不支持 fallocate,改用 dd:dd if=/dev/zero of=/swapfile bs=1G count=2
- 立刻设权限:chmod 600 /swapfile(必须,否则 swapon 会拒绝启用)
格式化并启用 swap 文件
swap 文件不是普通文件,得用 mkswap 标记为交换类型,再用 swapon 挂载生效:
- mkswap /swapfile(输出含 UUID,记下来备用)
- swapon /swapfile
- 验证是否成功:swapon --show 或 free -h 查看 Swap 行
让 swap 文件开机自动启用
临时启用重启后失效,需写入 /etc/fstab。推荐用 UUID 方式更可靠:
- 查 UUID:blkid /swapfile
- 编辑 fstab:sudo nano /etc/fstab
- 末尾加一行:UUID=xxx-xxx none swap sw 0 0(把 xxx-xxx 替换为实际值)
- 测试语法:sudo swapon --verify,无报错即可
后续可选优化
启用后可微调 swappiness 控制内核倾向(默认 60),比如减少频繁交换:
- 临时调整:sysctl vm.swappiness=10
- 永久生效:echo "vm.swappiness=10" | sudo tee -a /etc/sysctl.conf
- 注意:swap 文件性能不如独立分区,高负载服务建议优先用分区方式


















