Arm架构软件生态系统的最新进展,基于Arm的服务器落地的挑战,以及生产就绪的经验分享。
近年来,Arm服务器被广泛使用,上层软件生态系统也得到了极大的发展。特别是一些公有云厂商已经开始提供基于Arm架构的云计算产品。华为、易捷行云EasyStack和Linaro等公司和组织投入了大量资源来加速Arm架构在云计算中的应用。
接下来,我们将分享云计算领域Arm架构软件生态系统的最新进展、基于Arm的服务器落地面临的挑战以及生产就绪的经验分享。
开源软件的全栈支持
如上图所示,基础架构层只是整个软件栈的一小部分,为了让该层在Arm平台上功能正常、性能更好,开发者在OS、驱动、库等底层项目上也做了很多。另一方面,最终用户也关心在基础设施上运行的软件,它们能否在Arm平台上运行是考虑使用Arm平台作为基础设施关键考虑因素之一。接下来,让我们从更大的视角来看Arm平台的使能工作。
在开源世界,开发流水线对上游开发人员尤为重要。目前大部分开源项目都只有基于x86的开发流水线,所以整个开发过程和结果对Arm用户不是很友好,在Arm平台上运行之前可能会有一些额外的工作:
基于这一理念,华为在50多个顶级开源社区中启用了Arm CI,涵盖6个主要领域,包括云和SDS、大数据、数据库、Web、Libs & Middleware以及人工智能。有很多开源项目已经支持Arm平台,用户现在在这些领域有多种选择,读者可以参考Arm CI全景图以了解更多详细信息(https://kunpengcompute.github...)。
除了赋能,华为在提升Arm平台开源项目性能、缩小x86平台功能差距等方面也做了很多工作。例如,我们在Arm平台上在Libvirt里启用了CPU信息观察和主机CPU对比功能,目前正在使用它们,以便在OpenStack中获得更好的迁移体验。
有了这些功能和改进,Arm平台对用户和上游开发人员更具竞争力和吸引力。
Linaro在ARM64云计算生态系统上的工作
Linaro是一个Arm64生态系统上的开源组织,主要专注于上游开发和维护,如Linaro内核、工具链、Android,以及数据中心等一些指定领域。
Linaro通过为Arm64 OpenStack使能、部署(维护Arm64 Kolla镜像)和维护Arm64 OpenDev CI资源,深入参与了开放基础设施社区。同时,基于OpenStack和Ceph,建立了Linaro Developer Cloud,不仅可以在云计算中测试成员公司的硬件,还可以帮助开发人员使用Arm64资源。
如上图所示,Linaro Developer Cloud完全基于OpenStack和Ceph。现在,它可以提供基于Nova/Ironic的VM/BM服务以及基于Magnum支持的Arm64 Kubernetes服务。生产级OpenStack集群由Kolla容器镜像部署,操作升级更加灵活。为了支持这一点,包括许多上游工作:
- Arm64上的Nova/Ironic/disk-image-builder启用和错误修复
- Arm64 OpenStack的Devstack启用支持
- Kolla 镜像构建、Kolla-ansible 部署支持和 OpenStack 版本升级的错误修复。
- Arm64上的Magnum多架构支持和K8s云提供商支持
Linaro Developer Cloud K8s服务现已上线约一年,K8s服务版本v1.17、v1.18已通过CNCF一致性测试认证。这是Arm64在开源云计算领域一个很好的例子。
硬件自动化是近年来的另一个热门话题。相当多的工作负载需要运行在裸金属上(例如裸金属上的云原生K8s、HPC ) , 才能实现更好的网络和存储性能或绕过虚拟化限制(Arm64不支持嵌顿虚拟化 ) , 因此快速的硬件预置、标准的硬件管理框架在Arm64上是必不可少和重要的。
为了满足这些要求,Linaro在Arm64上提出了无磁盘引导解决方案,该解决方案利用OpenStack Ironic进行裸机管理,并使用Ceph iSCSI提供卷启动。使用Ceph卷作为磁盘可以大大缩短裸机提供时间,并提高RootFS安全性,所有数据可靠性将由Ceph保证。
如上图所示,工作流程的控制路径依赖于来自卷的PXE ISCSI 引导、Cinder Ceph ISCSI 驱动程序和 Ceph ISCSI 网关。Linaro贡献了几项功能,以使Arm64支持无磁盘引导:
- PXE iSCSI支持Ironic 引导
- Cinder Ceph ISCSI驱动程序支持
- Ceph iSCSI客户端错误修复和稳定增强
我们相信硬件自动化解决方案将有利于Arm64开发和CI系统。我们将在Linaro Developer Cloud中快速上线BM服务支持,为外部应用程序提供更多资源。
在Arm服务器上运行云的最佳实践
易捷行云EasyStack作为一家专注于云计算的公司,自成立以来已服务超过1000名客户。公司于2019年4月开始支持Arm服务器,2020年2月发布了技术预览版,并于2021年1月31日发布了正式的GA版本,在功能覆盖和测试强度方面已经达到了产品级的支持。到目前为止,近30家客户已经在生产环境中部署了Arm版云计算产品。
在人们心目中,Arm生态没有x86那么广泛。有许多未知问题需要解决,包括硬件、固件、操作系统、软件等。其实,这种印象持续了相当长的时间,在过去的5年里,Arm生态系统有了很大的发展,事情发生了迅速的变化。CPU核心数量不断增加,单个核心的处理能力也在增强。我们已经看到,基于Arm的分布式存储的性能甚至高于x86架构。
生态也得到了很大发展。越来越多的操作系统支持Arm。云计算中的开源软件对Arm架构也有更好的支持,比如在正常开发过程中使用Arm CI作为验证手段。Arm架构在能效方面具有优势,这也是吸引公有云厂商设计自己的Arm CPU以提供云计算服务的驱动力之一。总之,Arm在云计算领域的应用和x86架构的差异大大缩小。
在整个适配阶段,易捷行云EasyStack的工程师们适配了10多种类型的服务器。这些服务器在BIOS/固件上存在差异,导致相同的操作系统可以在一些服务器上运行,但无法运行在另一些服务器。工程师们分析了差异,并进行了相应的维修。最后,操作系统可以在所有Arm服务器上稳定运行。上层软件版本的选择也尤为重要。易捷行云EasyStack的产品使用Kubernetes作为基础,其他服务以pod形式运行,包括OpenStack组件。这使得Arm版本产品使用与x86架构相同的软件堆栈,易于维护。在此过程中,libvirt的CPU特定错误、Openvswitch的稳定性和MariaDB的稳定性得到解决。总之,Kubernetes、OpenStack和其他组件可以在Arm平台上完美运行。
经过适配工作,开始支持产品层面的严格测试。在x86上有的功能都经过了全面测试。这份测试工作被集成到日常的CI/CD流程中,以确保任何代码更改都不会损坏x86和Arm 平台的功能。比如在Arm平台上做网络带宽测试时,带宽值没有达到预期值,通过绑定特定的中断对应CPU来解决;发现VNC控制台在一些guest OS中没有输出,这主要与设置guest OS grub启动参数tty0有关;一些Arm服务器不支持硬件watchdog,有时无法正常工作。我们完成了完整的测试,与x86架构产品相比,只有四个区别:1.它不支持Windows客户操作系统;2.Arm架构上的GPU驱动程序和SDK支持不够好,暂时无法支持GPU。3.由于Arm架构的限制,每台虚拟机支持的磁盘和网卡都比x86少;4.由于IPMI的限制,无法获得磁盘速度等一些监控指标,这就是Arm和x86架构之间的区别。
使用Arm服务器进行生产的客户越来越多。这个阶段我们需要完成x86架构应用向Arm架构的迁移,从x86平台到Arm平台的资源规格转换等。对于易捷行云EasyStack来说,总共有近30个客户,基于Arm架构的云计算物理节点超过500个,用于生产并运行良好,其中运行时间最长的客户超过一年。生产就绪是大规模推广的基础,包括社区内各公司的大力支持。目前,我们已经看到了黎明。我们相信,在不久的将来,更多的企业会采用Arm架构作为云计算的基础,提供云服务。
点击此处“阅读全文”查看更多内容