温馨提示×

Ubuntu镜像性能优化技巧有哪些

小樊
46
2025-12-28 05:05:54
栏目: 智能运维

Ubuntu镜像性能优化技巧

一 系统安装镜像与虚拟机镜像

  • 硬件与固件层:优先使用SSD/NVMe,在BIOS中开启快速启动、禁用未使用设备(如旧串口/并口/多余网卡),减少驱动加载与自检时间。
  • 启动与内核:精简内核与模块,选择更快的内核压缩方式(如 gz),避免不必要的内核裁剪导致地址移动与复制开销;按需调整内核启动参数。
  • 服务与自启:禁用不需要的systemd服务与定时器(如更新检查类),减少并行后台进程对CPU/IO的抢占。
  • 桌面与软件:选择**轻量级桌面环境(如 Xfce)**或服务器版,关闭开机自启的冗余应用。
  • 维护与更新:保持系统与内核及时更新,定期清理无用包与缓存,维持镜像“轻快”。

二 Docker与容器镜像

  • 基础镜像:优先选用ubuntu:slim或更小的基础镜像;非Ubuntu场景可用Alpine以显著降低体积与攻击面。
  • 多阶段构建:将构建依赖与运行产物分离,只保留运行必需文件,显著减小最终镜像。
  • 分层与清理:合并RUN指令减少层数;在构建末尾执行**apt-get clean && rm -rf /var/lib/apt/lists/ *** 等清理,避免缓存进入镜像层。
  • 资源与并行:在CI中设置MAKEFLAGS="-j$(nproc --all)"充分利用多核;将高IO缓存(如npmvcpkg)指向**/tmp/mnt**临时盘,降低系统盘争用。
  • 运行期优化:按需启动containerd/docker,避免常驻占用;精简预装工具链,仅保留项目所需版本,减少环境变量冲突与磁盘IO。

三 CI/CD运行器镜像(以 GitHub Actions Ubuntu 24.04 为例)

  • 服务精简:禁用fwupd-refresh.timer,按需启停containerd/docker,必要时卸载snapd以减少后台更新与资源占用。
  • 工具链治理:仅保留项目需要的Python/Node/Go等版本,避免多版本并存引发PATH与缓存冲突。
  • 缓存与路径:将VCPKG_INSTALLATION_ROOTnpm_config_cache等迁移到临时存储(如**/mnt/temp**),降低系统盘IO瓶颈。
  • 并行与基线:设置MAKEFLAGS为**-j$(nproc --all);使用官方脚本(如System.Tests.ps1**、measure-provisioners-duration.ps1)建立性能基线并验证优化收益。

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

  • 系统镜像与虚拟机
    • 更换为SSD/NVMe;BIOS开启快速启动、禁用无用设备。
    • 精简内核与模块;选择较快的压缩方式;减少自启服务与定时任务。
    • 使用轻量桌面或服务器版;定期更新与清理
  • Docker/容器
    • 基础镜像:ubuntu:slim/Alpine;使用多阶段构建与层合并。
    • 构建末清理:apt-get clean && rm -rf /var/lib/apt/lists/*。
    • CI并行:MAKEFLAGS=“-j$(nproc --all)”;缓存指向**/tmp/mnt**。
  • 常用命令示例
    • 系统清理与精简内核
      • sudo apt-get clean && sudo apt-get autoclean && sudo apt-get autoremove
      • sudo apt-get purge linux-image-
    • Docker多阶段与清理
      • RUN apt-get update && apt-get install -y build-essential &&
        make && make install &&
        apt-get clean && rm -rf /var/lib/apt/lists/*
    • CI服务精简与缓存迁移
      • sudo systemctl mask fwupd-refresh.timer
      • sudo systemctl stop containerd docker
      • export VCPKG_INSTALLATION_ROOT=/mnt/temp/vcpkg
      • export npm_config_cache=/mnt/temp/npm-cache
      • export MAKEFLAGS=“-j$(nproc --all)”

0