拓十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

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

半导体IT基础设施转型:从VMware迁移到OpenStack与K8s自建云实践

半导体IT基础设施转型:从VMware迁移到OpenStack与K8s自建云实践 半导体公司的IT说穿了就是两件事保住研发的效率守住生产的稳定。EDA任务要在大规模计算资源上跑MES和EAP要在生产线上盯每一片wafer的流转TB级的GDSII和库文件在存储里往来穿梭——所有这些都踩在IT基础设施一层一层叠起来的地基上。我们团队近期做了一整轮基础设施转型从VMware全面迁到以OpenStack和K8s为底座的自建云平台把研发和核心生产业务都放到了新平台上。这篇实践合集不是产品评测也不算标准参考架构而是我这一年来从方案设计、设备采购到批量迁移、生产排障的真实记录适合正在评估VMware替代、又不想闭眼上公有云的同行参考。1. 为什么半导体行业需要认真考虑VMware替代1.1 研发与生产的负载特征决定了基础设施必须转型半导体业务对IT基础设施的负载非常分裂。研发侧是典型的超高并发、突发密集型任务流片验证期成千上万个仿真任务同时排队一次回归测试要调度几万个job设计数据以TB为单位增长一个GDSII文件几十GB都很常见加上标准单元库、工艺PDK存储读放大的压力非常大。生产侧反过来MES、EAP、RMS这些系统看起来非常简单但7×24小时运行对时延和可用性的要求是整个企业里最苛刻的设备报一次Alarm系统要在几百毫秒内把消息处理掉数据缺一条都要追溯。这两类负载如果混在同一个商业虚拟化平台上就会出现一种尴尬局面HPC任务把CPU和存储IO抬高生产系统的SLA随时被打穿。我们之前的VMware集群就是如此不得不在虚拟化之上再叠一堆自定义规则去保证高优先级应用不被抢资源结果规则越多排查问题越慢。真正让我们下决心的是一次事故老集群的存储控制器固件有bug导致快照批量损坏研发checkpoint全丢生产库也差点没抢救回来。事后总结问题不在VMware本身而是这套架构在负载分化和业务快速扩张面前已经无法用打补丁的方式维持了。1.2 商用许可成本与长期演进的双重压力再说说成本这是很多人最先意识到的痛点。VMware被收购之后许可模式明显转向订阅制而且按CPU核心计费。我们内部做过一个粗略的三年估算维护一个500个虚拟机、双站点高可用的环境当年vSphere加VSAN的订阅费用比过去买永久License加三年维护还要贵出一截。再叠加NSX网络组件、vRealize监控组件一次采购报价出来足够自建云平台做一次完整的硬件换代了。这里并不是说VMware产品能力不行而是商业模型变了。对半导体这种研发投入占比极高的行业IT成本需要精打细算更关键的是调度器要能直接调用虚拟机创建和销毁的接口存储要开放RBD、iSCSI、对象存储多种协议网络要允许我们按租户做细粒度隔离。这些在VMware里也能做到但需要从vSphere、vCenter、NSX、vSAN、vRealize那一整套产品序列里串起来非常重。自建云平台在OpenStack和K8s体系里默认就是API优先的做接口对接和自动化编排省力得多。这就是我们考虑替代的最底层逻辑不是对虚拟化本身不满意而是需要一套更适合半导体负载形态、成本可控、能被研发自助使用的底座。2. 自建云平台的整体设计与技术选型2.1 用分层思路搭建云平台骨架我在设计阶段借鉴了DDD的四层思想把云平台拆成表示层、应用层、领域层、基础设施层。这个做法听起来偏软件工程但对基础设施团队非常管用因为它明确了每个团队的职责边界。表示层统一门户、API网关、监控大盘。研发在这里自助申请资源运维在这里看全链路状态不用各自登录不同系统。应用层租户管理、资源配额、流程审批、服务目录。把我要一台16核64G的云主机变成一条可追溯、可审批的工单流程。领域层计算虚拟化KVM、容器编排K8s、分布式存储Ceph、SDN网络OVS/OVN四大能力域这是平台的技术核心。基础设施层物理服务器、25G/100G交换机、GPU阵列、磁盘阵列这些硬件资源池。这个分层的价值在于领域层的组件可以被替换而不影响上层业务。比如今天用OVS/OVN明天想换成支持硬件加速的智能网卡方案只要在领域层替换驱动和插件表示层和应用层都不用改。实际项目里我见过很多团队一上来就陷在调OpenStack某个插件的细节里忽略了分层边界等要换存储方案时牵一发动全身非常痛苦。2.2 核心组件选型OpenStack、Ceph、K8s怎么组合选型阶段我们调研了OpenStack、K8s、OpenNebula、Proxmox VE等方案也对比过商业超融合。结论很直接Proxmox在小规模场景确实轻便但多租户和API能力偏弱没法支撑研发自助和自动化编排纯K8s要管传统虚拟机得引入KubeVirt存储和网络的生态还不够成熟OpenNebula轻量但生态和高级网络能力一般。最后定了OpenStack做IaaS骨架K8s走容器和AI负载两者并存。方案优势不足我们的最终选择OpenStack多租户完善、VM生命周期管理成熟、虚拟化生态全组件多、部署和运维复杂度高作为IaaS底座Kubernetes容器管理强、自动伸缩、AI负载友好直接管VM成本高KubeVirt与OpenStack并行承载容器和AIProxmox VE轻量、易上手、内置备份大规模多租户和API能力弱仅在测试环境试用OpenNebula简洁适合中小规模生态和高级网络能力不足未采用存储我们选了Ceph。RBD块存储直接挂给VM跑数据库CephFS跑EDA的海量文件共享RGW对象存储用来归档GDSII和日志。Ceph虽然是分布式系统但我们必须按故障域严格规划一个OSD节点最多承载一份数据副本整个机柜掉电不影响数据安全。网络采用OVS加OVN做VXLAN overlay网关和负载均衡都基于neutron插件实现。生产场景要求低时延计算节点上额外留了SR-IOV资源池需要低时延的VM可以直接把物理网卡VF直通进去绕过虚拟交换机转发。物理资源规划同样重要我建议按这个基线起步控制节点3台保证API调度不依赖任何单点不混跑业务VM计算节点CPU超分控制在1:2到1:4EDA任务吃计算生产系统建议超分低一些OSD节点数据盘用大容量HDD单独配NVMe做WAL和DB盘性能差距非常大GPU节点按需部署vGPU切分和物理直通都保留2.3 为什么不是直接换新VMware而是自建平台很多人会问你们既嫌贵为什么不迁移到新版本的vSphere或干脆换Hyper-V我的回答是虚拟化只是一个层面围绕虚拟化的存储、网络、监控、租户管理、自动化接口每一样都在影响长期成本。如果只是换一个商业产品三年后依然面临同样的问题。我们当时做过一次推演结论是OpenStack加K8s加Ceph这套组合虽然前六个月部署和学习成本高但硬件、软件、接口全部可控后续新增一个研发项目组只是加租户的问题。正是这个判断支撑我们走过了最难的前半年。3. 研发与生产双场景的落地实践3.1 研发场景EDA集群向云平台迁移研发侧的核心目标是让EDA任务跑得更快并且资源不浪费。我们把原本裸机加HPC调度器的架构改成了调度器云平台弹性资源池的架构。LSF是EDA作业调度大脑我们在LSF配置里接入了一个外部计算节点Provider。业务申请一批资源时LSF调用OpenStack API批量创建带EDA工具链的云主机任务跑完自动释放。这一步最能体现弹性的价值以前为了应付峰值研发服务器常年处于70%以上负载遇到流片高峰期到处借机器现在日常资源池压在50%左右高峰自动扩容峰值过后缩容释放。存储是EDA场景里最需要重视的环节。研发环境的home目录、项目目录、工具安装目录都挂在CephFS上保持POSIX语义同时做了数据纳管。跑仿真时大量小文件读写非常考验元数据性能元数据服务采用多活部署单独用NVMe盘做元数据存储池。另一个经验是别一上来就搞全闪仿真任务对混合读写带宽更敏感热数据池走全闪、冷数据池走大容量HDD性价比高很多。GPU资源和License管理容易踩坑。深度学习训练和部分硬件仿真工具依赖vGPU切分我们为GPU节点建了独立资源池用Placement功能管理GPU型号和剩余量让资源和License绑定调度。如果两者脱钩就会出现作业明明在排队License却在空转的情况。我们在LSF里加了License令牌与GPU资源的联合约束实测下来资源利用率提升30%以上。3.2 生产场景MES、EAP的高可用和低时延生产环境的要求和研发完全是两个方向要稳、要快、要可审计。MES、EAP、RMS这些系统迁移到以OpenStack为底座的私有云上技术难度不算高难的是同时满足高可用和低时延这两个硬指标。高可用我们做了几件事。控制面节点部署成三节点仲裁模式配合fencing机制任何一个控制节点宕机API和调度服务仍然可用。关键生产虚拟机启用反亲和规则让MES的负载均衡节点、数据库节点、EAP服务节点分布在不同的物理机上物理机故障不会导致整套系统不可用。存储层Ceph副本数默认3生产池单独打开scrub限速避免scrub高峰影响业务IO。低时延方面EAP和设备数据采集需要毫秒级响应普通virtio网络在重负载下会出现抖动。我们的方案是给EAP相关虚拟机做SR-IOV直通让报文绕过虚拟交换机直接进入虚拟机内部数据库和共享存储链路用多路聚合并把存储网络和管理网络严格分离到不同物理交换机上。生产业务上云比虚拟化本身更容易出问题的其实是变更纪律。我们专门为生产租户建了独立的监控、告警和审计日志体系任何一次变更都要走变更管理流程镜像版本固定启动时做安全基线检查。后面我会具体讲一次因为fencing策略没检查导致的生产问题先把结论放这里生产系统上云最怕的不是技术是流程。3.3 迁移路径分批完成VMware退出迁移是整个转型中周期最长、最容易翻车的一环。我们用四步走控制风险。第一步盘点与分级。先扫描现有环境里所有虚拟机梳理出IP、MAC、CPU内存规格、操作系统版本、依赖服务与端口。按业务重要程度分成四级D类测试环境先迁移C类内部工具其次B类研发环境A类生产系统最后迁。第二步选择迁移工具。Linux虚拟机我们用virt-v2v可以自动把vmdk转成qcow2同时修正grub和设备驱动配置Windows虚拟机用qemu-img转换后手动注入virtio驱动。迁移后的虚拟机统一安装cloud-init和qemu-guest-agent否则后续的密码注入、控制台响应都会有问题。# 只转换磁盘的场景 qemu-img convert -f vmdk -O qcow2 old-disk.vmdk new-disk.qcow2 # V2V全自动转换附带驱动修复 virt-v2v -i vmx -o local -os /data/v2v/example example.vmx第三步灰度验证。每一批虚拟机迁到新平台后先保持网络隔离启动后用原有监控方式跑两天流量副本确认磁盘IO延迟、网络丢包率、应用日志没有异常才并入生产VLAN。第四步回退准备。老VMware环境至少保留一个完整备份周期新平台一旦出问题能整机拉回新平台稳定运行一个月后再对比存储容量和License费用明确做出关旧环境的决策。我们当时全程保持老平台可用所以业务部门对切换的接受度比较高没有出现不敢切的僵局。4. 试过才明白存储、网络、驱动层的坑一个都绕不过去4.1 Ceph性能调优与数据池规划Ceph上线后我们做的第一件事是调整PG数和BlueStore的SSD分层。PG数量有个常用的估算方式PG总数等于OSD数乘100再除以目标副本数生产环境一般取2的幂次。比如32个OSD、3副本估算约1066取1024。这不是绝对公式但可以避免PG过小导致数据倾斜、PG过大导致OSD启动过慢。更关键的是SSD分层。数据盘是HDD时一定别省WAL加DB盘。我们给每个OSD单独挂了一块NVMe分区作为RocksDB和WAL的落盘位置实测混合随机写的延迟从几十毫秒降到个位数毫秒。另外生产池和研发池的分池要做彻底研发池对延迟不敏感可以开更激进的压缩生产池关闭压缩并调整数据分布策略让数据尽量均匀。这里我放一条实际用过的池创建命令方便你参考ceph osd pool create prod_pool 1024 1024 replicated ceph osd pool application enable prod_pool rbd rbd pool init -p prod_pool # 生产池关闭压缩 ceph config set mgr mgr/cephadm/osd_memory_target_autotune true4.2 虚拟机迁移后的驱动与兼容性问题Windows虚拟机迁移后蓝屏是Top级问题。原因往往是磁盘控制器从LSI Logic变成virtio系统在启动阶段找不到驱动。我们后来把标准动作固定在迁移第一步先把virtio的ISO通过虚拟光驱挂到原VM装好驱动再转换。Linux虚拟机迁移后容易因为新旧平台CPU指令集不一致导致中间件和许可证服务异常解决方法是KVM统一使用host-model模拟CPU并打开NUMA绑定让虚拟机CPU和物理CPU拓扑对齐。在自建云上偶尔还要在KVM里跑VMware Workstation做验证。如果你看到模块hv启动失败或在此主机上不支持嵌套虚拟化的报错大概率是宿主机KVM没有打开嵌套虚拟化。Linux下临时开启可以这样操作cat /sys/module/kvm_intel/parameters/nested # 检查当前状态N表示关闭 modprobe -r kvm_intel modprobe kvm_intel nested1 # 持久化配置 echo options kvm_intel nested1 /etc/modprobe.d/kvm_intel.conf注意生产环境千万别在业务高峰期执行modprobe卸载重载操作这会中断所有运行中的虚拟机我建议提前规划一个维护窗口。还有一个反复踩的坑原VM里的VMware Tools启动脚本会残留在新系统里。它不致命但会在Windows事件日志里不断报VMware Tools启动脚本未能在虚拟机中成功运行还会拉长开机时间。迁移时要把这些第三方虚拟化服务统一卸载而不是简单禁用否则系统核心里还挂着旧设备驱动后续打补丁都可能受牵连。4.3 网络适配与丢包问题新建云主机偶尔出现ping时通时不通排查到最后往往是大包被分片了。VXLAN隧道要求物理网络MTU至少1600如果接入交换机没调VXLAN封装后就会触发分片。我们把核心链路MTU统一设到9000租户网络MTU保持1500VXLAN封装后不会超过物理MTU问题就消失了。DPDK场景也有一个很隐蔽的坑OVS的pmd线程和宿主机的中断要绑在不同CPU核心上否则网络吞吐直接腰斩。我们为DPDK节点单独配置了isolcpus和irqbalance策略。在25G物理链路上实测绑定前加密流量只有6Gbps绑定后稳定跑到21Gbps。所以不建议直接拿默认参数跑高吞吐业务CPU绑核这件事一定要做。4.4 高可用与fencing的真实教训有一次生产租户扩容存储后所有虚拟机IO延迟升高但CPU和内存都很空闲。排查很久最终定位是生产池的scrub和deep-scrub默认时间窗口和夜间的批量备份任务重叠了。Ceph的scrub在IO繁忙时会产生额外负载。解决办法是把生产池的scrub窗口移到低峰时段并限制深度清理的并发数。这类问题说明看似合理的Ceph参数一定要放到实际业务的24小时时间轴上重新评估。关于脑裂问题团队内部复盘过好几次。机房供电切换时网络分区会导致两个控制节点互相认为对方失效各自动作fencing结果同一个共享卷被同时挂载到了两个业务虚拟机上。根源不是fencing没配而是仲裁节点设计成了2加1但两个节点放在同一个机架。改法也简单三控制节点分布在三个不同的供电和网络域fencing策略从断电触发改成先隔离再重挂载。这个案例建议所有做核心生产迁移的团队都要提前做事故预演而不是等到真出问题才发现配置有漏洞。5. 成本模型与团队落地5.1 三年成本算下来能省出一轮硬件升级很多团队会觉得自建云平台要养人、要调优成本不一定低。我们做过一张内部核算表以500个虚拟机、双站点高可用、存储总量约1PB为例三年TCO大致是这样成本项VMware订阅方案自建云平台方案软件许可vSphereVSANNSX等按核心数订阅费用逐年走高占比最大OpenStack、Ceph、K8s软件费用忽略主要是开源组件集成投入硬件采购沿用存量服务器但要求版本兼容扩展时受制于官方支持列表一次性采购一批兼容性验证过的服务器和NVMe自由扩展平台建设人力商业支持响应快接口封闭定制需求成本高前6个月投入2到3人开发后续降为1到2人运维运维与排障商业支持兜底但故障定责链长部分故障靠自己排查需要储备分布式存储和网络技能三年总拥有成本偏高许可续约压力明显明显更低且新增功能不增加许可成本这个表不是证明自建一定便宜而是当你有一定规模、有专职基础设施团队、有自动化开发需求时自建平台的天花板远高于商业订阅。我们团队在一年内把所有研发环境和大部分生产业务迁完并稳定运行相当于换了个底座还多了一份架构掌控力。再往后新增一个项目组只需要在平台里加租户、配额、网络不用回到谈License的流程里。5.2 团队技能与渐进式替换自建云平台最需要的不是某个专家会调参而是团队整体的Linux、网络、存储基本功。我们内部沉淀了几个实用做法所有上线节点统一使用相同的OS镜像和大版本减少兼容性测试工作量创建租户、批量迁移、扩容OSD、调整配额这些操作都写成标准作业程序核心生产租户的任何变更强制走变更窗口研发类租户尽量通过自助门户完成。渐进式替换比断崖式切换安全得多也更容易被业务部门接受。我们的节奏是先迁D类测试和C类内部工具运行三个月后迁B类研发环境最后制造部门点头才迁A类核心生产。到整个过程结束时旧VMware环境里只剩个位数虚拟机关停最后一台物理服务器的时候机柜里突然空出一大片那种真的可以关掉旧平台的确定性比任何指标都让人踏实。我个人在实际操作中的体会是做VMware替代不能只盯着虚拟化层。存储、网络、监控、流程、人员技能任何一块短板都会在关键迁移窗口拖你后腿。如果只能送给同行一句话把前期的资源盘点、分级、回退方案做扎实迁移本身是最机械的工作真正的困难是从运维一个商业虚拟化平台转变到运营一个自己的云平台这套思维方式。最后再分享一个小技巧迁移期间在老平台和新平台之间提前建一条专用物理网络VLAN不要复用生产业务网段。两边镜像在转换、校验、打补丁过程中会产生大量临时流量走业务网段很容易触发NOC的端口告警。我们当时就是因为临时网段带宽估算不足两次批量转换都打满了核心交换机端口后续项目里都默认先画清网络拓扑再动手。希望这份实践合集能帮你少踩几个我们踩过的坑把半导体IT基础设施的这次转型走得稳一点。
返回列表