swap 该多大、怎么加:swapfile 实操(Rocky 9)
什么时候该用它
Section titled “什么时候该用它”内存不够时进程被 OOM killer 杀掉,或者你要给一台小内存机器加一层缓冲。swap 不是「越多越好」:太小起不到缓冲作用,太大又会把内存压力变成磁盘抖动。本页先给判断口径,再给可复制的 swapfile 操作。
cat /proc/swapsswapon --showFilename Type Size Used Priority/dev/zram0 partition 24639296 22642820 32767/dev/vdc partition 1048572 390964 1有输出说明已经在用 swap;没有输出说明当前没有启用的 swap。free -h 也能看,但精简系统里可能没装 procps。
| 内存 | 建议 swap |
|---|---|
| ≤ 2 GB | 内存的 2 倍 |
| 2–8 GB | 与内存相当 |
| 8–64 GB | 至少 4 GB |
| > 64 GB | 按负载决定,至少 4 GB |
这张表是 Red Hat 文档里的推荐区间(RHEL 9 存储文档,核对日期 2026-10-18)。它是起点不是定律:数据库、容器宿主、内存弹性大的机器要按实际负载调。
创建 swapfile
Section titled “创建 swapfile”sudo fallocate -l 4G /swapfilesudo chmod 600 /swapfilels -l /swapfilesudo mkswap /swapfile-rw------- 1 root root 4294967296 ... /swapfileSetting up swapspace version 1, size = 4 GiB (4294963200 bytes)no label, UUID=...chmod 600 不是可选步骤:权限是 644 时 mkswap 会警告,swapon 直接拒绝(设备可被其他用户读取,等于泄露内存内容)。
启用并持久化
Section titled “启用并持久化”sudo swapon /swapfileswapon --showecho '/swapfile none swap defaults 0 0' | sudo tee -a /etc/fstabswapon --show 里出现 /swapfile 才算生效;/etc/fstab 那一行保证重启后仍然启用。
swapon --showcat /proc/swapssudo swapoff /swapfile && swapon --show # 确认能安全关闭sudo swapon /swapfile容器里的限制:在
rockylinux:9容器中fallocate、chmod、mkswap都能成功,但swapon返回Operation not permitted(容器缺少相应权限)。所以「启用成功」这一段必须在真实系统上验证,容器里只能验证到mkswap。
fallocate在 XFS 上可用,但如果 swapfile 放在不支持预分配的文件系统(如某些网络文件系统)上,要改用dd生成;swappiness不是越大越好:数据库类负载通常调低(如 10),让它尽量用内存;- zram 与 swapfile 不是二选一:小内存机器可以 zram 优先、swapfile 兜底,但两者都占资源,要一起算进容量规划。
练习:给一台 4 GB 内存的机器加 4 GB swap
Section titled “练习:给一台 4 GB 内存的机器加 4 GB swap”前置:Rocky 9,root 或 sudo,根分区剩余空间 ≥ 5 GB。
sudo fallocate -l 4G /swapfilesudo chmod 600 /swapfilesudo mkswap /swapfilesudo swapon /swapfileecho '/swapfile none swap defaults 0 0' | sudo tee -a /etc/fstab检查:
swapon --show→ 有/swapfile,SIZE 约 4Gcat /proc/swaps | wc -l→ 比操作前多 1 行sudo reboot后swapon --show→ 仍在(fstab 生效)sudo swapoff /swapfile && sudo swapon /swapfile→ 可正常关闭再启用
- 存储扩容(页面待补):
/storage-lvm/ - 安装后核对:安装后 7 项核对
- 性能排查:/troubleshooting/performance/