架构:Google Cloud 中使用 DDN EXAScaler 的 Lustre 文件系统

Last reviewed 2023-11-15 UTC

本文档提供了架构指南,可帮助您设计 Lustre 文件系统并调整容量,以处理高性能计算 (HPC) 工作负载。此外还简要介绍了使用 DDN EXAScaler 在 Google Cloud 中部署 Lustre 文件系统的过程。

Lustre 是开源并行文件系统,为紧密耦合的 HPC 工作负载提供高吞吐量和低延迟的存储。您可以扩缩 Lustre 文件系统以支持数以万计的 HPC 客户端和 PB 级存储空间。EXAScaler Cloud 是 Lustre 的企业级版本,由 Google 合作伙伴 DDN 提供。您可以将 EXAScaler Cloud 部署在混合云架构中,以扩充本地 HPC 容量。EXAScaler Cloud 还可用作存储本地 EXAScaler 部署中的长期资产的存储库。

本文档中的指南适用于为云端 HPC 工作负载设计、预配和管理存储的企业架构师和技术从业人员。本文档假定您对并行文件系统有概念性了解。您还应该了解 Lustre 等并行文件系统是理想的 HPC 使用场景。如需了解详情,请参阅适用于 HPC 工作负载的并行文件系统

Lustre 文件系统概览

下图展示了 Lustre 文件系统的架构:

Lustre 文件系统架构

如图所示,该架构包含以下组件:

  • 管理服务器 (MGS) 和管理目标 (MGT):MGS 存储和管理一个或多个 Lustre 文件系统的配置信息。此图显示了用于管理单个 Lustre 文件系统的 MGS。MGS 为其管理的所有文件系统中的其他 Lustre 组件提供配置信息。MGS 将文件系统配置日志记录到称为 MGT 的存储设备中。

  • 元数据服务器 (MDS) 和元数据目标 (MDT):MDS 节点管理客户端对 Lustre 文件系统命名空间的访问权限。此命名空间包含文件系统的所有元数据,例如目录层次结构、文件创建时间和访问权限。元数据存储在称为 MDT 的存储设备中。Lustre 文件系统至少有一个 MDS 和一个关联的 MDT。若要提高元数据密集型工作负载的性能(例如,数千个客户端创建和访问数百万个小文件时),您可以向文件系统添加更多 MDS 节点。

  • 对象存储服务器 (OSS) 和对象存储目标 (OST):OSS 节点管理客户端对 Lustre 文件系统中存储的文件数据的访问权限。每个文件都存储为一个或多个 Lustre 对象。这些对象存储在单个存储设备(称为 OST)中,或跨多个 OSS 节点和 OST 带区。Lustre 文件系统至少具有一个 OSS 和一个关联的 OST。您可以添加更多 OSS 节点和 OST 以进行文件系统存储容量扩容并提升性能。文件系统的总存储容量是挂接到文件系统中所有 OSS 节点的 OST 的存储容量的总和。

  • 客户端:Lustre 客户端是一个计算节点,例如虚拟机 (VM),通过装载点访问 Lustre 文件系统。装载点为整个文件系统提供了一个统一的命名空间。您可以扩缩 Lustre 文件系统以支持 10,000 多个客户端的并发访问。Lustre 客户端并行访问 Lustre 文件系统中的所有 MDS 和 OSS 节点。这种并行访问有助于最大限度地提高文件系统的性能。并行访问还有助于减少存储热点,即访问频率高于其他位置的存储位置。热点在非并行文件系统中很常见,可能会导致客户端之间出现性能不平衡。

    为了访问 Lustre 文件系统,客户端会从 MDS 获取所需的目录和文件元数据,然后通过与一个或多个 OSS 节点通信来读取或写入数据。Lustre 接近符合 POSIX 语义,可让所有客户端对文件系统进行完全并行访问。

如需详细了解 Lustre 文件系统及其工作原理,请参阅 Lustre 文档

Lustre 在 Google Cloud 中的架构

下图展示了在 Google Cloud 中部署 Lustre 文件系统的架构:

Google Cloud 中的 Lustre 文件系统架构

