服务器与大带宽专家 · 持牌IDC/CDN/ISP服务商
简米科技官网JIANMI TECH
资讯 2026-10-17 更新于 2026-10-17 简米科技 3,356 字 8 分钟阅读

虚拟机配置swap分区大小多少合适?swap分区设置多大最佳?

导读虚拟机swap分区大小没有统一答案,但通用规则是:内存≤2GB按2倍内存设置,2-8GB按等于或一半内存设置,8-64GB设4-8GB,超过64GB可设8-16GB或关闭;数据库、Kubernetes节点、低延迟生产服务通常关闭或严格限制swap,这个结论来自Linux内核文档、红帽企业Linux文档和主流云厂……

虚拟机swap分区大小没有统一答案,但通用规则是:内存≤2GB按2倍内存设置,2-8GB按等于或一半内存设置,8-64GB设4-8GB,超过64GB可设8-16GB或关闭;数据库、Kubernetes节点、低延迟生产服务通常关闭或严格限制swap。

这个结论来自Linux内核文档、红帽企业Linux文档和主流云厂商镜像实践,选swap不是拍脑袋,而是看内存、业务延迟、磁盘类型和是否休眠,下面按场景拆开讲。

虚拟机swap分区设置多大合适?先看内存与业务场景

swap到底解决什么问题

swap是磁盘上的交换空间,内存紧张时,内核把不活跃页换出,给活跃进程腾地方。

  • 好处:避免OOM,让系统撑过内存峰值。
  • 代价:磁盘IO比内存慢很多,业务延迟可能升高。
  • 关键变量:物理内存、业务延迟要求、磁盘类型、是否启用休眠。

按内存给出推荐范围

下表是常见建议,不是绝对标准,具体还要看业务。

物理内存 开发/桌面虚拟机 通用服务器 数据库/低延迟生产
≤2GB 2GB-4GB 2GB 1GB-2GB或关闭
2-8GB 等于内存 等于内存或一半 2GB-4GB
8-64GB 4GB-8GB 2GB-4GB 2GB-4GB或关闭
>64GB 8GB-16GB 8GB 通常关闭

据红帽企业Linux文档,swap建议与内存和休眠有关;若需要休眠,swap应不小于物理内存,行业共识认为,生产数据库应尽量避免swap,防止查询延迟抖动。

检查现有swap和内存

登录虚拟机后,先看现状:

  • free -h:查看内存和swap总量。
  • swapon --show:列出已启用swap设备。
  • 虚拟机配置swap分区大小多少合适?swap分区设置多大最佳?

  • cat /proc/swaps:查看内核识别的swap。
  • vmstat 1:关注si和so,长期非0说明内存不足,正在频繁换入换出。
  • sar -W 1 5:需要sysstat包,查看swap换页统计。

如果free -h显示swap为0,说明系统没开swap,低配机器可以补一个swap文件。

云服务器swap分区要不要开启?低配实例与生产环境对比

低配云服务器:建议开启

1核1G、1核2G这类实例内存小,跑个MySQL、Docker或Java应用就容易OOM,开启2GB swap能兜底。

  • 系统盘通常40GB起步,占2GB可以接受。
  • 设置vm.swappiness=10-30,减少无谓换出。
  • 如果磁盘是SSD或NVMe,swap性能比机械盘好得多。

生产环境:看技术栈

业内专家指出,生产环境是否开swap更多取决于技术栈的硬性要求。

  • Kubernetes节点:据Kubernetes官方文档,kubelet默认要求关闭swap,开启可能导致调度和性能问题。
  • 大数据、Elasticsearch、Redis:多数建议关闭或仅留小swap,避免延迟。
  • 普通Web、中间件:可保留2-4GB,防止突发内存峰值。

swap分区与swap文件怎么选

  • 分区:性能略好,但调整麻烦,需要重新分区。
  • 文件:灵活,易扩容,适合云主机和KVM虚拟机。
  • 对比:在SSD/NVMe上差距不大,文件更实用。

创建swap文件的操作路径:

sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

调整swappiness:

