下面分几种常见场景,说明 如何在 CentOS(7/8/Stream)中调整 Swap 容量。操作前建议先确认当前 Swap 情况。
free -h
swapon --show
lsblk
适合:Swap 太小,想扩容;或没有多余分区
swapoff -a
⚠️ 如果提示 “swapoff failed: Cannot allocate memory”
说明内存不足,不能直接关闭,建议重启后再操作,或先加新 swap 再关旧的。
dd if=/dev/zero of=/swapfile bs=1M count=4096
# 或使用更快的方式
fallocate -l 4G /swapfile
设置权限:
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile
echo '/swapfile swap swap defaults 0 0' >> /etc/fstab
✅ 验证:
free -h
swapon --show
适合:只想扩大或缩小 Swap 文件
swapoff /swapfile
rm -f /swapfile
fallocate -l 8G /swapfile
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile
适合:服务器有空闲磁盘分区
lsblk
fdisk -l
fdisk /dev/sdb
# n → p → 回车 → 回车 → 回车 → t → 82 → w
mkswap /dev/sdb1
swapon /dev/sdb1
echo '/dev/sdb1 swap swap defaults 0 0' >> /etc/fstab
查看当前策略:
cat /proc/sys/vm/swappiness
临时修改(如 10):
sysctl vm.swappiness=10
永久生效:
echo 'vm.swappiness=10' >> /etc/sysctl.conf
值越小越倾向使用内存,越大越倾向使用 Swap
| 对比 | Swap 文件 | Swap 分区 |
|---|---|---|
| 灵活 | ✅ | ❌ |
| 性能 | 接近 | 略好 |
| 推荐 | ✅ | ❌ |
| 内存 | Swap |
|---|---|
| ≤ 2G | 2× 内存 |
| 2–8G | 等于内存 |
| ≥ 8G | 4–8G |
如果你愿意,可以告诉我:
我可以给你一套 最合适的具体命令方案。