此图中显示的架构包含以下资源。所有资源都部署在单个 Google Cloud 项目中。在单个可用区内预配计算和存储资源。

  • Compute Engine 虚拟机托管 MGS、MDS 和 OSS 节点以及 Lustre 客户端。您还可以选择将 Lustre 客户端部署在 Google Kubernetes Engine 集群中,并将文件系统部署在 Compute Engine 虚拟机上。

  • 该架构包括以下网络资源:

    • 用于所有虚拟机的单个 Virtual Private Cloud (VPC) 子网
    • 可选的 Cloud NAT 网关和可选的 Cloud Router 路由器,用于从专用虚拟机到互联网的出站流量。
    • 可选的防火墙规则,允许以 SSH 方式建立到拓扑中所有虚拟机的入站连接。
    • 可选的防火墙规则,允许从互联网通过 HTTP 访问 MGS 上的 DDN EXAScaler Web 控制台。
    • 允许所有虚拟机之间 TCP 连接的防火墙。
  • 永久性磁盘为 MGS、MDS 和 OSS 节点提供存储容量。如果不需要永久性存储空间,则可以使用挂接到虚拟机的本地固态硬盘 (SSD) 磁盘构建暂存文件系统。

    Google 提交了 IO500 条目,展示了永久性和暂存 Lustre 文件系统的性能。阅读 Google Cloud 提交内容,其中演示了基于 Lustre 的 10 Tbps 以上暂存文件系统(基于 HPC 存储系统的 IO500 排名)。

设计指导原则

遵循以下指南来设计满足 HPC 工作负载要求的 Lustre 文件系统。本部分中的指南并不详尽。它们提供了一个框架,可帮助您评估 HPC 工作负载的存储要求、评估可用存储选项以及调整 Lustre 文件系统的大小。

工作负载要求

确定 HPC 工作负载的存储要求。尽可能详细地定义要求,并考虑您的未来要求。使用以下问题作为起点来确定工作负载的要求:

  • 吞吐量和每秒 I/O 操作次数 (IOPS) 有哪些要求?
  • 您需要多少存储空间容量?
  • 最重要的设计目标是什么:吞吐量、IOPS 或存储空间容量?
  • 您是否需要永久性存储空间和/或暂存存储空间?

存储选项

如需最具成本效益的存储方案,您可以从以下类型的永久性磁盘中进行选择:

  • 如果存储空间容量是主要设计目标,则标准永久性磁盘 (pd-standard) 是最具成本效益的方案。它们使用普通硬盘 (HDD) 提供高效、可靠的块存储。
  • 如果目标是最大限度地提高 IOPS,则 SSD 永久性磁盘 (pd-ssd) 是最具成本效益的方案。它们使用 SSD 提供快速可靠的块存储。
  • 平衡永久性磁盘 (pd-balanced) 是实现吞吐量最大化的最具成本效益的方案。它们使用 SSD 提供具成本效益的可靠块存储。

极端永久性磁盘 (pd-extreme) 可提供比其他磁盘类型更高的性能,并且您可以选择所需的 IOPS。但 pd-extreme 的费用高于其他磁盘类型。

如需详细了解永久性磁盘的性能功能,请参阅块存储性能

对于暂存存储空间,您可以使用临时本地 SSD。本地 SSD 以物理方式挂接到托管虚拟机的服务器。因此,本地 SSD 提供比永久性磁盘更高的吞吐量,而且延迟时间较短。但存储在本地 SSD 上的数据会持续存在,除非虚拟机被停止或删除。

对象存储服务器

为 OSS 节点设计基础架构时,我们建议您采取以下措施:

  • 对于存储,请根据存储空间容量、吞吐量和 IOPS 要求选择适当的永久性磁盘类型。

    • 对具有以下要求的工作负载使用 pd-standard
      • 工作负载需要高存储空间容量(例如,超过 10 TB),或者需要高读取吞吐量和高存储空间容量。
      • I/O 延迟时间并不重要。
      • 低写入吞吐量是可以接受的。
    • 对具有以下任何要求的工作负载使用 pd-balanced
      • 低容量,高吞吐量。
      • 基于 SSD 的磁盘所提供的低延迟时间。
    • 对需要高 IOPS(少量 I/O 请求或小文件)的工作负载使用 pd-ssd
  • 预配足够的存储空间容量以实现所需的 IOPS。请考虑每种磁盘类型提供的读写 IOPS

  • 对于虚拟机,请使用 N2 或 N2D 机器系列中的机器类型。这些机器类型提供可预测且具成本效益的性能。

  • 分配足够的 vCPU 以实现所需的永久性磁盘吞吐量。每个虚拟机的永久性磁盘吞吐量上限为 1.2 GBps,可通过 16 个 vCPU 实现此吞吐量。因此,请从具有 16 个 vCPU 的机器类型开始。监控性能,并在需要扩缩 IOPS 时分配更多 vCPU。

元数据服务器