sudo sysctl vm.swappiness=10
echo 'vm.swappiness=10' | sudo tee -a /etc/sysctl.conf

1核2G虚拟机swap分区大小怎么设置?价格敏感型配置实操

虚拟机配置swap分区大小多少合适?swap分区设置多大最佳?

推荐值:2GB,swappiness=10-30

1核2G是低配云主机常见规格,内存小,swap能兜底,2GB是较稳妥的起点。

  • 如果磁盘IO低,swap频繁会拖慢系统。
  • 监控vmstat 1,若si/so长期非0,说明内存不足。
  • 预算允许时,优先升级内存,而不是加大swap。

创建与持久化步骤

  1. 查看内存:free -h
  2. 查看磁盘:df -h
  3. 创建2GB文件:sudo dd if=/dev/zero of=/swapfile bs=1M count=2048
  4. 设置权限:sudo chmod 600 /swapfile
  5. 格式化:sudo mkswap /swapfile
  6. 启用:sudo swapon /swapfile
  7. 开机挂载:编辑/etc/fstab添加/swapfile none swap sw 0 0
  8. 验证:swapon --show和free -h

价格与磁盘成本

云主机swap不单独计费,但占用系统盘空间,系统盘小,可以挂数据盘放swap,低配实例加内存比依赖swap更有效,尤其对Java、数据库类应用。

Linux虚拟机swap分区最佳实践:KVM、VMware与Docker场景

KVM/libvirt

  • 虚拟机磁盘用qcow2时,swap文件更灵活。
  • 可在宿主机层面监控swap IO。
  • 测试机可设2-4GB,生产机按业务定。

VMware

  • 分区或文件均可,注意磁盘置备类型。
  • 如果启用内存热添加,swap不必过大。
  • 模板中可预留swap文件,部署后调整。

Docker与Kubernetes

  • Docker容器默认不单独限制swap,宿主机swap影响容器。
  • Kubernetes节点按官方文档关闭swap,或设置fail-swap-on=false,但不推荐。
  • 若必须开启,给节点保留2-4GB并调低swappiness。

调优参数

  • vm.swappiness:10-30适合多数服务器;数据库可设1-10。
  • 虚拟机配置swap分区大小多少合适?swap分区设置多大最佳?

  • vm.vfs_cache_pressure:50-100。
  • vm.overcommit_memory:0或1,谨慎修改。
  • 监控:free -h、vmstat 1、sar -W。

国内云主机swap配置差异?地域与镜像影响

地域不改变原理,镜像策略有差异

北京、上海、广州等地域的云主机,swap原理相同,但不同厂商、不同公共镜像默认swap不同,有的默认无swap,有的给1-2GB。

创建实例后先执行swapon --show确认,如果没开,按上文创建swap文件。

常见云厂商镜像检查

  • 简米云、酷番云、华为云等云服务器,部分镜像默认关闭swap。
  • 自定义镜像要检查/etc/fstab。
  • 容器优化镜像通常关闭swap。

选择建议

按业务而非地域,低配开发机开2GB;生产数据库关闭或设小,云监控里关注内存使用率和swap IO,比纠结地域更有用。

虚拟机swap分区大小要围绕内存和业务延迟定,低配开2GB换稳定,生产低延迟服务宁可加内存也别依赖swap。

虚拟机配置swap分区大小多少合适?常见问题解答

Q1:虚拟机swap分区越大越好吗?

不是,swap太大可能掩盖内存不足,频繁换入换出会拖慢磁盘和业务,按内存和用途设2-8GB通常够用,数据库等低延迟场景关闭或设小。

Q2:云服务器swap分区要不要开启?

看场景,1核1G、1核2G开发测试机建议开2GB,Kubernetes节点按官方文档关闭,普通Web可保留2-4GB。

Q3:如何查看和调整虚拟机swap大小?

查看用free -h和swapon --show,调整可创建新swap文件,swapoff旧文件,修改/etc/fstab,再swapon,调整后确认/proc/swaps和free -h输出。

分享本文
本文为 简米科技官网 原创,已由运维技术专家审核。转载请注明来源:原文链接
售前咨询 服务热线 售后 邮箱