内容摘要:
2021年,距离第一个EC2实例上线已经十五周年了。 在漫长的开发过程中,很多EC2实例自然会基于旧服务器构建。 随着时间的推移,旧的服务器总是需要更换硬件,实例也得更换,但并不是所有的用户都想迁移到新的实例。
为了不强迫用户迁移,亚马逊云技术(以下简称AWS)要求Nitro执行许多麻烦的操作,使用新的服务器继续提供旧的实例类型,以便用户可以继续使用他们曾经的实例。使用。 AWS的这种做法让用户使用起来更加放心,给用户带来的麻烦也少了,消除了用户上云的一个后顾之忧。
文本:
许多人都经历过计划性报废。
PC时代经典的“安迪·比尔定律”迫使你不断购买新电脑并安装新的微软操作系统。 智能手机时代,过了保修期的iOS用户都深刻体会到旧系统有多好,新系统有多可怜。
简而言之,旧的产品和服务最终会被淘汰。
2021年,云计算已经发展了十多年,更多云计算的问题也浮出水面。 虽然云服务的用户不再需要管理服务器硬件,但硬件必须始终由专人管理。 硬件会老化,一旦出现问题,很难想象一台已经使用了十几年的服务器还能正常工作。
所以问题就出现了。 用户难免会担心那些基于旧服务器的实例能否继续提供服务? 由于某些应用程序运行良好,因此您不想进行任何更改。
云厂商也很头疼。 运行这些旧硬件变得越来越麻烦。 新员工看到这些快要赶上自己年龄的硬件也很头疼。 如果它坏了,他们就找不到想要购买的配件。 真麻烦啊!
在正式介绍之前,先介绍一个有趣的人:
下图中的这个人是一位杰出的工程师。 他拥有一艘名为“”的船。 他的妻子和一只猫住在船上。 该船偶尔会停靠在 AWS 西雅图总部的港口。 他被称为“工程师中的海盗王”,他就是AWS副总裁、杰出工程师James。
图片来自AWS视频博客
詹姆斯有一个博客。 博客的内容分为两类。 一是关于船舶,二是关于AWS产品技术。 AWS知乎官方博文称,詹姆斯是少数被允许在博客上发表自己言论的人之一。 有远大想法的人之一。
作为AWS的传奇人物,詹姆斯总给人一种巨龙已见开始,未见结束的感觉。 最近,这篇很久没有更新的博客介绍了Nitro的新动态,以及Nitro为什么以及如何支持旧实例。
从EC2的诞生到Nitro的出现
2006年8月25日,AWS第一个EC2实例开始公开测试。 起初,这项服务甚至没有名字。 后来,它被命名为“m1.Small”。 熟悉云主机的朋友都知道,这种命名方式已经被广泛使用。
首批用户可以以每小时 10 美分的价格使用配备 1.7G Xeon 处理器、1.75GB 内存、160GB 硬盘盒、250Mb/s 带宽的主机。 笔者对于这个价格并没有太多直观的感受。 。
从技术实现上来说,由于当时流行的虚拟化方案是Xen,主机采用Xen虚拟化技术来提供实例服务。 在接下来的十年里,随着越来越多的人使用它,EC2发布了27个基于Xen技术的示例。
早期的实例使用虚拟化或模拟设备将硬件抽象为实例,这在当时效果很好。 然而,随着存储和网络的不断发展,需要预留更多的CPU核心来模拟这些设备。 当规模比较小时,问题并不大。 当规模达到一定程度时,问题就变得非常明显,性能损失太大。
2017年,AWS Nitro发布,是AWS虚拟化技术的领军明星。 Nitro 可以将许多负载从 CPU 转移到专用设备,提供高性能网络、存储和安全功能。
关于Nitro的更多详细信息请参见:
C5 实例是第一个完全支持 Nitro 的 EC2 实例。 随后,AWS陆续推出了45个使用Nitro的实例。 这些实例的存储和网络性能得到了极大的提升,安全性也得到了极大的提升。
博文提到,超过120万AWS用户仍在使用基于Xen技术的实例。 AWS 不强制用户迁移。 它尊重用户的意愿。 用户对使用Xen技术的实例的性能非常满意。 不愿意升级操作系统来支持各种新技术。
众所周知,早期的AMI不支持NVMe,与当前的Nitro系统不兼容。 看到这些旧设备和系统的运维越来越麻烦,EC2团队对Nitro进行了改造,以支持Xen实例。 老用户看到这里难道不应该鼓掌吗?
Nitro 提供了一种解决方案,但这样做存在很多挑战:
半虚拟化 (PV) 设备 - Xen 实例通过半虚拟化设备访问网络和存储。 但是,Nitro 不支持这些设备。 Nitro 需要在不影响当前工作负载的情况下添加对这些 PV 设备的支持。 。
接口 - 半虚拟化 (PV) 设备是依赖于可通过超级调用 () 或通过客户系统与设备之间共享的内存进行访问的接口的软件构造。 因此,如果Nitro想要支持这些PV设备,就必须提供这些接口。
为此,Xen实例与Nitro之间的交互必须与Xen实例与Xen之间的交互完全一致,以便来宾系统看不到两者之间的任何差异。 幸运的是,Linux社区已经完成了这方面的相关工作,使得Nitro能够提供支持。
虚拟硬件环境——为了保证旧的AMI能够正常工作,Nitro还必须对旧的硬件进行仿真,而硬件仿真功能是Nitro的关键功能之一。
同时,对Nitro进行修改,为实例提供与旧硬件完全相同的硬件环境。 如果您在 Nitro 上启动旧实例,CPU 指令集、寄存器、网络和 I/O 设备以及消息传递接口将不会有任何差异。
硬件加速器 – 某些实例类型(例如 G2、G3、P2、P3 和 F1)使用 GPU 或 FPGA 加速器。 这些加速器不支持虚拟化,因此模拟很困难。 因此,Nitro 不支持这些具有 GPU 和 FPGA 加速器的旧实例类型。
新老用户均可享受
从 2022 年开始,新的 M1、M2、M3、C1、C3、R3、I2 和 T1 实例的用户将使用 Nitro 技术,现有实例也将迁移到支持 Nitro 的实例。 用户不会看到两者之间的区别在于所有工作负载将继续像以前一样运行。
Xen on Nitro 允许用户继续在旧实例上运行旧工作负载,而无需在实例之间迁移。 对于AWS来说,直接退役这些实例本来会更容易,但AWS选择了一条更麻烦的路径,因为它害怕给用户带来额外的负担。
亚马逊云技术谷帆:仍有很大创新空间
亚马逊云技术大中华区产品部总经理顾帆在媒体沟通会上表示,“自15年前首次推出EC2服务以来,亚马逊云技术一直在快速创新,目前提供了超过475种不同的服务。计算实例类型。,远远超过任何其他云服务提供商。”
谷帆还表示,云计算创新还有很大的空间,亚马逊云技术也希望进一步帮助客户在不同负载下提供最佳的性价比。 为此,亚马逊云技术必须进行更深入的思考,重新定义计算实例,而这一切都离不开芯片。
谷凡在演讲中列举了几款自主研发的芯片。 他首先提到的是Nitro产品线。 现在Nitro已经发展到第四代了。 此外,他还提到了机器学习训练和推理芯片,以及目前极为流行的.