服务公告
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 赌命。🙂
已经是第一篇啦!
下一篇: 服务器路由命令有哪些常用技巧?