1. 降低vm.swappiness参数值
vm.swappiness是控制内核将数据从RAM交换到Swap空间频率的关键参数,默认值为60(表示系统会根据内存使用情况主动交换10%~60%的内存数据)。降低该值可显著减少不必要的Swap操作,从而降低磁盘写入次数。建议将其设置为10~30(数值越低,系统越倾向于保留数据在物理内存中)。修改方法:编辑/etc/sysctl.conf文件,添加或修改vm.swappiness=10,然后执行sudo sysctl -p使设置立即生效。
2. 减少不必要的Swap空间使用
sudo swapon -s查看当前启用的Swap空间,若存在未使用的Swap分区(如旧Swap分区)或Swap文件,可使用sudo swapoff -v /dev/sdXn(分区)或sudo swapoff -v /swapfile(文件)关闭,并从/etc/fstab中移除对应条目(避免重启后自动启用)。/swapfile和/mnt/swapfile),可删除不需要的Swap文件(sudo rm /swapfile),释放磁盘空间并减少潜在的写入目标。3. 优化Swap文件位置(针对HDD/SSD特性)
/),防止系统文件与Swap数据竞争磁盘访问。noatime挂载选项(编辑/etc/fstab,在对应分区行添加noatime),减少每次访问文件时的元数据写入;若Swap使用频繁,可考虑将Swap文件放在单独分区(而非系统分区),便于针对性优化。4. 定期整理Swap碎片(针对HDD)
HDD的碎片化会增加Swap数据的寻道时间,导致磁头频繁移动,加速磨损。可通过以下方法整理Swap碎片:
sudo swapoff -a),然后重新启用(sudo swapon -a),系统会自动重新组织分区内的数据。sudo rm /swapfile),创建新的Swap文件(sudo fallocate -l 4G /swapfile,设置权限sudo chmod 600 /swapfile,格式化sudo mkswap /swapfile),最后启用(sudo swapon /swapfile)。5. 使用压缩技术替代部分Swap(zram/zswap)
sudo modprobe zram(加载模块),echo lz4 > /sys/block/zram0/comp_algorithm(设置压缩算法,lz4速度快且压缩率适中),echo 2G > /sys/block/zram0/disksize(设置zram大小为2GB),sudo mkswap /dev/zram0(格式化),sudo swapon /dev/zram0(启用)。GRUB_CMDLINE_LINUX_DEFAULT),添加zswap.enabled=1 zswap.compressor=lz4 zswap.max_pool_percent=20(启用zswap,使用lz4压缩,限制池大小为物理内存的20%),更新GRUB后重启。6. 增加物理内存(终极解决方案)
Swap的本质是物理内存不足时的补救措施,增加物理内存(RAM)可直接减少系统对Swap的依赖。例如,若系统经常因内存不足触发Swap,升级到更大容量的RAM(如从8GB升级到16GB)可彻底解决该问题,从根本上降低磁盘写入次数。
7. 监控Swap使用情况(持续优化依据)
定期使用以下命令监控Swap使用状态,及时发现异常:
free -h:查看物理内存和Swap的总使用量、剩余量(重点关注Swap行的used值,若长期接近总Swap大小,说明物理内存不足);vmstat 1 5:查看系统虚拟内存统计信息(si表示每秒从Swap读取到内存的数据量,so表示每秒从内存写入Swap的数据量,数值过高说明Swap使用频繁);top/htop:查看进程的内存使用情况(按M排序,找出占用内存大的进程,考虑优化或关闭)。