Ubuntu Swap分区故障排查与解决指南
首先确认Swap分区是否启用及配置是否正确,使用以下命令:
sudo swapon --show:查看当前启用的Swap分区(无输出则表示未启用);free -h:查看内存与Swap使用情况(Swap列显示为0则表示未使用);cat /proc/swaps:查看系统已加载的Swap分区列表。sudo swapon /dev/sdXY(/dev/sdXY为Swap分区设备名,如/dev/sda3)。Swap分区无法自动挂载通常因/etc/fstab文件配置错误所致。操作步骤:
sudo blkid | grep swap(如/dev/sda3: UUID="1234abcd-5678-efgh-9012-ijklmnopqrst");/etc/fstab:sudo nano /etc/fstab,找到Swap分区对应的行,确保格式为:UUID=1234abcd-5678-efgh-9012-ijklmnopqrst none swap sw 0 0(用实际UUID替换)。若Swap分区损坏或丢失,需重新创建:
sudo swapoff -a(若为Swap文件,需先删除:sudo rm /swapfile);fdisk /dev/sdX(sdX为硬盘设备,如sda)创建分区,设置类型为linux-swap(代码82),格式化:sudo mkswap /dev/sdXY;sudo fallocate -l 8G /swapfile(或dd if=/dev/zero of=/swapfile bs=1M count=8192),设置权限:sudo chmod 600 /swapfile,格式化:sudo mkswap /swapfile;sudo swapon /dev/sdXY(或/swapfile);/etc/fstab:添加新Swap分区的UUID或路径,确保启动时自动挂载。若Swap分区因文件系统损坏无法使用,需用fsck修复:
sudo swapoff /dev/sdXY;fsck:sudo fsck -y /dev/sdXY(-y表示自动修复错误);sudo mkswap /dev/sdXY,sudo swapon /dev/sdXY。Swappiness值(默认60)决定系统使用Swap的频率,过高会导致频繁读写硬盘,过低则可能浪费内存。调整方法:
sudo sysctl vm.swappiness=10(10表示更倾向于使用物理内存);/etc/sysctl.conf,添加vm.swappiness=10,保存后重启系统。通过日志获取Swap故障的具体原因:
sudo journalctl -xe | grep swap:查看近期与Swap相关的错误日志;dmesg | grep swap:查看内核日志中的Swap错误信息(如分区损坏、UUID不匹配等)。若Swap分区故障导致系统无法启动,可能是GRUB引导配置错误:
sudo grub-install /dev/sdX(sdX为系统硬盘,如sda);sudo update-grub;sudo reboot。若物理Swap分区无法修复,可创建Swap文件作为替代:
sudo fallocate -l 16G /swapfile;sudo chmod 600 /swapfile;sudo mkswap /swapfile;sudo swapon /swapfile;/etc/fstab:添加/swapfile none swap sw 0 0,确保启动时自动挂载。注意事项: