首页主机资讯centos swapper如何排除故障

centos swapper如何排除故障

时间2025-11-14 12:02:04发布访客分类主机资讯浏览846
导读:CentOS Swapper 故障排查与修复 一 快速判断与定位 查看内存与交换分区概况:运行 free -h;确认是否启用交换分区/文件:swapon --show 或 swapon -s。若 Swap 使用率接近 100% 且系统变慢...

CentOS Swapper 故障排查与修复

一 快速判断与定位

  • 查看内存与交换分区概况:运行 free -h;确认是否启用交换分区/文件:swapon --showswapon -s。若 Swap 使用率接近 100% 且系统变慢,多为内存不足或配置不当。
  • 判断是否在频繁换入换出:运行 vmstat 1 10,关注 si/so(换入/换出 KB/s),持续非零且较大说明系统正依赖 Swap。
  • 找出占用 Swap 最多的进程:
    for i in $(ls /proc | grep “^[0-9]”); do awk ‘/Swap:/{ a+=$2} END{ print $i,a/1024"M"} ’ /proc/$i/smaps 2> /dev/null; done | sort -k2nr | head
  • 检查磁盘与内存资源:df -h(确保根分区/交换所在分区有空间)、free -h(确认是否物理内存不足)。
  • 查看系统日志与内核消息:journalctl -xedmesg | grep -i swap,定位设备不可用、挂载失败等具体报错。

二 常见症状与对应处理

  • 症状:Swap 占用过高、系统卡顿
    处理:临时降低内核换出倾向 sysctl vm.swappiness=10(范围 0–100,重启后失效);永久生效写入 /etc/sysctl.confvm.swappiness=10 后执行 sysctl -p。同时结合上节定位并优化/终止异常进程,必要时增加物理内存或调整应用内存配置。
  • 症状:重启后 Swap 未自动启用(free 显示 Swap 为 0)
    处理:检查 /etc/fstab 中 Swap 条目是否正确(示例:分区为 /dev/sdXY none swap sw 0 0;文件为 /swapfile swap swap defaults 0 0),修正后执行 swapon -a 测试;若设备名变更(如 LVM 逻辑卷),同步更新 /etc/fstab 与引导参数。
  • 症状:启动报错 “/dev/centos/swap does not exist”
    处理:进入 GRUB 编辑界面,临时删除内核行中的 rd.lvm.lv=centos/swap 以正常启动;永久修复需编辑 /boot/grub2/grub.cfg,将该参数改为实际存在的 rd.lvm.lv=vgname/lv_swap(通常有两处需同步修改),重启验证。
  • 症状:Swap 分区/文件疑似损坏或无法启用
    处理:进入单用户/救援模式,对相应分区执行 fsck /dev/sdXY 修复;修复后重新 swapon 并验证。
  • 症状:内核日志出现 “scheduling while atomic: swapper”
    处理:通过 dmesg 定位触发函数与可疑驱动/模块,升级或回退相关驱动,避免在原子上下文中调用会睡眠的函数。

三 配置优化与替代方案

  • 合理设置 Swap 大小(经验值,可按业务微调):
    物理内存 建议 Swap 说明
    4GB 2× 内存 避免 OOM
    4–8GB = 内存 平衡性能与占用
    8–64GB 8GB 多数场景足够
    > 64GB 16GB 内存密集场景可适当增加
  • 创建或调整 Swap 文件(示例新增 8GB):
    1. 创建:fallocate -l 8G /swapfile(或 dd if=/dev/zero of=/swapfile bs=1M count=8192)
    2. 安全:chmod 600 /swapfile
    3. 格式化:mkswap /swapfile
    4. 启用:swapon /swapfile
    5. 持久化:在 /etc/fstab 添加 “/swapfile swap swap defaults 0 0
  • 使用 ZRAM(内存内压缩交换,减少磁盘 I/O):
    1. 加载模块:modprobe zram
    2. 配置算法与大小:echo lz4 > /sys/block/zram0/comp_algorithm;echo 4G > /sys/block/zram0/disksize
    3. 格式化并启用:mkswap /dev/zram0swapon /dev/zram0
    4. 如需开机自启,可配置 systemd 单元或 rc.local(视发行版而定)。

四 无法进入系统时的维护与回退

  • 进入单用户/救援模式:
    • CentOS 7:GRUB 中编辑内核行,将 ro 改为 rw,行尾追加 init=/bin/bash,删除 rhgb/quiet,按 Ctrl+X 启动;
    • CentOS 6:GRUB 内核行末尾添加 single 启动。
  • 维护操作要点:
    • 修正 /etc/fstab 中错误的 Swap 条目后执行 swapon -a 测试;
    • 对疑似异常的分区执行 fsck
    • 若因 LVM 逻辑卷变更导致启动失败,按第二节方法修正 rd.lvm.lv=… 参数;
    • 完成后重启验证。

五 实用命令清单

  • 资源与启用状态:free -hswapon --showswapon -svmstat 1 10
  • 进程定位:for i in $(ls /proc | grep “^[0-9]”); do awk ‘/Swap:/{ a+=$2} END{ print $i,a/1024"M"} ’ /proc/$i/smaps 2> /dev/null; done | sort -k2nr | head
  • 配置与参数:sysctl vm.swappiness=10cat /proc/sys/vm/swappiness、编辑 /etc/sysctl.confsysctl -p
  • 日志与故障排查:journalctl -xedmesg | grep -i swap、必要时 dmesg | grep -i “scheduling while atomic”
  • 文件系统与磁盘:df -h、对分区 fsck /dev/sdXY
  • LVM 启动参数修正:编辑 /boot/grub2/grub.cfg 中的 rd.lvm.lv=vgname/lv_swap 两处一致后重启

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: centos swapper如何排除故障
本文地址: https://pptw.com/jishu/747883.html
CentOS readdir如何实现自动化 CentOS readdir如何简化操作

游客 回复需填写必要信息