配置Linux的Swap虚拟内存
你想配置更大的 swap 空间,这是解决 Ubuntu 内存不足触发 OOM Killer 最实用的方法之一。我会给你提供完整、可直接操作的步骤,从查看当前 swap 到创建新的大 swap 文件,全程适配 Ubuntu 系统。
第一步:查看当前 swap 状态
首先,先确认你当前的 swap 配置,打开终端执行以下命令:
# 查看 swap 空间大小和使用情况
swapon --show
# 或更直观的方式
free -h输出示例(如果无 swap 会显示 Swap: 0B 0B 0B):
total used free shared buff/cache available
Mem: 7.7Gi 1.2Gi 5.1Gi 147Mi 1.4Gi 6.2Gi
Swap: 1.0Gi 0B 1.0Gi第二步:创建并配置新的 swap 文件
我们以创建 4GB 的 swap 文件 为例(你可以根据需要改成 8G、16G 等),全程需要 root 权限:
1. 先关闭当前 swap(如果有)
# 临时关闭 swap(执行后内存压力会暂时增大,建议先关闭其他程序)
sudo swapoff /swapfile2. 创建新的 swap 文件
# 创建 4GB 的 swap 文件(bs=1G 表示块大小1GB,count=4 表示4块,总计4GB)
# 如果想创建8GB,把 count=4 改成 count=8 即可
sudo fallocate -l 4G /swapfile
# 如果 fallocate 命令报错,改用 dd 命令(效果相同):
# sudo dd if=/dev/zero of=/swapfile bs=1G count=4 status=progress3. 设置正确的权限(关键,否则系统会拒绝使用)
# 仅 root 可读写,避免安全风险
sudo chmod 600 /swapfile4. 将文件格式化为 swap 格式
sudo mkswap /swapfile5. 启用新的 swap 文件
sudo swapon /swapfile第三步:设置开机自动挂载 swap
上面的操作只是临时生效,重启后会失效,需要修改 /etc/fstab 配置:
# 编辑 fstab 文件(用 nano 编辑器,新手更友好)
sudo nano /etc/fstab在文件末尾添加以下一行(直接复制粘贴即可):
/swapfile none swap sw 0 0或者直接设置优先级
/swapfile none swap **sw,pri=30** 0 0按 Ctrl+O 保存,按 Ctrl+X 退出 nano。
第四步:验证配置是否生效
执行以下命令,确认新的 swap 已启用:
swapon --show
# 或
free -h输出中 Swap 行的 total 应该显示为你设置的大小(如 4Gi),说明配置成功。
可选优化:调整 swap 优先级(提升使用效率)
Ubuntu 默认的 swap 调度策略可以优化,编辑 sysctl 配置:
sudo nano /etc/sysctl.conf在文件末尾添加以下两行(根据内存大小调整,建议值):
# swappiness:0=尽量不用 swap,10=仅内存不足时用,60=默认值
vm.swappiness=10
# vfs_cache_pressure:100=默认值,50=减少缓存回收,提升性能
vm.vfs_cache_pressure=50保存退出后,执行以下命令让配置生效:
sudo sysctl -p总结
- 配置更大 swap 的核心步骤:查看当前 swap → 创建新 swap 文件 → 格式化并启用 → 配置开机自动挂载。
- swap 大小建议:物理内存 ≤4GB 时,设置 4-8GB;物理内存 8-16GB 时,设置 4-6GB;物理内存 ≥16GB 时,设置 2-4GB 即可。
- 调整
swappiness=10可以避免系统过早使用 swap(swap 速度比物理内存慢,优先用物理内存)。
如果操作中遇到权限错误、文件创建失败等问题,随时告诉我,我会帮你排查。