Azure 托管 Lustre 与 Azure Blob 存储集成,以简化将数据从 Blob 容器导入文件系统的过程。 可以在 创建群集期间配置此集成,并在创建群集后随时创建导入作业。
本文介绍两种导入数据的方法:
Note
将数据从 Blob 容器导入 Azure 托管 Lustre 文件系统时,只会将文件名(命名空间)和元数据导入到 Lustre 文件系统命名空间。
客户端首次访问文件时,将导入 Blob 的实际内容。 首次访问数据时,Lustre 分层存储管理(HSM)功能将 Blob 内容拉取到文件系统中的相应文件时,会稍有延迟。 此延迟仅在首次访问文件时发生。
可以使用装载的客户端中的 Lustre lfs hsm_restore 命令(具有 sudo 功能)预提取 Blob 容器的内容。 若要了解详细信息,请参阅 从 Blob 存储还原数据。
Limitations
以下限制适用于导入操作:
- 一次只能运行一个 Blob 集成作业。 此限制包括手动导入、手动导出、自动导入和自动导出作业。
- 自动导入需要 Azure Blob 存储更改馈送。 更改提要不支持启用了分层命名空间的存储帐户,其保留期必须至少为 7 天。
- 自动导入运行时不要使用
lfs hsm_*命令。 这样做可能会导致 Blob 容器和 Lustre 文件系统之间的一致性问题。 - 自动导入删除是单向删除,从Blob 存储到 Lustre,仅适用于启用自动导入后发生的更改。 在启用前发生的删除,不会在初始完全同步扫描期间被移除。
Prerequisites
- 现有的 Azure 托管 Lustre 文件系统:使用 Azure 门户、 Azure 资源管理器或 Terraform 创建一个。 若要了解有关 Blob 集成的详细信息,请参阅 Blob 集成先决条件。
手动导入任务
手动导入作业允许在你需要时将数据从 Blob 容器导入现有 Azure Managed Lustre 文件系统。
Note
一次只能运行一个导入或导出作业。 例如,如果导入作业正在进行,并且尝试启动另一个导入或导出作业,则会收到错误。
配置导入选项并启动作业
若要配置导入选项并启动作业,请执行以下步骤:
在 Azure 门户中,打开 Azure 托管 Lustre 文件系统。 在 “设置”下,选择 “Blob 集成”。
选择 “+ 创建新作业”。
从“作业类型”下拉菜单中选择“导入”。
在 “作业名称 ”字段中输入导入作业的名称。
为 “冲突解决模式 ”字段选择一个值。 此设置确定导入作业如何处理文件系统中的现有文件与导入的新文件之间的冲突。 在此示例中,选择“ 跳过”。 若要了解详细信息,请参阅 配置导入选项。
为 容错选择一个值。 此设置确定导入作业如何处理导入过程中发生的错误。 在此示例中,选择“ 允许错误”。 若要了解详细信息,请参阅 配置导入选项。
若要筛选要从 Blob 存储导入的数据,请输入导入前缀。 Azure 门户允许输入最多 10 个前缀。 在此示例中,指定前缀
/data和/logs。 若要了解详细信息,请参阅 配置导入选项。配置作业后,选择 “开始” 开始导入过程。
以下屏幕截图显示了 Azure 门户中的导入作业配置设置。
导入前缀
从 Blob 容器导入数据时,可以选择指定一个或多个前缀来筛选导入到 Azure 托管 Lustre 文件系统的数据。 Blob 容器中与某个前缀匹配的文件名会添加到文件系统的元数据记录中。 当客户端首次访问文件时,系统会从 Blob 容器检索其内容,并将其存储在文件系统中。
在 Azure 门户中,在创建群集期间,使用“高级”选项卡上的 导入前缀 字段指定要从 Blob 容器导入的数据。 这些字段仅适用于初始导入作业。 群集创建后无法更改导入前缀。
对于导入作业,可在创建作业时指定导入前缀。 在 Azure 门户中,可在“导入前缀”字段中指定导入前缀。 使用 REST API 创建导入作业时,也可指定导入前缀。
指定导入前缀时,请记住以下注意事项:
- 默认导入前缀为
/。 此默认行为会导入整个 Blob 容器的内容。 - 如果指定多个前缀,则前缀 不得 重叠。 例如,如果指定
/data和/data2,导入作业将失败,因为前缀重叠。 - 如果 Blob 容器所在的存储帐户启用了分层命名空间,可将前缀视为文件路径。 系统包括Azure Managed Lustre文件系统中路径下的项。
- 如果 Blob 容器位于具有非层次结构(或平面)命名空间的存储帐户中,则可以将导入前缀视为系统与 Blob 名称开头进行比较的搜索字符串。 如果容器中的 blob 名称以指定为导入前缀的字符串开头,则系统会使该文件在文件系统中可访问。 Lustre 是一个分层文件系统,当系统将 blob 名称中的
/字符存储在 Lustre 中时,这些字符将成为目录分隔符。
冲突解决模式
从 Blob 容器导入数据时,可以指定如何处理 Blob 容器和文件系统之间的冲突。 此选项仅适用于为现有群集运行的导入作业。 下表显示了可用的冲突解决模式及其说明:
| Mode | Description |
|---|---|
fail |
如果检测到冲突,则导入作业会立即失败并出现错误。 |
skip |
如果检测到冲突,导入作业将跳过该文件。 |
overwrite-dirty |
导入作业会计算冲突路径,以确定是否应删除并重新导入。 若要了解详细信息,请参阅 overwrite-dirty 模式。 |
overwrite-always |
导入作业会评估冲突路径,如果路径有问题,则始终删除或重新导入;如果路径无问题,则释放。 若要了解详细信息,请参阅 overwrite-always 模式。 |
覆盖脏模式
overwrite-dirty 模式会计算冲突路径,以确定是否应删除并重新导入。 在高级别上,模式 overwrite-dirty 会检查 HSM 状态。
如果 HSM 状态为 Clean 且 Archived(Lustre 文件系统检测到其数据与 Blob 容器同步),则仅在必要时更新属性。 否则,它会删除该文件并从 Blob 容器重新导入该文件。
检查 HSM 状态时,不能保证 Lustre 文件系统中的文件与 Blob 容器中的文件匹配。 如果必须确保 Lustre 文件系统中的文件尽可能与 Blob 容器中的文件匹配,请使用模式 overwrite-always 。
始终覆盖模式
该 overwrite-always 模式会评估冲突路径,如果路径脏了,则总是删除或重新导入;如果路径干净,则释放。 当需要确保文件系统始终与 Blob 容器同步时,此模式很有用。 这也是最昂贵的选项,因为它会在首次访问时移除或删除并重新导入以前还原的每个文件。
错误容限
从 Blob 容器导入数据时,可以指定容错。 容错级别确定导入作业如何处理导入过程中发生的暂时性错误(例如作系统错误或网络中断)。 此上下文中的错误并非指冲突解决模式处理的文件冲突。
导入作业提供以下错误容限选项:
- 不允许错误 (默认值):如果导入过程中发生任何错误,导入作业立即失败。
- 允许错误:发生错误时导入作业继续,并记录错误。 导入作业完成后,可在日志记录容器中查看错误。
Blob 导入作业的注意事项
从 Blob 容器导入数据时,必须考虑以下事项:
- 一次只能运行一个导入或导出操作。 例如,如果导入作业正在进行,并且你尝试启动另一个导入作业,则会收到错误。
- 可以取消导入作业。 可以取消在现有群集上启动的导入作业,或群集创建期间启动的导入作业。
- 群集部署可能在相应导入作业完成前成功返回。 导入作业继续在后台运行。 可以通过以下方式监控导入作业的进度:
- Azure 门户:Azure 门户显示导入作业的状态。 转到文件系统并选择 Blob 集成 以查看导入任务状态。
-
Lustre 根目录中的文件:导入期间会在 Lustre 根目录中创建一个类似
/lustre/IMPORT_<state>.<timestamp_start>的文件。<state>占位符随导入进度而变化。 导入作业成功完成后,将删除该文件。
- 若要查看已完成的导入作业的详细信息,请检查日志记录容器。 日志记录容器包含导入作业的日志,包括导入期间发生的任何错误或冲突。
- 如果导入作业因任何原因失败,可能无法获得导入作业的完整统计信息(如导入的文件数或冲突数)。
监视手动导入作业
创建导入作业后,监视其进度以确保其成功完成。
若要查看作业详细信息,请执行以下步骤:
- 在 Azure 门户中,打开 Azure 托管 Lustre 文件系统。 在 “设置”下,选择 “Blob 集成”。
- 从最近的作业列表中选择要监视的导入作业。
- 查看“ 作业详细信息 ”窗格,获取有关作业的信息,包括作业状态、开始时间、Blob 导入,以及导入过程中发生的任何错误或冲突。
以下屏幕截图显示了 Azure 门户中导入作业的作业详细信息。
作业完成后,查看日志记录容器以查看有关导入过程的详细信息,包括发生的任何错误或冲突。 此信息仅在作业完成后可用。
自动导入
Azure 托管 Lustre 中的自动导入功能可实现将数据从 Azure Blob 存储容器无缝同步到 Azure 托管 Lustre 群集。 通过使用此功能,可以将Blob 存储视为冷层,并将Azure Managed Lustre视为高性能热层。 此方法会自动反映 Lustre 命名空间中的 Blob 存储中所做的更改。
自动导入功能的工作原理
Azure Managed Lustre 中的自动导入功能使用 Azure Blob 存储 更改馈送 功能持续监视关联的 Azure Blob 存储 容器中的更改。
根据配置的导入策略,它会更新 Azure 托管 Lustre 命名空间的内容以反映这些更改。 自动导入功能为用户提供无缝和自动化的数据复制过程。
创建作业后,自动导入过程包括两个阶段:
第一个阶段是 完全同步 扫描。 完全同步扫描将 Blob 容器命名空间与 Azure 托管 Lustre 命名空间进行比较,并将任何新的或修改的文件导入 Azure 托管 Lustre 命名空间。
第二阶段是 Blob Sync 扫描。 Blob 同步扫描在完全同步扫描完成后开始。 Blob 同步扫描持续监控更改提要以获取更新,导入新文件或修改的文件,并在 Azure 托管的 Lustre 命名空间内处理删除。
有关定价详细信息,请参阅 更改源文档。
自动导入的先决条件
- 需要现有的 Azure 托管 Lustre 文件系统。 可以使用 Azure 门户、 Azure 资源管理器或 Terraform 创建一个。 若要了解有关 Blob 集成的详细信息,请参阅 Blob 集成先决条件。
- 必须在与 Azure 托管 Lustre 文件系统关联的存储帐户上启用 Azure Blob 存储数据更改提要。
配置自动导入
在已配置关联 Blob 存储容器的现有 Azure 托管 Lustre 文件系统上,自动导入功能已启用。 在 Azure 门户中的 blob 集成设置中配置自动导入。
若要创建新的自动导入作业,请执行以下步骤:
在 Azure 门户中,打开 Azure 托管 Lustre 文件系统。 在 “设置”下,选择 “Blob 集成”。
选择 “+ 创建新作业”。
在 “作业类型” 下拉菜单中,选择“ 自动导入”。
在 “作业名称 ”字段中输入导入作业的名称。
为 “冲突解决模式 ”字段选择一个值。 此设置确定导入作业如何处理文件系统中的现有文件与要导入的文件之间的冲突。 在此示例中,选择“ 跳过”。 若要了解详细信息,请参阅 冲突解决模式。
若要从 Blob 存储筛选数据,请输入导入前缀。 Azure 门户允许输入最多 10 个前缀。 在此示例中,指定前缀
/data和/logs。 若要了解详细信息,请参阅 “导入前缀”。确定是否要选择“启用删除”,以便将删除操作从 Azure Blob 存储 传播到 Azure Managed Lustre。
配置作业后,选择“ 开始”,开始导入过程。
监视和管理自动导入功能
创建自动导入作业后,请在Azure门户中监视其进度。
Blob 集成窗格显示“最近作业”部分中的导入活动的详细信息,包括与自动同步相关的最近作业的状态和指标。
若要取消正在进行的作业,请选择“最近作业”表中该作业的“取消”链接。 “取消”链接仅适用于当前自动导入作业。
若要查看自动导入作业的指标,请选择作业的名称。 “ 指标 ”窗格显示在门户右侧。
自动导入指标
指标分为两个主要类别: 完全同步 和 Blob 同步。
| 完全同步统计信息 | 自动导入的初始完全同步阶段的统计信息 |
|---|---|
| 导入的文件 | 初始完整同步阶段期间,从关联的 Blob 容器成功导入到 Lustre 命名空间的文件数量。 |
| 导入的目录 | 在初始完全同步阶段,从关联的 Blob 容器中成功导入到 Lustre 命名空间的目录数量。 |
| 导入的符号链接 | 在初始完全同步阶段,从关联的 Blob 存储容器成功导入到 Lustre 命名空间的符号链接数量。 |
| 预先存在的文件 | Lustre 命名空间中已存在同一路径和名称文件的数量。 文件已包含作为相应 Blob 的预期数据和元数据。 |
| 预先存在的目录 | 在初始完整同步阶段,在 Lustre 命名空间中遇到的目录计数,这些目录已经包含作为相应 Blob 的预期元数据。 |
| 预先存在的符号链接 | 在初始完整同步阶段,Lustre 命名空间中遇到的符号链接计数,这些符号链接已包含预期的元数据,并且其目标已经设置为相应的 Blob。 |
| 导入的 Blob 总数 | 初始完整同步阶段时计算从 Blob 容器导入到 Lustre 命名空间的 Blob 数量。 该数字是导入的文件、目录和符号链接的超集。 |
| Blob 导入速率 | 在初始完全同步阶段,从 Blob 导入到 Lustre 的每秒 blob 计数。 |
| 已遍历的 Blob 总数 | 在完整同步阶段扫描的 Blob 数目计数。 |
| Blob 步行率 | 在完整同步阶段扫描的 blob 的每秒计数。 |
| 总冲突 | 与 Lustre 命名空间中现有对象具有相同路径和名称的 blob 的遭遇计数,但与一个或多个区域(包括对象、数据和元数据的类型)不同。 |
| 错误总数 | 初始完全同步阶段未能将 Blob 导入到 Lustre 文件系统的错误总数。 选择此链接可转到 “日志记录容器 ”页,查看与此自动导入作业关联的日志。 |
| Blob 同步统计信息 | 与监视更改源相关的活动的统计信息 |
|---|---|
| 导入的文件 | 在初始完全同步阶段之后,已成功从关联的 Blob 容器导入 Lustre 命名空间的文件计数。 |
| 导入的目录 | 在初始完全同步阶段之后,从关联的 Blob 容器中成功导入到 Lustre 命名空间的目录数量。 |
| 导入的符号链接 | 在初始完全同步阶段之后,从关联的 Blob 容器成功导入到 Lustre 命名空间的符号链接计数。 |
| 预先存在的文件 | 在初始完整同步阶段(已包含预期数据和元数据作为相应 Blob)之后,Lustre 命名空间中已存在的同一路径和名称的文件计数。 |
| 预先存在的目录 | 在初始完整同步阶段之后,Lustre 命名空间中遇到的目录计数,这些目录已经包含作为相应 Blob 的预期元数据。 |
| 预先存在的符号链接 | 在初始完整同步阶段之后,Lustre 命名空间中遇到的符号链接计数,这些符号链接已经包含预期的元数据和作为相应 Blob 的目标。 |
| 导入的 Blob 总数 | 在初始完全同步阶段之后,从 Blob 容器导入到 Lustre 命名空间的 Blob 的计数。 该数字是导入的文件、目录和符号链接的超集。 |
| Blob 导入速率 | 初始完全同步阶段之后,每秒从 Blob 导入到 Lustre 文件系统的 Blob 数量。 |
| 删除 | 在 Blob 同步阶段删除的文件计数。 |
| 总冲突 | 初始完全同步阶段之后,Lustre 命名空间中现有对象的路径和名称相同的 Blob 的遭遇计数,但与一个或多个区域不同。 例如,对象、数据和元数据的类型。 |
| 错误总数 | 初始完全同步阶段之后的导入失败总数。 选择此链接可转到 “日志记录容器 ”页,查看与此自动导入作业关联的日志。 |
| 上次更改订阅事件消费时间 | 为此自动导入作业处理的最后一个更改源事件的时间戳。 |
| 上次完全同步的时间 | 处理此自动导入作业的所有更改源事件时的最新时间戳。 |
自动导入的注意事项和最佳做法
使用自动导入时,请考虑以下最佳做法以确保操作顺利进行:
- 查看变更馈送功能的行为,特别是 规格说明。
- 自动导入取决于变更源。 它仅限于发布到更改源的事件的时效性。 更改馈送当前表示事件会在“几分钟内”发布。
下面是删除的最佳做法:
在初始扫描期间,暂缓更改(包括删除)。 将在初始扫描运行期间发生的任何更改源事件(包括删除)在扫描完成后应用。 预计会有一段临时时期,Lustre 文件系统可能会在扫描期间显示您在 Blob 容器中删除的文件。
删除行为显式绑定到所选冲突模式。 下表演示在启用Enable deletions时每个模式的行为:
文件以前在 Lustre 中被修改过吗? 冲突解决模式 执行删除? Yes 如果脏,则覆盖 Yes. Yes 跳过 No. 文件保留在 Lustre 中。 No 如果脏,则覆盖 Yes. No 跳过 Yes.