ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

半导体工厂VMware替代实战:自建OpenStack云平台与核心生产系统迁移复盘

半导体工厂VMware替代实战:自建OpenStack云平台与核心生产系统迁移复盘 过去两年“VMware 替代”在 IT 基础设施圈子里的讨论热度一直没降但真正把底座换掉、并且敢拿核心生产业务去赌一次完整转型的团队并没有想象中那么多。半导体行业更是如此——设备不能停、批次不能乱、追溯不能断每一项要求在 IT 人眼里都是硬骨头。我所在的团队在 2023 年底启动了自建云平台的替换专项用一年多时间完成了研发环境和核心生产系统从 VMware 到自建平台的迁移。这篇内容就是这次半导体 IT 基础设施转型实践合集的完整复盘。这篇东西适合谁看如果你的企业正在评估 VMware 替代方案或者已经在建设自有的 IT 基础设施云平台又或者你只是好奇“MES 这种级别的心脏系统怎么敢迁移到自建环境”都可以从里面找到对得上号的场景。文里所有方案、参数、流程都来自真实落地后的反推不是照着官方手册抄的我会把当初的取舍逻辑和踩坑过程都讲清楚。1. 一张涨了四倍的续费账单是这次转型的起点1.1 半导体工厂的信息系统底座到底有多重先看背景才好理解后面的每一个决策。半导体工厂的 IT 系统不是大家熟悉的“OA 邮件 网站”那套它的核心是围绕生产线运转的一整套工业软件体系MES制造执行系统负责管理从投片到出货的每一道工序EAP设备自动化程序直接和光刻机、刻蚀机、薄膜沉积设备通信SPC统计过程控制实时监控工艺参数RMS配方管理系统管着每个机台的工艺配方。这套系统里任何一个服务抖动几分钟产线上的批次就可能滞留后面的追溯报表就出现缺口。这些系统绝大多数是 x86 架构的虚拟机过去十几年基本都跑在 VMware 的虚拟化集群上。原因很简单VMware 在虚拟化时代的稳定性和生态成熟度确实没得挑半导体行业的 IT 团队又普遍求稳不会轻易动自己的底座。所以当 2023 年 VMware 的商业模式发生剧烈变化时一大批制造企业的 IT 负责人突然发现自己手里握着的是一个“不换不行换起来又极其痛苦”的资产。1.2 商业变化暴露出的成本与技术债我们最先感受到的是成本。新财年的授权报价出来之后我们做了一次三年期的总拥有成本测算按照新的订阅制价格底座相关的费用相比原来每年上涨了三倍以上而且这个模型里还没有算上后续扩容时的增量成本。这不是我们一家遇到的情况当时身边不少制造业同行拿到的报价都有类似的涨幅。比钱更麻烦的是不确定性。产品线调整后部分旧版本的补丁策略、功能演进路线都变得不清晰而我们手里跑着的生产环境恰恰依赖旧版本中不少“老而稳”的特性。还有一个容易被忽略的点企业内部对虚拟化平台的运维知识储备高度集中在 VMware 一套体系里如果继续留下来短期看是省事长期看是把整个工厂的算力命脉押在一个自己无法掌控的方向上。这种技术债越往后还越贵。1.3 研发与生产必须当成两个问题来解项目启动前很多同事以为“替换 VMware”就是“找一套新虚拟化软件把虚拟机迁移过去”。这个理解只对了一半。研发环境和核心生产环境的诉求几乎是相反的研发团队要的是弹性、自助、快他们要开一台跑仿真的虚拟机恨不得十分钟之内就拿到登录口令还要能随时调整配置。生产环境要的则是确定、稳定、可审计MES 数据库的每一次变更都要走审批停机窗口精确到分钟连监控指标的采集频率都有讲究。这两个场景如果混在一个池子里用同一套策略管理大概率会两头都不讨好。所以我们在立项时定的基调是同一套自建云平台底座但研发和生产走两套独立池、两种服务目录、两套变更流程。这个思路贯穿了后面所有设计和实施环节。2. 平台选型三条路线、五个维度最后为什么是自建 OpenStack2.1 三条候选路线商业私有云、HCI 超融合、自建 IaaS平台选型我们花了大约两个月不是没做够功课而是这个决定一旦做错后面所有迁移都会被拖下水。当时进入决赛圈的有三套方案第一类是商业私有云产品国内有不少基于 OpenStack 或 KVM 做了封装和商业支持的发行版开箱即用有厂商售后兜底第二类是 HCI 超融合架构以 Nutanix 和国内几家超融合产品为代表优势是软硬一体、部署快、运维门槛低第三类是彻底自建 IaaS用 OpenStack 开源版本自己搭底层配 KVM、Ceph 分布式存储和 OVS 网络。我把三套方案的关键差异摆在一张表里对比过方案交付周期运维门槛扩展自由度License 成本与容器平台的融合度商业私有云1-2 个月中中中等按节点计费中HCI 超融合2-4 周低低受硬件绑定高软硬一起算中OpenStack 自建3-6 个月高高低无 License 费用高2.2 五个评估维度的得分逻辑除了表格里这些维度我们还额外看了迁移成本、团队技能、业务匹配、TCO 和生态扩展五件事。迁移成本主要看从 VMware 到目标平台的工具链成熟度OpenStack 生态里有 virt-v2v 这类比较成熟的转换工具商业发行版也会提供迁移工具HCI 的迁移能力一般依赖原厂服务这三者其实都够用但 OpenStack 的开放性是最高的。团队技能上我们团队有三个人以前搞过 OpenStack 部署和日常运维能独立写 Nova 和 Neutron 的排障流程HCI 方案虽然运维门槛低但也会把团队长期绑在特定厂商的图形界面上对工程能力成长帮助有限。业务匹配上半导体研发场景需要 GPU 池、高性能存储、多租户配额生产场景需要精细的网络隔离和存储性能保障OpenStack 的模块化设计方便我们按场景拼装这些能力。最关键的其实是 TCO 的算法。商业私有云和 HCI 的 License / 软硬件成本在项目初期看并不惊人但三到五年的续保和扩容费用叠加起来和我们测算的新订阅制 VMware 相比并不会便宜太多。OpenStack 自建是一次性 CAPEX 投入为主后期扩容只买硬件运维人力成本虽然高但我们团队能把这部分工作内部消化掉。再加上工厂的预算结构更适合资本化支出最终我们选择了 OpenStack 自建这条路。2.3 自建不等于闭门造车吸收了哪些开源工具这里要说清楚一点“自建 OpenStack”不等于我们真的从零开始造轮子。我们站在巨人的肩膀上用的是一个成熟的开源组件栈KVM 和 QEMU 做虚拟化底座Libvirt 负责虚拟机生命周期管理Nova 管计算资源Neutron 配 OVS 管网络Cinder 对接 Ceph 提供块存储Glance 管镜像Keystone 做认证。调度层面没有额外魔改就是标准 Nova 调度器加自定义的宿主机 aggregate 分组。另外我们没有急着把容器平台也一起扛在 OpenStack 里。研发场景当时已经有 Kubernetes 的需求但我们把 K8s 集群作为 OpenStack 之上的“租户”来运行容器节点本身就是 Nova 创建的虚拟机。这样做的好处是让两个平台的故障域分开哪怕 K8s 控制面出问题也不会把底层的 OpenStack 计算节点拖下水。这一步设计在后期生产系统迁移时帮了大忙因为 MES 这类业务跑的是传统虚拟机完全不受研发容器环境的影响。3. 研发云先行服务目录、自助配额与 GPU 池两周跑通第一台业务虚拟机3.1 研发工作负载画像EDA 仿真、大数据、容器测试研发场景的落地优先级最高不是因为它的业务最重而是因为它迁移风险最低、见效最快能帮整个项目建立信心。我们先把研发部门的工作负载梳理了一遍主要分成三类。第一类是 EDA 工具链设计团队跑 Virtuoso、HSPICE 这类软件做电路设计和仿真特征是单机算力要求高、偶尔需要 GPU 加速。第二类是半导体大数据分析比如良率分析、缺陷检测的数据处理任务特征是需要大规模并行计算跑批处理作业对存储吞吐有要求。第三类是软件研发团队的测试环境他们要频繁创建和销毁虚拟机、部署容器集群特征是生命周期短、数量多、自动化诉求强。这三类负载的共性问题是以前在 VMware 环境下开一台虚拟机要提工单管理员手动创建平均交付周期两三天配置变更还要再等一轮审批。研发同事早就怨声载道所以当我们说“新的自建云平台可以自助申请”时他们是最积极的一批用户。3.2 从“提工单”到“自助取用”服务目录与审批流设计研发云的第一版设计目标很朴素让用户十分钟内能自己开一台虚拟机。落地方式是在 OpenStack 之上做了一层服务目录和审批流。服务目录里预置了几档模板通用计算型 8C32G适合普通开发和测试高内存型 8C128G适合内存密集的仿真任务高计算型 16C64G适合跑批处理GPU 加速型 8C64G 加一张透传 GPU适合 EDA 加速和机器学习训练。操作系统镜像统一封装成标准模板研发用户选好规格、填好用途说明提交申请后走部门主管审批和平台管理员复核两级审批通过后自动部署交付时间从原来的几天压缩到十分钟以内。配额管理上我们没有搞复杂的计费系统而是按部门设置资源配额每个项目组一个 OpenStack 项目Project配额用完就提示用户走临时扩容审批。这一步很重要如果不做配额研发同事的“自助”会迅速变成资源浪费几百台测试虚拟机躺在池子里吃灰。配上配额之后每个部门对自己的资源消耗有了直观感知回收僵尸虚拟机的效率也高了很多。3.3 高性能场景的落点PCIe 透传 GPU 与本地 NVMe 缓存研发环境里真正考验平台的不是普通虚拟机而是带 GPU 的计算节点和 EDA 仿真对存储性能的要求。GPU 这块我们做的是 PCIe 透传直接把物理 GPU 卡映射给虚拟机使用。为什么不用 vGPU 虚拟化因为 EDA 工具和一些内部算法对 GPU 驱动的兼容性很挑透传的方式最干净性能和裸机几乎一致。为了控制故障半径每台 GPU 宿主机只放两张卡日常业务各占一张第三张卡预留在机柜里做备件。一旦透传的 GPU 卡硬件故障我们可以在十分钟内把业务切到备用显卡对应的宿主机上。存储方面研发场景的 EDA 仿真会产生大量中间文件对随机读写和带宽都很敏感。我们把 Ceph 集群按性能分了池SSD 池跑普通数据库和代码仓库NVMe 池跑 EDA 项目的临时文件和高并发读写场景。仿真节点还配置了本地 NVMe 缓存目录把热数据落到本机效果立竿见影部分仿真作业的 I/O 等待时间比其他方案低了接近一半。3.4 研发数据防丢快照、异地备份与回收站策略研发数据在资产价值上不如生产数据但真丢了一样会出大事——设计团队的版图数据、仿真结果可能凝聚了几个月的劳动成果。我们在研发云上做了三层数据保护虚拟机的定期快照开发态虚拟机每 12 小时打一次快照保留最近 7 份重要仿真数据每天增量备份到独立的备份存储节点每周做一次全量还设了一个“回收站”机制虚拟机删除后在回收站保留 30 天管理员随时可以恢复防止用户手滑删库。这套策略上线后确实救过一次场有同事误删了跑了三天的大规模仿真任务目录从快照恢复后只丢了不到一小时的中间结果这个案例后来成了研发云推广时最生动的宣传素材。4. 核心生产系统迁移MES 上自建云的 5 道关卡与割接实战4.1 生产系统的清单梳理与风险分级研发云跑顺之后团队开始啃最硬的骨头核心生产系统迁移。我们做的第一件事不是碰任何一台生产虚拟机而是花两周时间梳理系统清单并给每个系统做风险分级。分级维度很简单停机会对产线造成多大影响、数据一致性要求多高、周边依赖关系多复杂。MES、EAP、SPC、RMS 这些直接参与生产控制的系统是 A 级迁移策略必须“一机一策”每个系统单独出方案WMS、报表平台、API 网关这类不直接控制机台但生产依赖的系统是 B 级可以按批次灰度内部工具、监控系统是 C 级随时可以迁。清单梳理出来之后我们发现真正让人睡不着觉的其实只有 A 级的十几个服务其中又以 MES 数据库和 EAP 服务为重中之重。每套 A 级系统我们都做了一张“系统卡片”包括虚拟机规格与 CPU 内存配置、操作系统版本、数据库大版本、存储卷的 IOPS 实测值、峰值负载时段、周边依赖清单、允许停机的最长时间。这张卡片是后面每一台虚拟机迁移评估的输入没有完成卡片填写的系统不允许进入迁移流程。4.2 网络与存储设计VLAN 映射、Ceph 分池与数据库本地盘生产系统的迁移网络规划和存储设计往往比虚拟机迁移本身更复杂。从 VMware 环境切到 OpenStack选择的是 Neutron 的 VLAN 网络模式。我们把原来 vSphere 分布式交换机上的端口组逐一映射到 Neutron 网络生产业务 VLAN、机台通信 VLAN、备份管理 VLAN、存储 VLAN 完全隔离。这里有个容易被低估的环节EAP 到机台设备的通信大量依赖二层网络而且是物理机台直接访问虚拟机的场景。我们在迁移前用专门的二层连通性测试工具逐台验证了 EAP 服务与生产设备之间的连通性和延迟确保割接后机台不会因为网络路径变化而报通信超时。存储设计上前面提到的 Ceph 分池继续沿用但针对生产场景做了两个调整。一是生产系统的虚拟磁盘必须有 QoS 限制防止某一台高负载虚拟机把整个池的 I/O 带宽吃光二是核心数据库不放在 Ceph 分布式存储上而是直接用宿主机本地 NVMe 盘承载配合数据库层的主从复制保证高可用。这个决策有点反直觉——明明建了分布式存储关键数据却不往里面放原因是 MES 数据库的写入抖动直接决定产线追溯的准确性分布式存储再稳也会有跨节点的网络和副本时延而本地 NVMe 主从复制能提供最确定的性能。分布式存储承载外围系统和备份数据本地盘承载核心数据库各有分工。4.3 V2V 迁移链路从 VMware 到 KVM 的完整流程虚拟机迁移我们主要走 virt-v2v 这条链路流程可以总结为五步。第一步是预检对源虚拟机做兼容性扫描看看操作系统版本、虚拟硬件配置、磁盘控制器类型、原平台工具残留会有哪些坑。第二步是驱动处理Linux 虚拟机直接转换为 virtio 设备驱动Windows 虚拟机则需要提前注入 virtio-win 驱动否则转换后很可能因为缺少存储控制器驱动直接蓝屏。第三步是执行转换把 VMware 的 vmdk 磁盘转换成 qcow2 格式并注入必要的虚拟硬件配置。第四步是注册镜像把转换后的镜像上传到 Glance在 Nova 里按约定的 flavor 启动为虚拟机。第五步是配置调整改 IP、确认网卡启动顺序、调整时间同步策略、清理无关驱动残留然后交给业务团队做功能验证。这套流程跑通之后我们做了大量预演。预演的目的是把“转换后常见的启动失败”消灭在正式割接之前而不是等到生产窗口里手忙脚乱。4.4 割接窗口、灰度切换与 90 天回退期正式割接的节奏比技术本身更考验项目管理。我们定的总策略是先研发、后生产生产里先外围、后核心。在迁移顺序上第一批迁移的是 C 级监控和 B 级报表系统它们能够验证平台在生产场景下的稳定性第二批是 EAP 相关的接口服务因为它们和机台关联但比 MES 更容易接受短暂中断第三批才轮到 MES 核心数据库和应用服务。每批迁移都遵循“演练、正式、观察、回退”四步先在测试环境完整演练一遍确认切换步骤和回退步骤的时间都在预期内正式割接选择周末的低产时段留出 4 到 6 小时的窗口切换完成后至少观察一个完整生产班次出问题就执行预演过的回退动作。回退保障上我们做了最坏的打算原 VMware 环境在迁移完成后保留 90 天所有源端虚拟机不删除确保新平台任何一个环节出问题都能在分钟级把业务切回原环境。虽然最终没有用到回退但这个兜底设计给了业务部门极大的安全感也让整个迁移审批流程顺畅了很多。割接当晚MES 系统在新平台启动成功、第一批生产批次数据正常流转的时候那是我在这个项目里最紧张也最有成就感的一刻。5. 四起典型事故复盘迁移中真正让团队熬夜的瞬间5.1 时钟漂移引发 MES 批次时间戳错乱迁移后的第三周产线反馈 MES 的部分批次记录在追溯报表里出现了时间逆序后一道工序的时间戳比前一道工序的还早虽然只差几十秒但这种事在半导体制造里是绝对不能被接受的。排查链路是这样的先对比了宿主机、虚拟机和业务应用三层的时间。宿主机用 chrony 同步时间偏差在 1 毫秒以内但虚拟机内部的时间已经比标准时间快了二十多秒。再往下查发现 Windows 虚拟机的 NTP 服务没有启动而系统时间源设置成了本地 RTC没有和宿主机的高精度时间源对齐。负载高的时候CPU 时间片调度抖动会让虚拟机的时钟越走越快最终反映到应用层就是时间戳错乱。根因找到了修复反而是最轻松的统一所有生产虚拟机的 NTP 配置强制使用企业内网时间源宿主机这边接入硬件时钟源保证宿主机本身的精准度监控平台加入时间偏移告警虚拟机和宿主机的时间偏差超过 500 毫秒就自动报警。这个事故让我明白在半导体生产环境里时钟同步不是“要不要配”的问题而是“必须作为生产准入条件”的问题。5.2 Windows 虚拟机迁移后启动崩溃0xc0000005 蓝屏排查还有一台 Windows Server 的数据库虚拟机迁移后在冷启动阶段蓝屏报错码 0xc0000005Access Violation。如果用过 VMware Workstation 的人可能见过类似形态的故障什么“vcpu-1 exception 0xc0000005”之类的报错这次我们在自建平台上的生产数据库场景又遇到了同族问题。排查链路第一站是看虚拟机日志确认是引导阶段崩溃还是进系统后崩溃第二站对比目标平台模拟的 CPU 特性和源平台的差异。问题就出在这里源端 VMware 给虚拟机暴露了一组 CPU 特性标志转换到 KVM 平台后虚拟 CPU 默认模型没有完全暴露同等的指令集特性这台数据库虚拟机里的旧版应用初始化时访问了某个不存在的指令集特性直接触发异常。解决方法是把该虚拟机的 CPU 模型设置为 host-passthrough让虚拟 CPU 完整继承宿主机物理 CPU 的特性重启后问题消失。我们随后在 Glance 镜像元数据里固定了所有生产虚拟机镜像的 CPU 特性配置并增加了一个迁移前检查项核对源虚拟机的 CPU 特性标志与目标平台是否兼容。这类问题如果课到迁移后没有及时发现排查成本会成倍上升。5.3 分布式存储的慢盘拖垮整个集群性能Ceph 集群也给我们上过一课。某天早上 MES 的数据库查询延迟突然飙高Ceph 的 health 状态从 HEALTH_OK 变成 HEALTH_WARN管理界面上出现大量 slow ops 告警。先说结论再还原排查过程。当时使用ceph health detail查看详情发现某个 OSD 的状态异常而且同主机的一块磁盘的 smartctl 报告显示延迟超标、重试次数暴涨。因为这台主机所在机柜的散热风扇有一个故障节点温度比正常值高出近 10 度磁盘在持续高温下开始频繁重试拖慢了整个存储池的性能。Ceph 为了保证数据副本的一致性会等慢盘完成写操作慢盘上的请求积压最终表现为所有访问该数据池的业务都变慢。处理的链路是隔离异常 OSD、触发数据重均衡、更换故障风扇、换上新盘并等待 PG 重新恢复。复盘后的两个改进很重要一是性能敏感池的副本策略调整为更适合快速换盘的配置让故障盘的恢复时间可控二是监控上做了“smart 属性 节点温度”的联动告警而不是等到业务受影响才后知后觉。分布式存储自愈能力很强但它对硬件基线监测的要求其实比传统磁盘阵列时代更严格。5.4 迁移后 SSH 与带外管理链路中断第四起事故很“经典”但越经典越值得复盘。一批 Linux 虚拟机迁移完成后管理员通过堡垒机连接虚拟机大面积超时业务端口通但 SSH 就是连不上。排查发现迁移后虚拟机的网卡 MAC 地址发生变化而原来的网络配置把 IP 绑死在旧 MAC 上导致新平台启动后网卡没拿到预期 IPsshd 对应的服务地址自然也不对。再加上部分虚拟机的 iptables 规则沿用了旧平台的网段策略在迁移过程中没有同步调整防火墙层面直接把堡垒机的访问源拦掉了。我们批量解决的方式是用 cloud-init 注入全新的网络配置完全摒弃“绑定 MAC”这种传统做法改用动态获取 IP 加 DHCP 固定保留地址的方式。同时在迁移操作规范里增加了一条所有虚拟机迁移后必须做网络策略核对包括网卡地址、防火墙规则、远程管理通道三项缺一不可。这个事故也带出一个安全层面的细节迁移后虚拟机的 SSH 主机密钥指纹全部变化了由于没有提前在 CMDB 登记运维团队花了不少时间确认“这台机器确实是原来那台”。后来这成了迁移清单里的固定检查项。6. 项目收尾后的日常容量运营、成本核算与团队分工6.1 平台运维从“救火”转向“算账”把研发和生产两套环境都迁到自建平台之后我的工作重心突然从“搞定迁移”变成了“把这个平台长期养好”。这个转变说起来简单做起来完全是另一套思路。容量运营是最直观的例子。以前 VMware 环境里虚拟机磁盘快满了大家的反应是“加个 LUN”到了自建云平台上我们开始认真算每一层池子的剩余空间、每个项目组的配额使用率、每一台宿主机未来三个月的扩容预期。我们给自己的红线是计算和存储资源使用率超过 70% 就要启动扩容评估因为半导体业务的峰值负载通常来得又急又猛临时扩容往往来不及。成本核算也从“大概有个数”变成了精细的数据。运维团队每个季度出具一份平台成本报告把硬件的资本支出折旧、电费、机柜空间、人力运维成本摊到每个项目组的资源消耗上。研发部门的反应很有意思他们看到自己的虚拟机成本数字之后主动开始清理闲置资源了——以前没人关心这些现在每一分钱都看得见。6.2 监控告警体系和生产事故复盘机制OpenStack 平台本身有丰富的监控接口我们以 Prometheus 采集宿主机和虚拟机指标Grafana 做可视化重点不是看面板上花花绿绿的曲线而是盯业务请求的 P99 延迟。这个思路是那次 MES 数据库查询延迟事故之后定下来的平台层面看 CPU、内存、磁盘利用率只是表象真正能说明问题的是业务视角的响应时间变化。事故复盘我们也制度化。每次生产事故都会产出一份 RCA 文档包含时间线、根因、影响范围、修复动作、后续改进五项每季度做一次“五问复盘”表面问技术原因实际找管理和流程漏洞。这套机制看起来繁琐但对半导体这种对稳定性要求极高的行业来说值得。6.3 如果让我重新规划一次我会把前三周全部花在准入清单上最后说一点个人体会。整个项目里最难的其实不是技术而是让业务部门相信“自建平台也可以像 VMware 一样稳”。我们的做法是用研发环境的稳定运行积累信任用外围系统迁移积累经验最后才动核心生产系统。这个过程比任何技术方案都重要。如果让我重新规划一次这个项目我会把前三周全部花在准入清单上而不是急着去搭环境。很多迁移事故的根源都可以追溯到两个地方要么是源虚拟机信息梳理不清楚要么是目标平台的配置和源环境存在隐性差异。把每一台虚拟机的“系统卡片”填到足够细致后面的迁移只会越来越顺。我们后期基本达到了“迁移一台虚拟机就像一次标准发布”的稳定度就是因为前面的功课做足了。这套自建云平台现在已经成为研发和生产的公共底座新业务默认长在云上容器平台也在稳定扩展。VMware 替代这件事本身已经没有悬念了真正有价值的是这个团队在过程中建立起的对基础设施的掌控力——踏踏实实把每一层组件吃透比任何工具选型都更让人安心。
返回列表