温馨提示×

ubuntu swap分区故障如何修复

小樊
42
2025-12-30 02:58:51
栏目: 智能运维

Ubuntu Swap 分区故障修复步骤

一 快速定位问题

  • 查看是否启用:free -hswapon --showcat /proc/swaps。若未启用,说明 swap 未挂载或被禁用。
  • 查看日志定位错误:sudo journalctl -xe | grep -i swapgrep -i swap /var/log/syslogdmesg | grep -i swap,关注关键词如 “error”“failed”“unable”
  • 检查配置文件:/etc/fstab 中 swap 条目是否正确;用 sudo blkid 获取设备 UUID,确保与 fstab 一致。
  • 检查资源与健康:df -h(磁盘空间)、free -h(内存)、必要时用 fsck(离线检查文件系统)、Memtest86+(内存检测)。

二 常见修复操作

  • 激活或临时启用
    • 激活指定分区:sudo swapon /dev/sdXY;或一次性启用全部:sudo swapon -a
  • 修复 fstab 错误(含启动卡在 “A start job is running for … /dev/disk/by-uuid/…”)
    • 核对 UUID:用 blkid 得到实际 UUID,与 /etc/fstab 比对并修正;或暂时注释掉 fstab 中的 swap 行以恢复启动,再重建 swap。
  • 重新创建分区或文件
    • 分区方案:先 sudo swapoff -a;可选清零头部:sudo dd if=/dev/zero of=/dev/sdXY bs=1M count=8192(示例 8GB,可按需调整);再 sudo mkswap /dev/sdXYsudo swapon /dev/sdXY
    • 文件方案:创建文件(如 /swapfile)、sudo mkswap /swapfilesudo swapon /swapfile,并在 /etc/fstab 写入:/swapfile none swap sw 0 0
  • 调整 swappiness(性能优化)
    • 查看:cat /proc/sys/vm/swappiness;临时:sudo sysctl vm.swappiness=10;永久:在 /etc/sysctl.conf 添加 vm.swappiness=10 后重启。
  • 启动阶段卡住的处理
    • 进入恢复模式(GRUB → Advanced options → Recovery mode → Drop to root shell),先注释 fstab 中 swap 行以正常启动,再按上法修复;必要时检查 /etc/fstabUUID 是否变更。

三 启动失败与 GRUB 相关处理

  • 使用恢复模式临时禁用 swap 并修正 /etc/fstab 后再重启。
  • 若因设备名变化导致挂载失败,优先改用 UUID 方式在 fstab 中声明 swap。
  • 若仍有引导异常,可重装 GRUB:sudo grub-install /dev/sdXsudo update-grub(/dev/sdX 为系统盘)。

四 验证与优化

  • 验证:swapon --show 应能看到 NAME、SIZE、USEDfree -h 显示 Swap 容量非 0;cat /proc/swaps 列出已激活的交换区。
  • 优化:根据内存大小设置 vm.swappiness(如内存小于 8GB 设为 10–30,大于 8GB 设为 10 或更低),以减少不必要的换页。

五 数据安全与硬件排查

  • 操作分区与 dd 前务必备份重要数据;不确定时先咨询专业人士。
  • 检查磁盘健康与空间:df -hfsck(需离线)、必要时运行 Memtest86+ 排除内存故障。

0