MDS 节点不需要较高的存储容量来处理元数据,但它们需要支持高 IOPS 的存储空间。为 MDS 节点设计基础架构时,我们建议采取以下措施:

  • 对于存储空间,请使用 pd-ssd,因为此类型的永久性磁盘可提供高 IOPS(每 GB 30 IOPS),即使存储空间容量较低。
  • 预配足够的存储空间容量以实现所需的 IOPS。
  • 对于虚拟机,请使用 N2 或 N2D 机器系列中的机器类型。这些机器类型提供可预测且具成本效益的性能。
  • 分配足够的 vCPU 以实现所需的 IOPS:
    • 对于低元数据工作负载,请使用 16 个 vCPU。
    • 对于中元数据工作负载,请使用 32 个 vCPU。
    • 对于元数据密集型工作负载,请使用 64 个 vCPU。监控性能,并在必要时分配更多 vCPU。

管理服务器

MGS 需要极少的计算资源。它不是存储密集型服务。首先将小型机器类型用于虚拟机(例如 n2-standard-2),将 128 GBpd-ssd 磁盘用于存储,并监控性能。如果响应缓慢,请分配更多 vCPU 并增加磁盘大小。

可用性与耐用性

如果您需要永久性存储空间,则 pd-standardpd-balanced 永久性磁盘类型可在一个可用区内提供高可用性和持久性存储空间。为了实现跨可用区或跨区域持久性,您可以使用 Google Cloud CLIStorage Transfer Service 将数据复制到低费用 Cloud Storage。为了降低在 Cloud Storage 中存储数据的费用,您可以将不常访问的数据存储在 Nearline StorageColdline Storage 类别的存储桶中。

如果您只需要临时存储进行暂存部署,请使用本地 SSD 作为 OSS 和 MDS 节点的数据磁盘。这种设计可通过最少的 OSS 虚拟机提供高性能。与其他方案相比,这种设计还可帮助您实现最佳性价比。

OSS 虚拟机的容量示例

调整 Lustre 文件系统的大小和预配 Lustre 文件系统的推荐策略是预配足够的 OSS 虚拟机,以满足总体吞吐量要求。然后,增加 OST 磁盘的存储空间容量,直到达到所需的存储空间容量。本部分中使用的示例工作负载介绍如何使用以下步骤实现此策略:

  1. 确定工作负载要求。
  2. 选择永久性磁盘类型。
  3. 计算 OSS 虚拟机的数量。
  4. 计算每个虚拟机的磁盘大小。
  5. 确定每个虚拟机的 vCPU 数量。

确定工作负载要求

在本示例中,工作负载需要 80 TB 的永久性存储空间容量,读取吞吐量为 30 GBps。

选择永久性磁盘类型

存储选项部分所述,若存储空间容量是主要设计目标,则 pd-standard 是最具成本效益的方案,且 pd-balanced 是最大限度地提高吞吐量的最具成本效益的方案。最大吞吐量因各种磁盘类型而异,且吞吐量随磁盘大小而扩缩。

对于可用于此工作负载的每种永久性磁盘类型,请计算将读取吞吐量扩缩到 30 GBps 的目标所需的存储空间容量。

磁盘类型 读取吞吐量/TB 实现目标吞吐量所需的存储空间容量
pd-standard 0.12 GBps 30 除以 0.12 = 250 TB
pd-balanced 0.28 GBps 30 除以 0.28 = 107 TB

若要使用 pd-standard 实现 30 Gbps 的目标读取吞吐量,您需要预配 250 TB 的存储空间容量。此容量是所需容量 80 TB 的 3 倍。因此,对于此示例中的工作负载,pd-balanced 提供了符合性能要求且具成本效益的存储空间。

计算 OSS 虚拟机的数量

每个 Compute Engine 虚拟机的最大读取吞吐量为 1.2 GBps。如需达到 30 GBps 的目标读取吞吐量,请将目标读取吞吐量除以每个虚拟机的最大吞吐量,如下所示:

   30 GBps / 1.2 GBps = 25

您需要 25 个 OSS 虚拟机才能实现目标读取吞吐量。

计算每个虚拟机的磁盘大小

如需计算每个虚拟机的磁盘大小,请将实现目标吞吐量 (30 GBps) 所需的容量 (107 TB) 除以虚拟机数量,如下所示:

   107 TB / 25 VMs = 4.3

每个虚拟机需要 4.3 TB pd-balanced 容量。

确定每个虚拟机的 vCPU 数量

虚拟机的读取吞吐量根据分配给虚拟机的 vCPU 数量进行扩缩。对于 16 个(或更多)vCPU,读取吞吐量达到 1.2 Gbps。您需要至少提供 16 个 vCPU 的机器类型。因此,请从 N2 或 N2D 机器系列中选择机器类型,例如 n2-standard-32

配置摘要

示例工作负载具有以下要求:

  • 80 TB 永久性存储空间容量
  • 30 Gbps 读取吞吐量

为了满足此工作负载的要求,您需要以下计算和存储资源:

  • OSS 虚拟机数量:25
  • 虚拟机机器系列:N2 或 N2D
  • 每个虚拟机的 vCPU 数量:16 或更多
  • 标准永久性磁盘类型pd-balanced
  • 每个虚拟机的磁盘大小:4.3 TB

