Linux设置Swap有文件、分区和ZRAM三种方式:文件法用fallocate/dd创建并chmod 600、mkswap、swapon;分区法需fdisk新建类型82分区后格式化启用;ZRAM则通过modprobe加载压缩内存交换。
一、创建并启用Swap文件
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜
当物理内存不足时,系统可通过swap文件将不活跃的内存页暂存至硬盘,从而避免进程被强制终止。该方法无需重新分区,灵活性高,适用于大多数linux发行版。1、检查当前Swap状态,确认是否已启用:
执行 sudo swapon --show 或 free -h,若无输出或Swap行显示为0,则尚未启用。
2、创建一个4GB大小的Swap文件(可根据实际内存容量调整):
执行 sudo fallocate -l 4G /swapfile;若fallocate不可用,则改用:
sudo dd if=/dev/zero of=/swapfile bs=1M count=4096。
3、设置严格权限,防止非root用户读取敏感内存交换内容:
执行 sudo chmod 600 /swapfile。
4、格式化该文件为Swap类型:
执行 sudo mkswap /swapfile。
5、立即启用该Swap文件:
执行 sudo swapon /swapfile。
二、配置Swap开机自动挂载
仅临时启用Swap无法在重启后持续生效,需将其写入系统挂载表,确保每次启动均自动加载。
1、编辑系统挂载配置文件:
执行 sudo nano /etc/fstab(或使用vi/vim)。
2、在文件末尾新增一行,格式严格为:
/swapfile none swap sw 0 0。
3、保存并退出编辑器(nano中按Ctrl+O回车保存,Ctrl+X退出)。
4、验证fstab语法是否正确,避免启动失败:
执行 sudo mount -a,若无报错即表示配置有效。
三、调优Swappiness参数
Swappiness控制内核将内存页交换到磁盘的积极程度,过高会导致过早换出,过低则可能错过缓冲余量。合理设置可平衡响应性与稳定性。
1、查看当前值:
执行 cat /proc/sys/vm/swappiness(默认通常为60)。
2、临时降低至推荐值10(优先保有物理内存):
执行 sudo sysctl vm.swappiness=10。
3、使该设置永久生效:
执行 echo "vm.swappiness=10" | sudo tee -a /etc/sysctl.conf。
四、使用独立Swap分区替代文件
对于长期稳定运行的服务器,Swap分区比Swap文件具备更优的I/O可控性与碎片规避能力,尤其适合SSD部署环境。
1、使用fdisk或parted识别空闲磁盘空间,并创建新分区(如/dev/sdb2):
执行 sudo fdisk /dev/sdb,按提示新建分区并设为类型82(Linux swap)。
2、格式化新分区为Swap:
执行 sudo mkswap /dev/sdb2。
3、立即启用该分区:
执行 sudo swapon /dev/sdb2。
4、添加至fstab实现持久化:
在/etc/fstab中追加:/dev/sdb2 none swap sw 0 0。
五、启用ZRAM作为内存内压缩交换层
ZRAM在RAM中开辟一块压缩区域用作交换空间,避免磁盘I/O延迟,特别适合内存受限但CPU尚有余量的设备(如树莓派、低配VPS)。
1、加载ZRAM内核模块:
执行 sudo modprobe zram。
2、设置ZRAM设备大小(例如分配1GB RAM并启用LZ4压缩):
执行 echo 1073741824 | sudo tee /sys/class/zram-control/hot_add,
再执行 echo lz4 | sudo tee /sys/block/zram0/comp_algorithm。
3、初始化并启用ZRAM设备:
执行 sudo mkswap /dev/zram0 && sudo swapon /dev/zram0。
4、配置开机自动加载(以systemd为例):
创建服务文件 /etc/systemd/system/zram-generator.service,
写入相应单元定义并启用该服务。

















