直接运行free -m查看swap行的total值,0表示未配置;若used常接近total则容量不足;swapon --show可准确列出所有已激活swap设备,比free更可靠。

怎么判断当前有没有 swap 或够不够用
直接跑 free -m 看 Swap 行的 total 值,0 就是没配;非 0 但 used 经常接近 total,说明快撑不住了。再补一句:swapon --show 能列出所有激活的 swap 设备,比 free 更准——有些 swap 文件可能被挂载但没计入 free 的统计(比如权限不对或格式错误)。
fallocate 还是 dd?选哪个创建 swap 文件
fallocate 是首选,只要文件系统支持(ext4/xfs 都行),它瞬间完成、不写零、对 SSD 友好。命令是:fallocate -l 2G /swapfile。如果报错 fallocate failed: Operation not supported,说明当前分区不支持(常见于旧版 XFS 或某些 NAS 挂载),就切回 dd:dd if=/dev/zero of=/swapfile bs=1M count=2048 status=progress。别用 bs=1024 count=2048000 这种老写法——容易算错大小,且 dd 会慢得多,还提前耗光 SSD 寿命。
mkswap 之后 swapon 失败的常见原因
最常踩的坑就三个:
CentOS Linux 7.9.2009是传统CentOS Linux 7的最后主要版本,也是很多企业历史服务器中仍可能遇到的系统版本。它以稳定、兼容RHEL 7生态、文档丰富和软件支持广泛著称,曾长期用于Web服务、数据库、虚拟化节点和企业内部业务系统。不过CentOS Linux 7已于2024年6月30日停止维护,现在继续使用会面临安全补丁缺失风险。该版本更适合旧业务迁移、历史环境恢复或离
-
chmod 600 /swapfile必须做,否则mkswap可能成功,但swapon直接报swapon: /swapfile: insecure permissions 644, 0600 suggested -
mkswap执行后没报错,不代表真成功——检查输出里有没有Setting up swapspace version 1,没有就是格式化失败(比如文件被 truncate 过) -
swapon /swapfile报swapon: /swapfile: read swap header failed,基本是文件损坏或mkswap没跑完就被中断
/etc/fstab 里那行配置怎么写才不翻车
往 /etc/fstab 末尾加这行就行:/swapfile swap swap defaults 0 0。注意三点:
- 路径必须和你
swapon时用的一致,/swapfile和/var/swapfile是两个东西 - 第二个字段固定填
swap,不是none也不是空格,填错会导致开机卡住 - 别漏最后两个
0,第一个是 dump 参数(swap 不备份),第二个是 fsck 顺序(swap 不检查),写成1 1或留空都会让系统启动变慢甚至失败
改完 fstab 后,别急着重启,先 sudo swapon --show 确认当前已启用,再 sudo swapoff /swapfile && sudo swapon /swapfile 模拟一次重挂载,看会不会报错——这才是真正验证 fstab 写对了没。