暂存文件系统的配置示例

以下配置基于 Google Cloud 提交到 IO500 的内容,展示了使用 Lustre 并部署在 Google Cloud 上的超大规模暂存文件系统的性能:

配置参数 MDS OSS 客户端
虚拟机数量 50 200 1000
机器类型 n2-standard-80 n2-standard-64 c2-standard-16
每个虚拟机的 vCPU 数量 80 个 vCPU 64 个 vCPU 16 个 vCPU
每个虚拟机的 RAM 320 GB 256 GB 64 GB
操作系统 CentOS 8 CentOS 8 CentOS 8
网络带宽 100 Gbps 75 Gbps 32 Gbps
本地 SSD 存储空间 9 TB NVMe
(24 个磁盘)
9 TB NVMe
(24 个磁盘)

上述配置提供了以下性能:

性能指标 结果
写入吞吐量 700 GBps (5.6 Tbps)
读取吞吐量 1,270 GBps (10.16 Tbps)
文件 stat() 操作 每秒 190 万次
小文件读取(3,901 字节) 每秒 150 万次

部署选项

本部分简要介绍了可用于在 Google Cloud 中部署 EXAScaler Cloud 文件系统的方法。本部分还概述了部署客户端虚拟机时要执行的步骤。

EXAScaler Cloud 文件系统部署

您可以从以下方法中进行选择,以在 Google Cloud 中部署 EXAScaler Cloud 文件系统:

无论使用哪一种方法,您都可以在部署文件系统时进行自定义。例如,您可以指定 OSS 虚拟机的数量、虚拟机的机器类型、永久性磁盘类型和存储空间容量。

选择方法时,请考虑以下差异:

  • 部署后修改:如果您使用 Cloud HPC Toolkit,则可以在部署后高效地修改文件系统。例如,如需添加存储空间容量,您可以通过更新 Cloud HPC Toolkit 蓝图并再次应用生成的 Terraform 配置来增加 OSS 节点的数量。如需查看您可以在蓝图中指定的参数列表,请参阅 Terraform 模块的自述文件中的输入部分。如需修改使用 Cloud Marketplace 解决方案部署的文件系统,您必须使用 Google Cloud 控制台、gcloud CLI 或 API 单独更改每个计算和存储资源。

  • 支持:Cloud Marketplace 解决方案使用 Deployment Manager,但 Deployment Manager 不受 VPC Service Controls 支持。如需详细了解此限制,请参阅 VPC Service Controls 支持的产品和限制

客户端部署

您可以使用 EXAScaler Cloud 文件系统部署部分中介绍的任一方法部署客户端虚拟机。 但是,Google 建议您独立于文件系统预配和管理客户端虚拟机。部署客户端的推荐方法是使用 Google 提供的 HPC 虚拟机映像,该映像针对 HPC 工作负载进行了优化。

下面概述了使用 HPC 虚拟机映像部署 Lustre 客户端的过程:

  1. 使用 HPC 虚拟机映像创建虚拟机。
  2. 在虚拟机上安装 Lustre 客户端软件包。
  3. 根据需要自定义虚拟机。
  4. 通过虚拟机创建自定义映像
  5. 使用您创建的自定义映像预配 Lustre 客户端虚拟机。如需自动预配和管理客户端虚拟机,您可以使用 Compute Engine 托管式实例组或第三方工具(如 Slurm 工作负载管理器)。
  6. 在客户端虚拟机上装载 Lustre 文件系统。

数据转移选项

在 Google Cloud 中部署 Lustre 文件系统后,您需要将数据移到文件系统。下表显示了可用于将数据移到 Lustre 文件系统的方法。选择与您需要移动的数据量和源数据的位置(本地或 Cloud Storage)相对应的方法。

数据源 数据大小 推荐的数据传输方法
本地 小(例如小于 1 TB) 使用 gsutil 工具将数据暂存在 Cloud Storage 中。然后,使用 Storage Transfer Servicegcloud CLI 将数据下载到 Lustre 文件系统。
本地 使用 Storage Transfer Service 将数据移到 Lustre 文件系统。按照在 POSIX 文件系统之间转移数据中的说明执行操作。

此方法涉及使用中间 Cloud Storage 存储桶。完成转移作业后,Storage Transfer Service 会删除中间存储桶中的数据。

Cloud Storage 大或小 使用 Storage Transfer Service 或 gcloud CLI 将数据从 Cloud Storage 下载到 Lustre 文件系统。

后续步骤

贡献者

作者: Kumar Dhanagopal | 跨产品解决方案开发者

其他贡献者: