温馨提示×

centos swapper如何释放空间

小樊
43
2026-10-17 19:12:40
栏目: 云计算

在 CentOS 中,swapper / swap 空间本身不是“占用磁盘的文件”可以随便删,而是系统用来做内存交换的区域。所谓“释放 swap 空间”,通常是指把 swap 中的数据换回内存,并减少 swap 使用量,或者在确认不需要时关闭 / 缩小 swap。

下面分场景说明。


一、先确认 swap 使用情况

free -h
swapon --show

如果你看到:

  • Swap: used 很大
  • 但 Mem: available 还很多

说明系统把一些内存页放到了 swap,但内存其实够用。


二、把 swap 内容释放回内存(最常用)

1️⃣ 确保内存足够

先确认:

free -h

available 要大于 Swap used

2️⃣ 关闭再开启 swap(会清空 swap)

swapoff -a
swapon -a

✅ 这会:

  • 把 swap 中的数据换回内存
  • 清空 swap 使用量

⚠ 注意:

  • 过程中如果内存不足,系统可能 OOM
  • 建议在低负载时操作

三、只释放部分 swap(不想全关)

CentOS 默认不会自动把 swap 换回内存,可手动触发:

sysctl vm.swappiness=10

或临时:

echo 10 > /proc/sys/vm/swappiness

然后再尝试:

swapoff -a && swapon -a

四、如果是 swap 文件占用了磁盘空间

查看 swap 类型

swapon --show

如果是文件,例如:

/swapfile

关闭并删除 swap 文件(彻底释放磁盘)

swapoff /swapfile
rm -f /swapfile

然后编辑:

vi /etc/fstab

删除或注释掉:

/swapfile swap swap defaults 0 0

五、如果是 LVM / 分区 swap

例如:

/dev/sda2
/dev/mapper/centos-swap

只能:

swapoff /dev/mapper/centos-swap

⚠ 不建议删除系统 swap 分区,除非你:

  • 内存非常大(≥ 16G)
  • 明确不需要休眠功能

六、长期优化建议

1️⃣ 调整 swappiness

echo "vm.swappiness=10" >> /etc/sysctl.conf
sysctl -p

2️⃣ 增加内存(根本解决)

swap 使用多,通常是内存不足。


七、什么时候“不要动 swap”

❌ 以下情况不要 swapoff:

  • 内存已用满
  • 数据库在跑(MySQL / PostgreSQL)
  • 正在大量 IO

如果你愿意,可以贴一下:

free -h
swapon --show

我可以帮你判断该不该释放、怎么释放最安全。

0 踩