你想配置更大的 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 /swapfile

2. 创建新的 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=progress

3. 设置正确的权限(关键,否则系统会拒绝使用)

# 仅 root 可读写,避免安全风险
sudo chmod 600 /swapfile

4. 将文件格式化为 swap 格式

sudo mkswap /swapfile

5. 启用新的 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

总结

  1. 配置更大 swap 的核心步骤:查看当前 swap → 创建新 swap 文件 → 格式化并启用 → 配置开机自动挂载
  2. swap 大小建议:物理内存 ≤4GB 时,设置 4-8GB;物理内存 8-16GB 时,设置 4-6GB;物理内存 ≥16GB 时,设置 2-4GB 即可。
  3. 调整 swappiness=10 可以避免系统过早使用 swap(swap 速度比物理内存慢,优先用物理内存)。

如果操作中遇到权限错误、文件创建失败等问题,随时告诉我,我会帮你排查。

标签: Linux

添加新评论