亚马逊AWS官方博客

AWS Nitro SSD – 适用于输入/输出密集型应用的高性能存储

帮助客户解决棘手难题是我们的激情所在! 正如您多年来所看到的那样,AWS 的创新表现为多种形式,涵盖硬件和软件。

我最喜欢的客户驱动型创新示例之一就是 AWS Nitro System,我曾经在 2018 年中期首次撰写过相关的文章。在那篇文章中,我为您介绍了 Nitro System 如何帮助我们比以往更快地进行创新,从而创建能够运行更多工作负载类型的实例。我还分享了当时可以使用的基本构建模块,包括用于加速和分载网络和存储输入/输出的 Nitro Card、用于监控和保护硬件资源的 Nitro Security Chip 以及用于以极低开销管理内存和 CPU 分配情况的 Nitro 管理程序。

今天我想为您再介绍一款构建模块!

AWS Nitro SSD
数十年来,传统硬盘(有时被戏称为旋转的铁锈)一直是主要的数据块存储设备。如今,尽管这种“旋转的铁锈”仍然有其一席之地,但大多数高性能存储都基于更为现代的固态硬盘(SSD)。如果将一块 SSD 拆解开来,您会看到大量的闪存存储器以及一个固件驱动的处理器,它管理对内存的访问,并支持更高级别的功能,例如块映射、加密、缓存、损耗均衡等。

凭借 AWS 云的规模及其支持的客户使用场景范围,让我们对当今的应用程序、数据库引擎和操作系统利用块存储的方式有了一些宝贵的见解。因此,在交付了几代 EC2 实例之后,我们看到了更近一步的机会。我们的目标是允许输入/输出密集型工作负载(关系数据库、NoSQL 数据库、数据仓库、搜索引擎和分析引擎等)实现更快的运行速度和更可预测的性能。

今天我想与您分享一下 AWS Nitro SSD。这些设备的第一代用于为 io2 Block Express EBS 卷提供动力,也让我们得以为您提供具有极高的 IOPS、极高的吞吐量以及 64 TiB 最大卷大小的 EBS 卷。我今天早些时候发布的 Im4gn 和 Is4gen 实例相关文章使用了第二代 AWS Nitro SSD,未来的许多 EC2 实例(包括我们今天预告的 I4i 实例)也会使用这一产品。

AWS Nitro SSD 专为在云中大规模安装和运行而设计。虽然这听起来不过是需要制造和安装更多设备,但在现实中情况要复杂得多,也更加有趣。正如我之前提到的,各设备内部的固件负责实现许多较低级别的功能。我们的客户希望尽可能发挥设备的效用,因此希望我们能够诊断并解决他们所观察到的任何性能不一致问题。通过构建自己的设备,我们可以设计运行遥测和诊断,并使我们能够以云的规模和速度安装固件更新的机制。在此基础上,我们开发了自己的代码来管理实例级存储,以进一步提高可靠性和调试能力,并实现一致的性能。

在性能方面,我们凭借对云工作负载的深刻理解进行设备设计,使得这些设备能够在持续、连续的负载下发挥最佳性能。SSD 由密集的高速闪存存储器构成。由于这种半导体存储器的特性,每个存储器单元的写入、擦除及重写次数都是有限的。为了尽可能延长设备使用寿命,固件负责实施一种称为损耗均衡的过程。我并不知道这其中的细节,但我认为,这涉及到从逻辑块编号到物理单元的某种映射,这种映射方式可以从长期角度保证周期数的平均化。这个过程涉及到一些内务管理(某种形式的垃圾回收),普通的 SSD 在处理大量写入时可能会在不可预测的时间降速(造成延迟峰值)。我们还运用我们的数据库专业知识,在 SSD 固件中构建了一个高度复杂的、电源故障安全的、基于日志的数据库。

第二代 AWS Nitro SSD 旨在避免延迟峰值,并为实际工作负载提供出色的输入/输出性能。我们的基准测试表明,使用 AWS Nitro SSD 的实例(例如新的 Im4gn 和 Is4gen)的延迟变化比 I3 实例低 75%,从而为您提供更一致的性能。

综上所述,这就像是采用了一种十分紧凑、快速运转的“飞轮”机制,因为打造 Nitro SSD 的团队隶属于 AWS 存储团队,同时还负有运营责任。像所有 AWS 团队一样,他们每天都会密切观察指标,并且可以使用 CI/CD 模型高效地部署新固件。

加入团队
一如既往,未来我们会有更多的创新,我们负责设计 AWS Nitro SSD 的各个团队中有一些前景极好的职位虚席以待。例如:

Jeff