你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
存储访问是规划高性能计算(HPC)工作负荷性能时要考虑的一个关键因素。 特定环境中的大规模 HPC 工作负荷可以为数据存储和访问创建超过传统云文件系统功能的需求。 本文提供建议,帮助你为 Azure HPC 工作负荷选择正确的存储。
为了帮助确定要使用的存储解决方案,请考虑以下与应用程序要求相关的因素:
- 延迟
- 每秒输入/输出操作数(IOPS)
- 吞吐量
- 文件大小和文件计数
- 作业运行时
- 成本
- 存储位置(本地与 Azure)
有关详细信息,请参阅 了解影响 Azure中 HPC 存储选择的因素。
下图显示了用于特定 HPC 存储系统选择的决策树。
下载此体系结构的 Visio 文件。
HPC 注意事项
数据存储 和访问需求因工作负荷规模而异。
HPC 的高性能输入/输出(I/O)要求和大规模可伸缩性需求 为数据存储和访问带来了独特的挑战。
HPC 使用并行处理和大规模可伸缩性,能够快速且可靠地执行大型和复杂的计算任务,这些任务使用传统计算技术既不实用也不具经济效益。
HPC 群集中的计算节点分布
在 Azure HPC 群集中,可以创建计算节点作为虚拟机(VM)来执行分配给群集的作业。 为了帮助实现解决复杂 HPC 问题所需的高性能并行处理,计算节点会在群集中分发这些作业。
运行作业时,计算节点必须对共享数据源执行读取和写入作。 节点在以下两个极端之间的一系列方案中访问此数据源。
一个数据源到多个计算节点: 在此方案中,网络上有一个数据源,所有计算节点都可以访问工作数据。 尽管计算节点在结构上很简单,但存储位置的 I/O 容量会限制 I/O作。
许多数据源到许多计算节点: 在此方案中,网络上有许多数据源,所有计算节点都访问这些源以获取工作数据。 尽管计算节点的结构简单,但存储位置的 I/O 容量仍会限制 I/O作。
工作负荷流量分布
请考虑 HPC 环境生成和处理流量的类型。 如果计划运行多种类型的工作负荷并计划将存储用于其他目的,此步骤尤其重要。 请考虑并记录以下流量类型:
- 单个流与多个流
- 读取流量与写入流量的比率
- 平均文件大小和文件计数
- 随机访问模式与顺序访问模式
数据本地性
此类别考虑数据的位置。 区域意识有助于确定是否可以使用复制、缓存或同步作为数据移动策略。 预先检查以下区域项:
- 如果源数据位于本地、Azure 或两者中
- 如果结果数据位于本地、Azure 中或两者中
- Azure 中的 HPC 工作负载是否需要与源数据修改时间线相协调
- 是否包含敏感数据或 Health Insurance Portability and Accountability Act 数据
性能要求
存储解决方案的性能要求通常概括为:
- 单流吞吐量。
- 多流吞吐量。
- 预期的最大 IOPS。
- 平均延迟。
每个因素都会影响性能,因此这些数字充当特定解决方案预期结果的指南。 例如,HPC 工作负荷可能包括在工作流中创建和删除大量文件。 这些作可能会影响总体吞吐量。
访问方法
请考虑所需的客户端访问协议并指定所需的功能。 有不同版本的网络文件系统(NFS)和服务器消息块(SMB)。
请考虑以下要求:
- 是否需要 NFS 或 SMB 版本
- 所需的协议功能,例如访问控制列表或加密
- 是否需要并行文件系统解决方案
总容量要求
Azure 中的存储容量会影响解决方案的总体成本。 如果计划长时间存储大量数据,可能需要考虑将分层作为存储解决方案的一部分。 分层存储将较低成本的存储选项与较高成本、较高性能的存储结合在一个称作 "热层" 的存储层中。 请考虑以下容量要求:
- 所需的总容量
- 所需的热层总容量
- 所需的暖层容量总数
- 所需的冷层容量总数
身份验证和授权方法
对于身份验证和授权要求(例如使用轻型目录访问协议(LDAP)服务器或 Windows Server Active Directory,请确保在体系结构中包含必要的支持系统。 如果需要支持用户 ID(UID)或组 ID(GID)映射到 Windows Server Active Directory 用户的功能,请确认存储解决方案支持该功能。
请考虑以下网络要求:
- 本地要求(仅限文件服务器上的 UID 或 GID)
- 目录要求(LDAP 或 Windows Server Active Directory)
- 是否需要将 UID 或 GID 映射到 Windows Server Active Directory 的用户
HPC 设计建议
选择最适合你唯一 I/O 和容量要求的解决方案。
对于高吞吐量、低延迟存储,请考虑使用 标准或高级 Azure Blob 存储。 标准或高级 Blob 存储具有以下优势:
提供 EB 规模、高吞吐量、低延迟的访问,并提供熟悉的文件系统和多协议访问,包括 REST、HDFS、NFS。
通过处理 PB 级数据并使用生命周期管理功能来优化成本,从而简化数据存档和删除。 此方法可随时间推移减少存储费用。
支持通过使用 BlobFuse 将 Blob 存储装载为文件系统。 此方法使多个节点更容易为只读方案装载同一容器。
在 BLOB 服务终结点支持 NFS 3.0,可用于高吞吐量、读取繁重的工作负载。
通过允许将数据移到较冷的存储层,支持成本优化。 通过基于上次更新或访问时间的生命周期管理和具有可自定义策略的智能分层,可以实现此优化。
对于 ReadWriteMany(唯一)或写一次读一次的应用程序,考虑使用 Azure NetApp 文件。 Azure NetApp 文件提供以下优势:
各种文件协议,例如 NFSv3、NFSv4.1 和 SMB3
与本地性能相当且具有多层(超级层、高级层、标准层)的性能
几分钟内完成部署,提供广泛的等级和灵活性。
灵活的容量池类型和性能,根据池的层级和卷配额自动分配每个卷的 QoS
网络文件系统 (NFS)
NFS 通常用于通过传输控制协议或 Internet 协议网络提供对共享存储位置的访问。 使用 NFS 的服务器 VM 共享其本地文件系统。 在 Azure 中,此文件系统存储在 Azure 存储中托管的一个或多个虚拟硬盘上。 然后,客户端可以装载服务器的共享文件并直接访问共享位置。
NFS 通常用于需要跨所有节点进行访问的主目录和项目空间。 它可以为共享数据的研究组提供空间。 一般情况下,吞吐量工作负荷可水平缩放,在单个任务之间几乎没有依赖关系。 作业计划程序将工作划分为多个节点并协调活动。
NFS 易于设置和维护,在 Linux 和 Windows作系统上都受支持。 可以使用多个 NFS 服务器将存储分散到网络中,但单个文件只能通过单个服务器访问。
对于小型工作负载,请考虑使用具有大型临时磁盘的存储优化型 VM 或具有 Azure 高级存储的 D 系列 VM(具体取决于你的要求),从而在头节点上运行 NFS。 此解决方案适用于具有 500 个核心或更少内核的工作负荷。
在 HPC 方案中,文件服务器通常充当限制整体性能的瓶颈。 尝试以高于文档中每个虚拟机最大 IOPS 和吞吐量的速率访问来自单个 NFS 服务器的未缓存数据,会导致限流。
在多个客户端尝试处理存储在单个 NFS 服务器上的数据的情况下,可以快速达到性能限制。 这些限制可能会导致整个应用程序的性能受到影响。 HPC 应用程序越接近纯粹的一对多场景,你就越早遇到这些限制。
Azure 上的并行文件系统
并行文件系统跨多个网络存储节点分配块级存储。 文件数据分布在这些节点之间,这意味着数据分布在多个存储设备之间。 此分发将跨多个存储节点的任何单个存储 I/O 请求汇集到一起,这些存储节点可通过一个通用命名空间进行访问。
多个存储设备和数据路径用于提供高度并行度。 此方法减少了一次仅访问单个节点所施加的瓶颈数量。 但是,如果在 API 或 POSIX I/O 接口级别直接工作,则并行 I/O 可能难以协调和优化。 并行文件系统通过中间数据访问和协调层为应用程序开发人员提供应用程序层与 I/O 层之间的高级接口。
使用消息传递接口(MPI)的紧密耦合工作负荷可能对节点之间的低延迟通信具有独特的要求。 这些节点通过高速互连进行连接,并且不容易适应与其他工作负载共享。 MPI 应用程序在虚拟化环境中通过直通模式使用整个高性能互连。 MPI 节点的存储通常是一个并行文件系统,如 Lustre,也可通过高速互连进行访问。
并行文件系统(如 Lustre)被用于 HPC 工作负荷,这些工作负荷需要访问大型文件,同时从多个计算节点进行访问,以及处理海量数据。 并行文件系统的实现使得在能力和性能方面容易扩展。 这些文件系统利用具有较大带宽和减少 CPU 使用率的远程直接内存访问传输。 并行文件系统通常用作暂存空间,适用于需要优化的 I/O 的工作。
自主开发并行文件系统
与 NFS 类似,可以创建多节点 BeeGFS 或 Lustre 文件系统。 这些系统的性能主要取决于所选 VM 的类型。 可以使用在 Azure 市场中针对 BeeGFS 找到的映像,或名为 Whamcloud 的 DataDirect Networks 的 Lustre 实现。 如果使用来自 BeeGFS 或 DataDirect Networks 等供应商的非 Microsoft 映像,则可以购买他们的支持服务。 除了计算机和磁盘的成本外,可以在其通用公共许可证许可证下使用 BeeGFS 和 Lustre,而不会产生额外的费用。 可以使用 Azure HPC 脚本以及临时本地磁盘(用于暂存)或 Azure 高级 SSD 或 Azure 超级磁盘存储(用于持久存储),从而轻松推出这些工具。
HPC 组件
Azure NetApp 文件和本地磁盘通常用于处理延迟敏感和 IOPS 敏感工作负荷。 请考虑将 Azure NetApp 文件用于最多 4,000 个核心的工作负载,吞吐量高达每秒 12.8 GB(GiBps),以及受益于或需要对同一数据源进行多协议 NFS 和 SMB 访问的工作负荷。
Azure 托管 Lustre 为 HPC 工作负荷提供更快、更高的容量存储。 此解决方案适用于中型到大型工作负荷,可支持 50,000 个或更多核心,吞吐量高达每秒 500 千兆字节(Gbps),存储容量高达 2.5 字节(PiB)。
标准或高级 Blob 存储经济高效,因为它提供成本最低的云解决方案。 此服务在需要时提供 exabyte 规模、高吞吐量、低延迟访问和熟悉的文件系统接口。 它还支持多协议访问,其中包括 REST、HDFS 和 NFS。 可以在 Blob 服务终结点上使用 NFS v3.0 来实现高吞吐量和读密集型工作负载。 可以通过移动到较冷的存储层来优化成本。 此方法基于上次更新或访问时间,使用可自定义的策略和生命周期管理实现智能分层。
对于在云中计算实例上运行的工作负载,可能需要在本地系统和云之间进行数据传输,以实现最佳性能。 脱机迁移使用基于设备的服务,例如 Azure Data Box。 联机迁移使用基于网络的服务,例如 Azure ExpressRoute。
下表对 Blob 存储、Azure 文件存储、托管 Lustre 和 Azure NetApp 文件进行了比较。
类别 | Blob 存储 | Azure Files 文件存储服务 | 托管 Lustre | Azure NetApp 文件 |
---|---|---|---|---|
用例 | - 最适合大规模、读取密集型顺序访问工作负载,其中数据仅引入一次,并且修改量很小。 - 通过简易维护实现低总拥有成本。 - 示例方案包括大规模分析数据、吞吐量敏感的高性能计算、数据备份和存档、自动驾驶、媒体渲染和基因组排序。 |
- 一种非常适合随机访问工作负载的高可用性服务。 - 为 NFS 共享提供完整的 POSIX 文件系统支持。 内置的 CSI 驱动程序允许从基于 VM 的平台和容器平台(例如 Azure 容器实例和 Azure Kubernetes 服务(AKS)轻松使用。 - 示例方案包括不需要高级管理的共享文件、数据库、主目录、传统应用程序、企业资源规划、内容管理系统和网络连接存储(NAS)迁移。 它还包括需要横向扩展文件存储的自定义应用程序。 |
- 完全托管的并行文件系统最适合中型到大型 HPC 工作负荷。 - 通过提供熟悉的 Lustre 并行文件系统功能、行为和性能,在云中启用 HPC 应用程序,而不会破坏应用程序兼容性。 此服务有助于保护长期应用程序投资。 |
- 由 NetApp 提供支持的云中完全托管的文件服务,具有高级管理功能。 - 专为需要随机访问的工作负荷而设计。 它提供广泛的协议支持和改进的数据保护。 - 示例方案包括需要丰富的管理功能的本地企业 NAS 迁移、SAP HANA 等延迟敏感型工作负荷、延迟敏感型或 IOPS 密集型高性能计算或需要同时进行多协议访问的工作负荷。 |
可用的协议 | - NFS 3.0 - REST - Azure Data Lake Storage |
- SMB - NFS 4.1 - (任一协议之间无互作性) |
- Lustre | - NFS 3.0 和 4.1 - 中小型企业 (SMB) |
主要功能 | - 集成管理,包括生命周期管理、数据块的不可变性、数据故障转移和元数据索引。 | - 区域冗余对高可用性的支持。 - 一致的个位数毫秒延迟。 - 可预测的性能和随容量增加而扩展的成本。 |
- 高达 2.5 PB 的高存储容量。 - 低延迟,大约 2 毫秒。 - 在几分钟内创建新群集。 - 借助 AKS 支持容器化的工作负荷。 |
- 延迟极低,低至毫秒以下。 - 丰富的 NetApp ONTAP 管理功能,如 SnapMirror Cloud。 - 一致的混合云体验。 |
性能(每单位体积) | - 高达 40,000 IOPS。 - 最大可达 60 Gbps 流入吞吐量和 200 Gbps 流出吞吐量。 |
- 高达 100,000 IOPS。 - 高达 80 GiBps 吞吐量。 |
- 高达 100,000 IOPS。 - 高达 500 GiBps 吞吐量。 |
- 高达 460,000 IOPS。 - 高达 12.8 GiBps 吞吐量。 |
规模 | - 单个卷最大可达 5 PiB。 - 单个文件容量最高可达约 4.75 太字节(TiB)。 - 没有最低容量要求。 |
- 单个卷最大可达 100 TiB。 - 单个文件最大可达 4 TiB。 - 100-GiB 最小容量。 |
单个卷的容量高达 2.5 PiB。 - 托管 Lustre 文件系统符合 Lustre 的文件限制规范,支持最大文件大小为 32 PB。 - 4 TiB 最小容量。 |
- 单个卷最大可达 1,024 TiB。 - 单个文件最多可达 16 TiB。 - 一致的混合云体验。 |
定价 | - Blob 存储定价 | - Azure 文件存储定价 | - 托管 Lustre 定价 | - Azure NetApp 文件定价 |
后续步骤
以下文章提供了指导,在你的云采用历程中的不同阶段为你提供帮助。
- Azure HPC 方案简介
- Azure HPC 的标识和访问管理
- Azure HPC 的网络拓扑和连接
- 适用于 Azure HPC 的 资源组织
- Azure VM 中计算大规模 HPC 应用程序工作负荷
- Azure HPC 登陆区域加速器