linux中解决内存不足需配置swap:可文件方式(dd创建、mkswap格式化、swapon启用)或分区方式;须写入fstab永久生效;可调priority和swappiness优化;禁用时先swapoff再清理。

如果您在Linux系统中遇到内存不足导致程序崩溃或系统响应缓慢的问题,则可能是由于缺少swap交换分区。以下是创建和配置交换空间的具体步骤:
一、使用文件方式创建swap交换空间
该方法无需额外磁盘分区,通过创建一个普通文件作为swap区域,适用于虚拟机或磁盘空间紧张的环境。系统会将该文件格式化为swap类型,并启用为交换空间。
1、使用dd命令创建一个大小为2GB的swap文件:sudo dd if=/dev/zero of=/swapfile bs=1G count=2
2、设置文件权限以增强安全性:sudo chmod 600 /swapfile
3、使用mkswap命令将文件格式化为swap类型:sudo mkswap /swapfile
4、启用该swap文件:sudo swapon /swapfile
5、验证是否启用成功:sudo swapon --show
二、使用独立分区创建swap交换空间
该方法将一块未分配的磁盘分区直接设为swap类型,性能优于文件方式,适合物理服务器或对I/O要求较高的场景。需确保目标分区未被挂载且无重要数据。
1、使用fdisk或parted列出可用磁盘及分区:sudo fdisk -l
2、对目标空闲分区(例如/dev/sdb1)执行swap格式化:sudo mkswap /dev/sdb1
3、启用该分区作为swap:sudo swapon /dev/sdb1
4、确认启用状态:sudo swapon --show | grep sdb1
三、永久启用swap空间
临时启用的swap在系统重启后会失效,需将其写入/etc/fstab文件以实现开机自动挂载。此操作确保swap配置持久生效,避免每次重启后手动启用。
1、获取swap文件或分区的UUID(推荐):sudo blkid /swapfile 或 sudo blkid /dev/sdb1
2、编辑fstab文件:sudo nano /etc/fstab
3、在文件末尾添加对应条目,文件方式示例:/swapfile none swap sw 0 0
4、分区方式示例:UUID=xxxx-xxxx-xxxx-xxxx none swap sw 0 0
5、测试fstab语法是否正确:sudo swapon --verify
四、调整swap使用优先级与参数
系统可同时启用多个swap区域,其使用顺序由priority值决定,数值越高越先被使用。此外,swappiness参数控制内核倾向于使用RAM还是swap,影响内存管理行为。
1、查看当前所有swap区域的优先级:sudo swapon --show=NAME,TYPE,SIZE,PRIO
2、临时修改某swap区域优先级(如提升/swapfile):sudo swapon --priority 10 /swapfile
3、永久设置swappiness为10(降低swap倾向):echo 'vm.swappiness=10' | sudo tee -a /etc/sysctl.conf
4、立即应用swappiness更改:sudo sysctl -p
五、禁用并安全删除swap空间
当不再需要某个swap区域时,必须先禁用再移除,否则可能引发系统不稳定或操作失败。禁用前应确认系统内存充足,且无进程正依赖该swap区域。
1、禁用指定swap文件:sudo swapoff /swapfile
2、禁用指定swap分区:sudo swapoff /dev/sdb1
3、从/etc/fstab中删除对应行,防止下次启动尝试挂载
4、删除swap文件(仅限文件方式):sudo rm /swapfile
5、清除分区swap签名(仅限分区方式):sudo wipefs -a /dev/sdb1










