温馨提示×

centos swap出问题怎么办

小樊
52
2026-09-21 01:31:37
栏目: 智能运维

在 CentOS 中,swap(交换分区/交换文件)出问题通常表现为:

  • 系统卡顿、OOM(内存耗尽)
  • free -h 看不到 swap
  • swapon -s 为空或报错
  • 启动时提示 swap 挂载失败
  • 休眠(hibernate)失败

下面按常见场景 + 解决方法来说明。


一、先确认 swap 当前状态

free -h
swapon -s
lsblk
cat /etc/fstab

判断:

  • swap 是否存在
  • 是 swap 分区 还是 swap 文件
  • 是否被 /etc/fstab 正确挂载

二、常见情况及解决办法

1️⃣ swap 没挂载(swapon -s 为空)

如果是 swap 分区

swapon /dev/sdXN

开机自动挂载:

vi /etc/fstab

添加:

/dev/sdXN swap swap defaults 0 0

如果是 swap 文件(不存在或丢失)

创建新的 swap 文件:

dd if=/dev/zero of=/swapfile bs=1M count=2048
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile

/etc/fstab 添加:

/swapfile swap swap defaults 0 0

2️⃣ swap 分区 UUID 变化(常见)

系统升级或重装后,UUID 改变会导致:

swapon: /dev/sdX: Invalid argument

解决:

blkid | grep swap

更新 /etc/fstab:

UUID=xxxx-xxxx swap swap defaults 0 0

3️⃣ swap 文件损坏

swapoff /swapfile
mkswap /swapfile
swapon /swapfile

4️⃣ 磁盘满导致 swap 无法使用

df -h

如果是 / 或 /var 满了:

  • 清理日志
  • 删除无用文件
  • 扩大磁盘

5️⃣ LVM 中的 swap 出问题

查看:

lvdisplay
vgdisplay

激活:

vgchange -ay
swapon /dev/VolGroup00/LogVol01

6️⃣ swap 太小,想调整

关闭旧 swap:

swapoff -a

重新创建更大的 swap 文件或分区,再启用。


三、高级问题

✅ swap 优先级

swapon -p 10 /swapfile

✅ 查看 swap 使用来源

smem -s swap

✅ 内核参数

cat /proc/sys/vm/swappiness

默认 30,可调:

sysctl vm.swappiness=10

四、紧急处理(系统已卡死)

  1. 尝试切换终端:Ctrl + Alt + F2
  2. 杀掉占用内存进程
  3. 如无法操作,只能重启

五、推荐做法(生产环境)

  • ✅ swap 分区优于 swap 文件
  • ✅ 大小建议:
    • 内存 ≤ 8G:swap = 内存
    • 内存 > 8G:4–8G 足够
  • ✅ 云服务器一定要有 swap,避免 OOM

如果你能提供:

  • CentOS 版本(cat /etc/redhat-release)
  • free -h 和 swapon -s 输出
  • 报错信息

我可以给你更精准的一步步修复方案。

0 踩