服务公告

服务公告 > Linux命令 > ubuntu设置虚拟内存

ubuntu设置虚拟内存

发布时间:2025-12-30 00:12

Ubuntu 设置虚拟内存(Swap)一文搞定 ✅🙂

在 Ubuntu 里,“虚拟内存”通常指 Swap:当物理内存紧张时,系统把一部分不活跃内存页换到磁盘,避免进程被 OOM 杀掉。对云服务器来说,Swap 是典型的“兜底能力”,能显著降低突发内存抖动带来的业务中断风险。


0)先确认当前是否已有Swap

swapon --show
free -h

解释:

  • swapon --show:查看当前启用的 Swap 设备/文件、大小、使用量。
  • free -h:查看内存与 Swap 总量和已用量(-h 以易读单位展示)。

1)推荐方案:创建swapfile(最简单、最常用)🧩

1.1 选择 Swap 大小(示例 4G)

常见做法:小内存(1–4G)机器可配 2–4G Swap;如果要“休眠/挂起”,Swap 通常要 ≥ 内存。生产上更建议按业务峰值来定,别盲目越大越好。

1.2 创建并启用 Swap 文件

# 以 4G 为例(优先用 fallocate)
sudo fallocate -l 4G /swapfile

# 设置严格权限(必须做)
sudo chmod 600 /swapfile

# 格式化为 swap
sudo mkswap /swapfile

# 启用 swap
sudo swapon /swapfile

解释:

  • fallocate -l 4G /swapfile:快速创建一个 4G 的文件作为 Swap(某些文件系统若不支持可改用 dd,见下方备选)。
  • chmod 600:将权限设为仅 root 可读写,避免安全风险;Swap 文件权限不对,系统可能拒绝启用。
  • mkswap:把普通文件标记并初始化为 Swap 格式。
  • swapon:立即启用 Swap,让系统开始可用该虚拟内存。

1.3 验证是否生效

swapon --show
free -h

解释:

  • 再次查看 Swap 是否出现,以及总量是否增加;这一步相当于“上线验收”。

2)确保重启后仍生效:写入/etc/fstab(持久化)✅

echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

解释:

  • 这行配置告诉系统:开机时自动把 /swapfile 挂载为 Swap。
  • tee -a:以管理员权限追加写入文件(比直接重定向更稳)。

3)优化 Swap 使用策略:调整swappiness(更像“企业级调参”)📈

# 临时生效(重启会丢)
sudo sysctl vm.swappiness=10

# 永久生效(推荐)
echo 'vm.swappiness=10' | sudo tee /etc/sysctl.d/99-swappiness.conf
sudo sysctl --system

解释:

  • vm.swappiness:值越低,系统越“舍不得”用 Swap;常见建议在服务器上设为 10~20,减少不必要的换页抖动。
  • sysctl --system:重新加载所有 sysctl 配置,让永久配置立即生效。

4)如果 fallocate 不可用:用 dd 备选创建(更兼容)

# 创建 4G:4 * 1024 个 1M 块
sudo dd if=/dev/zero of=/swapfile bs=1M count=4096 status=progress
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile

解释:

  • dd if=/dev/zero ...:用“写零”的方式创建文件,兼容性强但速度更慢。
  • 其余步骤与前面一致:权限 → 格式化 → 启用。

5)需要关闭/删除 Swap(例如你想调整大小)

sudo swapoff /swapfile
sudo sed -i '\|/swapfile|d' /etc/fstab
sudo rm -f /swapfile

解释:

  • swapoff:先下线 Swap,避免正在使用时删除导致异常。
  • sed ... /etc/fstab:移除开机自动启用配置,避免下次启动报错。
  • rm -f:删除文件本体,释放磁盘空间。

一句话建议(务实版)

把 Swap 当成风险缓冲层:它不能替代内存扩容,但能显著降低“突发内存峰值直接宕机”的概率。你要的是业务连续性,不是和 OOM 赌命。🙂

已经是第一篇啦!

下一篇: 服务器路由命令有哪些常用技巧?