温馨提示×

如何优化ubuntu虚拟机的性能

小樊
35
2025-11-22 19:19:40
栏目: 云计算

Ubuntu 虚拟机性能优化清单

一 宿主机与虚拟化平台设置

  • 启用硬件虚拟化:在 BIOS/UEFI 打开 Intel VT‑x/AMD‑V,为虚拟机提供近乎原生的 CPU 执行能力。
  • 合理分配资源:为虚拟机分配足够的 CPU 核心内存,避免超配导致宿主机抖动;CPU 过多会造成上下文切换开销,内存过多会触发宿主机换页。
  • 存储后端优先:将虚拟磁盘放在 SSD/NVMe 上;虚拟磁盘选择 固定大小(preallocated),减少运行时扩容与碎片。
  • 图形与显示:在 VirtualBox 将显卡控制器设为 VMSVGA 并勾选 启用 3D 加速;在 VMware 安装 open‑vm‑tools/open‑vm‑tools‑desktop 以获得驱动与剪贴板/分辨率自适应。
  • 更新与维护:保持 宿主机与虚拟化软件(VMware/VirtualBox) 为最新版本,获取性能修复与设备驱动改进。

二 磁盘与 I O 优化

  • 文件系统与挂载选项:优先 ext4/XFS;在 /etc/fstab 中为数据盘使用 noatime,nodiratime 减少元数据写入。
  • I/O 调度(KVM 宿主机):SSD 优先 noop/deadline,机械盘可用 cfq;可通过 /sys/block/sdX/queue/scheduler 临时调整并观察效果。
  • 内存与页面回收:适度调低 vm.swappiness(如 10–30),减少换页倾向;视负载调高 vm.dirty_ratio(如 20–40),减少频繁小写入带来的抖动。
  • 日志与缓存清理:定期执行 journalctl --vacuum-time=1w 清理旧日志;用 apt-get autoclean/clean 回收包缓存。
  • 空间扩容流程:关机后扩容虚拟磁盘,再在系统内用 GParted 调整分区与文件系统大小。

三 内存与交换策略

  • 优先使用 zram:启用 zram-config 利用压缩内存作为交换,低延迟且减少磁盘 I/O。
  • 合理设置 vm.swappiness:桌面/开发环境建议 10–30;仅当内存紧张或特定工作负载再提高。
  • 监控与按需扩容:用 free -h、top/htop 观察内存与 swap 使用;必要时增加 swapfile 或调整分区。
  • KSM 场景注意:宿主机启用 KSM 可合并相同内存页节省内存,但在内存紧张或负载波动大时可能引发抖动;可在虚拟机 XML 中加入 禁用该虚拟机的 KSM。

四 网络优化

  • 选择合适的网络模式:需要独立 IP 与局域网互通用 桥接;追求稳定性与易用性用 NAT;仅与宿主机通信用 仅主机
  • 驱动与工具:在 VMware 安装 open‑vm‑tools 获取更好的网卡驱动与网络栈协同。
  • 宿主机侧优化(KVM):如需更高吞吐与更低延迟,可使用 桥接 + vhost‑net 等加速路径(需对应网卡与内核支持)。

五 快速检查清单与常用命令

  • 快速检查清单
    • BIOS 已开启 VT‑x/AMD‑V;宿主机空闲内存充足;虚拟磁盘在 SSD 且为 固定大小
    • 已安装 open‑vm‑tools/open‑vm‑tools‑desktopVirtualBox 增强功能;图形控制器为 VMSVGA 并已启用 3D
    • 文件系统挂载使用 noatime,nodiratimevm.swappiness 已调至 10–30;日志与包缓存已清理。
    • 网络模式与业务匹配(桥接/NAT/仅主机);必要时为 KVM 配置 vhost‑net
  • 常用命令
    • 查看与临时调整 swappiness:
      • cat /proc/sys/vm/swappiness
      • sudo sysctl vm.swappiness=10
    • 清理日志与缓存:
      • sudo journalctl --vacuum-time=1w
      • sudo apt-get autoclean && sudo apt-get clean
    • 监控与调优 CPU 频率(需安装 cpufrequtils):
      • sudo apt-get install cpufrequtils
      • cpufreq-set -g performance
    • KVM 磁盘调度(宿主机执行):
      • cat /sys/block/sda/queue/scheduler
      • echo noop | sudo tee /sys/block/sda/queue/scheduler
    • 启用 zram:
      • sudo apt-get install zram-config
      • sudo systemctl enable --now zramswap.service

0