Swap扩容有五种方法:一、Swap文件扩容(dd命令);二、fallocate快速创建Swap文件;三、LVM逻辑卷扩容;四、替换Swap设备(新建分区);五、永久生效需配置/etc/fstab。

如果您已配置Swap分区但发现容量不足,导致系统在高负载时出现内存抖动或服务响应迟缓,则需调整现有Swap空间大小。以下是针对不同底层实现方式的多种调整方法:
一、通过Swap文件扩容(推荐用于无LVM环境)
该方法无需修改磁盘分区结构,适用于物理分区已满、仅能通过文件方式扩展Swap的场景,操作安全且可逆。
1、停用当前Swap文件:sudo swapoff /usr/swap/swapfile
2、备份原Swap文件(可选):sudo cp /usr/swap/swapfile /usr/swap/swapfile.bak
3、使用dd命令扩展文件至目标大小(例如扩至8GB):sudo dd if=/dev/zero of=/usr/swap/swapfile bs=1M count=8192 conv=notrunc
4、重新设置权限:sudo chmod 0600 /usr/swap/swapfile
5、重新格式化为Swap类型:sudo mkswap /usr/swap/swapfile
6、重新启用:sudo swapon /usr/swap/swapfile
7、验证结果:free -h | grep Swap
二、通过fallocate快速创建Swap文件
fallocate比dd更高效,直接分配磁盘空间而不写零,适用于支持ext4/xfs等现代文件系统的KylinOS主机,显著缩短创建时间。
1、确保目标路径所在分区支持fallocate(如/ext4):df -T /usr
2、创建16GB Swap文件:fallocate -l 16G /usr/swap/swapfile2
3、设置安全权限:chmod 0600 /usr/swap/swapfile2
4、格式化并启用:mkswap /usr/swap/swapfile2 && swapon /usr/swap/swapfile2
5、检查生效状态:swapon --show,确认type为file、size为16.0G
三、通过LVM逻辑卷扩容Swap(适用于LVM环境)
当Swap已部署为LVM逻辑卷时,可直接扩展LV容量并刷新Swap设备,避免文件系统碎片与I/O性能损耗,适合生产服务器长期运行场景。
1、确认当前Swap逻辑卷路径:swapon --show=NAME,TYPE,SIZE | grep swap
2、停用Swap逻辑卷(假设路径为/dev/mapper/klas-swap):sudo swapoff /dev/mapper/klas-swap
3、扩展逻辑卷容量(例如增加4GB):sudo lvextend -L +4G /dev/mapper/klas-swap
4、重新格式化该逻辑卷为Swap:sudo mkswap /dev/mapper/klas-swap
5、重新启用:sudo swapon /dev/mapper/klas-swap
6、检查fstab中对应条目是否仍指向该设备路径,确保开机挂载有效
四、替换Swap设备:删除旧Swap并新建更大容量Swap分区
当原有Swap位于独立小容量分区(如/dev/sda3),且磁盘存在未分配空间时,可通过新建更大分区并迁移Swap来彻底更新容量,适用于需要释放旧分区或统一规划存储布局的情形。
1、停用当前Swap设备:sudo swapoff -a
2、确认旧Swap分区路径:cat /proc/swaps | awk 'NR>1 {print }'
3、使用fdisk或parted在空闲空间创建新分区(例如/dev/sda4),并设置分区类型为82(Linux swap):sudo fdisk /dev/sda
4、格式化新分区:sudo mkswap /dev/sda4
5、启用新Swap:sudo swapon /dev/sda4
五、永久生效配置(所有方法均需执行)
为确保重启后Swap仍被正确加载,必须将新Swap设备或文件写入/etc/fstab,避免手动重复启用。
1、编辑fstab文件:sudo vim /etc/fstab
2、添加对应条目(Swap文件示例):/usr/swap/swapfile none swap sw 0 0
3、添加对应条目(LVM逻辑卷示例):/dev/mapper/klas-swap none swap sw 0 0
4、验证fstab语法正确性:sudo mount -a
5、确认条目已生效:cat /etc/fstab | grep swap

















