swap 文件是什么
在磁盘上创建 swap 文件是最快的扩容换页空间的方式:建立文件(fallocate 优先,dd 兜底)、把权限设为 600、用 mkswap 写入 swap 签名、swapon 启用,最后写进 /etc/fstab 持久化。它适合云主机无法调整分区或临时应急的场景;但能否使用还取决于文件系统是否支持 swap 文件,换出代价也是真实磁盘 IO。
基本信息
| 适用平台 | Linux(ext4、xfs 常见支持,部分文件系统有限制) |
|---|---|
| 权限要求 | 文件属主 root、权限 600 |
| 关键命令 | fallocate/dd、chmod、mkswap、swapon、swapon --show |
| 持久化 | 在 /etc/fstab 增加 swap 行 |
| 验证 | swapon --show、cat /proc/swaps |
| 容量建议 | 按内存规模与业务容忍度设定,过大易长期换出拖慢响应 |
典型使用场景
- 云主机无法临时扩内存,先加 swap 争取时间避免 OOM 直接杀进程
- 开发或测试机需要一点缓冲余量,允许短时峰值超过物理内存
- 为 zram/zswap 之外的方案提供后端交换空间,用于对照实验
- 迁移或升级前的临时保障,降低操作期间被 OOM 终止的概率
- 评估应用对换出的敏感度:刻意提供 swap,观察延迟变化
创建与启用
创建与启用
sudo fallocate -l 4G /swapfile || sudo dd if=/dev/zero of=/swapfile bs=1M count=4096 # 建 4G 文件
sudo chmod 600 /swapfile # 权限必须是 600,否则 swapon 会拒绝
sudo mkswap /swapfile # 写入 swap 签名
sudo swapon /swapfile # 立即启用
swapon --show # 确认已启用、大小与优先级
cat /proc/swaps # 另一种确认方式,Type 一列为 file
printf '/swapfile none swap sw 0 0\n' | sudo tee -a /etc/fstab # 持久化,重启后仍生效步骤与要点
| 命令 | 作用 | 要点 |
|---|---|---|
| fallocate | 快速分配文件空间 | 个别文件系统可能产生空洞,后续 mkswap 报错就改用 dd |
| dd | 逐块写零创建文件 | 可靠但慢,注意用 bs/count 组合控制大小 |
| chmod 600 | 设置文件权限 | 权限不符会直接导致 swapon 失败 |
| mkswap | 写入 swap 签名 | 重复执行前需确认设备未被使用 |
| swapon / swapon --show | 启用与验证 | 确认已挂载且优先级符合预期 |
部分文件系统(例如特定特性的 Btrfs 或某些网络/加密存储配置)不支持或不建议使用 swap 文件,创建前应查阅发行版说明。权限或安全模块上下文不正确也会让 swapon 失败,报错要完整读取。
swap 文件落在磁盘上,换出代价是真实 IO。如果目标是用 CPU 换算力以缓解内存压力,zram 或 zswap 这类压缩方案更对症,不必单纯加大磁盘 swap。