一、检查当前Swap使用情况
在配置前,需了解系统现有Swap状态,常用命令:
sudo swapon --show:显示当前启用的Swap分区/文件及大小;free -h:以人类可读格式展示内存与Swap使用情况(总大小、已用、空闲);/proc/swaps:查看Swap设备的详细信息。二、确定合理的Swap空间大小
Swap大小需结合物理内存和使用场景调整,常见推荐方案:
| 物理内存 | 推荐Swap大小 | 说明 |
|---|---|---|
| ≤4GB | 至少4GB | 小内存系统需足够Swap应对内存不足,避免进程被强制终止。 |
| 4GB-16GB | 等于物理内存大小 | 平衡内存与Swap的使用,适合一般桌面或轻度服务器场景。 |
| 16GB-64GB | 至少16GB | 大内存系统仍需保留Swap,防止极端情况下(如内存泄漏)内存耗尽。 |
| >64GB | 至少32GB | 超大内存系统可根据实际负载调整,但需避免Swap过大导致磁盘IO瓶颈。 |
注意:若系统运行内存密集型应用(如数据库、虚拟机),可适当增加Swap大小(如物理内存的2-3倍);若系统内存充足且无内存泄漏风险,可减小Swap大小(如物理内存的1倍)。
三、创建Swap空间(文件/分区)
sudo fallocate -l 4G /swapfile # 创建4GB Swap文件(示例)
sudo dd if=/dev/zero of=/swapfile bs=1M count=4096 # 创建4GB Swap文件(bs=块大小,count=块数量)
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
/etc/fstab,添加以下行(系统重启后自动启用):echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
sudo fdisk /dev/sdX # 替换为实际磁盘(如/dev/sda)
操作步骤:n(新建分区)→ p(主分区)→ 输入分区号 → 设置大小(如+4G)→ t(更改分区类型)→ 输入82(Linux Swap类型)→ w(写入并退出)。sudo mkswap /dev/sdX1 # 替换为实际分区(如/dev/sda1)
sudo swapon /dev/sdX1
/etc/fstab,添加以下行:echo '/dev/sdX1 none swap sw 0 0' | sudo tee -a /etc/fstab
注意:创建Swap空间前需确保磁盘有足够空间;若系统已有Swap分区/文件,建议先禁用(sudo swapoff /swapfile 或 sudo swapoff /dev/sdX1)再创建新的。
四、调整Swappiness参数(控制Swap使用倾向)
Swappiness是内核参数,决定系统使用Swap的积极性,取值范围0-100:
调整方法:
sudo sysctl vm.swappiness=10
/etc/sysctl.conf,添加或修改以下行:vm.swappiness=10
应用更改:sudo sysctl -p
注意:Swappiness并非越低越好,若设置为0,系统仅在内存耗尽时才使用Swap,可能导致OOM(Out of Memory) killer终止进程。需根据实际场景权衡。
五、监控Swap使用情况(持续优化)
定期监控Swap使用情况,及时调整配置:
free -h
sudo swapon --show
watch -n 1 free -h # 每秒刷新一次
提示:若Swap使用率长期超过50%,说明物理内存不足,需考虑增加物理内存或扩大Swap空间;若Swap使用率极低(如<10%),可适当减小Swap大小或降低Swappiness值。
六、调整Swap空间大小(可选)
若需扩大Swap空间:
sudo swapoff /swapfile;sudo fallocate -l 8G /swapfile;/etc/fstab中的文件名(若文件名变更)。若需缩小Swap空间:
sudo fallocate -l 4G /swapfile);/etc/fstab。注意:调整Swap文件大小前务必禁用Swap,避免数据损坏;缩小Swap分区需重新创建分区并迁移数据,操作复杂,建议优先使用Swap文件。