不能直接修改Swap大小,需先确认是Swap分区还是Swap文件:swapon --show查看TYPE列,partition为分区型,file为文件型;文件型可在线扩容(swapoff→fallocate→chmod 600→mkswap→swapon),分区型必须离线用Live USB调整;最后务必更新/etc/fstab确保开机自动挂载。

不能直接“修改”Swap大小——必须先确认当前用的是Swap分区还是Swap文件,两者操作完全不同。搞混类型,90%会失败甚至导致系统启动异常。
第一步:确认当前Swap类型
运行命令:swapon --show
看输出中 TYPE 列:
- 显示 partition(如
/dev/sda2)→ 是磁盘分区型Swap - 显示 file(如
/swapfile)→ 是文件型Swap(Ubuntu 22.04+、CentOS 8+ 默认方式) - 无输出 → 当前未启用Swap,先确认是否真需要(
free -h显示 Swap: 0)
Swap文件扩容:在线操作,不重启也能生效
这是最常用、最安全的方式。关键不是“建多大”,而是权限和格式化是否正确到位。
- 停用当前Swap:
swapoff /swapfile - 扩展文件(推荐fallocate):
fallocate -l 8G /swapfile
若报错(如XFS不支持),改用:dd if=/dev/zero of=/swapfile bs=1G count=8 - 设权限(必须600,否则swapon拒绝加载):
chmod 600 /swapfile - 重新格式化:
mkswap /swapfile(不要加-f,它可能掩盖权限或填充问题) - 启用并验证:
swapon /swapfile,再执行swapon --show和free -h查看 SIZE 是否更新
Swap分区扩容:必须离线操作
Swap分区是磁盘上固定区域,扩容等于重划分区表,风险高,无法在线完成。
- 在线状态下
swapoff /dev/sda2失败?正常——只要cat /proc/swaps或free显示Swap在用,说明有进程占用,无法卸载 -
parted resizepart对正在使用的Swap分区无效;即使强行操作,也要求该分区后方有连续空闲空间,且未被LVM/RAID占用 - 唯一稳妥路径:关机 → Live USB 启动 → 用 gparted 或 parted 调整分区 → mkswap → 更新 /etc/fstab
让扩容永久生效:别漏掉 /etc/fstab
临时启用成功 ≠ 开机自动挂载。重启后Swap变回0,大概率是这步没做。
- 备份原配置:
cp /etc/fstab /etc/fstab.bak - 追加挂载行(注意字段顺序与空格):
echo '/swapfile none swap sw 0 0' >> /etc/fstab
如果是分区,写成:/dev/sdb1 none swap sw 0 0 - 验证语法是否正确:
mount -a(无报错即通过)


















