将数据导出到Azure Blob 存储

可以将数据从Azure Managed Lustre文件系统复制到Azure Blob 存储中的长期存储。 本文介绍用于导出数据的两种方法:

  • 手动导出作业 - 使用一次性导出作业按需导出数据。
  • 自动导出 - 自动将新的和已更改的文件从文件系统同步到 Blob 存储。

Note

仅当在创建文件系统期间将 Azure Blob 存储与 Azure 托管 Lustre 文件系统集成时,导出作业才可用。 有关详细信息,请参阅 Azure Blob 存储集成。 如果在创建文件系统时未集成 Blob 容器,则可以使用客户端文件系统命令复制数据,而无需创建导出作业。

Limitations

以下限制适用于导出操作:

  • 一次只能运行一个导入或导出操作。 例如,如果导出作业正在进行并且您尝试启动另一个导出作业,则会收到错误。
  • 导出作业仅复制新或更改的文件。 如果从 Blob 容器导入的文件在文件系统创建后未更改,导出作业不会导出该文件。
  • 仅元数据更改的文件不会导出。 元数据更改包括所有者、权限、扩展属性和名称更改(已重命名)。 此限制适用于手动导出和自动导出。
  • 导出作业期间,在Azure Managed Lustre文件系统中删除的文件不会在原始 Blob 容器中删除。 导出作业不会删除 Blob 容器中的文件。
  • Blob 名称必须符合某些 命名规则。 可接受的 blob 名称与可接受的 POSIX 文件名略有不同。 在导出到 blob 时,导出过程将通过正确对文件名中的特殊字符进行转义来保留这些特殊字符。 但是,违反 blob 命名规则(例如,超过最大 blob 名称长度)的文件名会导致尝试导出该文件时出错。
  • 对于自动导出:当前 不会同步元数据更改,例如重命名、所有权更新或权限调整。
  • 对于自动导出:删除文件系统中的文件、目录或符号链接时,不会从Blob 存储容器中删除它们。
  • Azure Blob 存储不支持硬链接。 每个硬链接都导出为唯一 Blob。 如果您导入这些 blob,它们将变成独立的文件。

手动导出任务

手动导出作业会将新的或更改的文件从文件系统复制到创建文件系统时指定的 Blob 容器。

创建导出作业

按照以下步骤在 Azure 门户中创建导出作业:

  1. 在 Azure 门户中,打开 Azure 托管 Lustre 文件系统。 在 “设置”下,选择 “Blob 集成”。

  2. 选择 “+ 创建新作业”。

  3. 在 “作业类型” 下拉菜单中,选择“ 导出”。

  4. 在“文件系统路径”字段中,输入一个字符串以指定要导出的内容。

导出作业导出其文件名以此字符串开头的文件系统中的所有新文件或更改的文件。 该作业将文件写入 Blob 容器时,使用与其在 Lustre 文件系统中相同的文件路径(或前缀)。 为了避免覆盖 Blob 容器中的现有文件,请确保 Lustre 文件系统中的文件路径不会与 Blob 容器中文件的现有路径重叠。

以下屏幕截图显示了 Azure 门户中导出作业的配置设置。

显示用于创建导出(存档)作业的门户设置的屏幕截图。

监视或取消导出作业

可以在 Blob 集成窗格的“最近作业”部分中监视或取消导出作业。

一次只运行一个存档作业。 若要取消正在进行的作业,请选择“最近作业”表中该作业的“取消”链接。 “取消”链接不适用于已完成的作业。

重试导出作业

如果导出作业未成功完成,可以通过 创建新的导出作业来重试导出。 新作业仅复制在上次作业中未复制的文件。

尝试从经常更改数据的活动文件系统导出数据时,重试可能会很常见。 若要了解有关这些方案的详细信息,请参阅 在活动文件系统中运行导出作业。

在活动文件系统中运行导出作业

在正在使用的文件系统中,导出作业期间对文件的更改可能会导致作业失败。 此失败状态表示文件系统中的并非所有数据都已导出到 Blob 存储。 在这种情况下,请通过 创建新的导出作业来重试导出。 新作业仅复制先前作业未复制的文件。

在具有大量活动的文件系统中,重试可能会多次失败,因为文件经常发生更改。 若要验证文件是否已成功导出到 Blob 存储,请检查相应 Blob 上的时间戳。 作业完成后,还可以查看在部署时配置的日志记录容器,以查看有关导出作业的详细信息。 日志记录容器提供关于哪些文件失败及其失败原因的诊断信息。

如果准备停用群集,并且想要执行最终导出到 Blob 存储,请确保在启动导出作业之前停止所有 I/O 活动。 此方法有助于保证导出所有数据,因为它避免了文件系统活动导致的错误。

了解导出文件的元数据

将文件从Azure Managed Lustre文件系统导出到 Blob 容器时,导出作业会保存额外的元数据,以简化将内容重新导入文件系统。

下表列出了 Lustre 文件系统中的 POSIX 属性,导出作业将这些属性作为键/值对保存到 Blob 元数据中:

POSIX 属性 类型
owner int
group int
permissions 八进制或 rwxrwxrwx 格式;支持粘滞位

导出作业将目录属性保存在空 Blob 中。 此 Blob 的名称与目录路径相同,在 blob 元数据中包含以下键/值对: hdi_isfolder : true

在使用容器为新 Lustre 群集水化之前,可以手动修改 POSIX 属性。 使用前面所述的键/值对编辑或添加 Blob 元数据。

使用 azcopy 或存储资源管理器复制 Lustre Blob 容器

可以使用 azcopy 或存储资源管理器来移动或复制 Lustre 文件系统使用的 Blob 容器。

使用azcopy的功能时,可以通过输入以下标志来包含目录属性:

--include-directory-stub

包含此标志时,传输期间会保留目录 POSIX 属性(例如,owner和grouppermissions)。 如果在存储容器上使用 azcopy,且未设置此标志,或者将该标志设置为 false,则传输将包括数据和目录。 但是,目录不会保留其 POSIX 属性。

在 存储资源管理器 中,可以在“设置”中启用此标志,方法是选择“传输设置”然后勾选“包括目录存根”框。

显示如何在存储资源管理器中传输过程中包括目录存根的屏幕截图。

自动导出

Azure 托管 Lustre 的自动导出功能是自动将 Azure 托管 Lustre 文件系统中的更改与链接的 Azure Blob 存储容器同步的功能。

通过使用此功能,你可以帮助确保文件系统中的新文件和修改的文件同步到关联的 Blob 存储 容器中,而无需手动干预。 此功能简化了数据管理,并改进了长期存储的同步。

自动导出功能

自动导出的工作原理是持续监视Azure Managed Lustre文件系统中的更改。 根据配置的导出策略,它会更新关联的Blob 存储容器的内容以反映这些更改。 此功能提供用于复制数据的无缝自动化过程。

下面是自动导出如何处理不同类型的更改:

  • 新建文件创建、新目录和文件内容更改:Blob 集成过程标识新文件、目录和已更改的数据。 它自动启动导出作业。 自动导出可确保将最新版本的文件传输到 Blob 存储。

自动导出通过持续导出迭代实现。 迭代完成后,Blob 集成过程会扫描文件系统中是否有任何新文件、目录或内容更改。 它启动导出作业的新迭代。

在配置的日志记录容器中导出作业日志有助于识别同步问题并了解操作失败的原因。

配置自动导出

在配置了关联的Blob 存储容器的现有Azure Managed Lustre文件系统上启用自动导出。 可以使用 Azure 门户中的 Blob 集成 设置来配置自动导出。

若要创建新的自动导出作业,请执行以下步骤:

  1. 在 Azure 门户中,打开 Azure 托管 Lustre 文件系统。 在 “设置”下,选择 “Blob 集成”。

  2. 选择 “+ 创建新作业”。

  3. 在 “作业类型” 下拉列表中,选择“ 自动导出”。

  4. 在 “文件系统路径” 字段中,输入字符串来指定目录路径。

系统在此路径(前缀)下不断导出文件系统中的所有新文件或更改的文件。 系统将文件写入 Blob 容器,文件路径(或前缀)与其在 Lustre 文件系统中的相同。 唯一的例外情况是,如果你的 Lustre 文件是从 Blob 容器中的该路径导入的。

显示如何创建导入或导出作业的Azure Managed Lustre的 blob 集成窗格的屏幕截图。

监视和管理自动导出

使用 Azure 门户监视自动导出活动并管理配置。

Blob 集成窗格在“最近作业”部分中显示导出活动的详细信息,包括最近作业的状态以及与自动同步相关的指标。

若要取消进程内作业,请选择“最近作业”表中该作业的“取消”链接。 “取消”链接仅适用于当前作业。

若要查看自动导出作业的指标,请选择作业的名称值。 “ 指标 ”窗格显示在门户的侧面板上。

显示包含作业详细信息的 Blob 集成窗格的屏幕截图。

自动导出指标

在门户中,指标分为两个主要类别:总体和当前迭代。

总体统计信息

启用自动导出后的统计信息

导出的文件总数

启用自动导出后已成功复制到关联的 Blob 容器的文件计数。

导出的 MiB 总数

启用自动导出后,聚合文件大小(以 MiB 为单位)已成功复制到关联的 Blob 容器。

迭代已完成

Blob 集成过程识别新的或更改的数据并启动新的导出作业的次数。

上次成功迭代

最后一次迭代的完成时间戳,该时间戳已成功将所有数据导出到关联的 Blob 容器中。

当前迭代统计信息

有关当前活动的统计信息

发现的文件

导出作业当前正在导出的文件计数,包括此迭代中已成功复制到关联的 Blob 容器的文件。*

MiB 发现

当前导出作业正在导出的文件总大小(MiB),包括在此次迭代中已成功复制到关联 Blob 容器的文件。*

导出的文件

成功复制到关联 Blob 容器中的新文件和已更改文件的计数。

MiB 已导出

已成功复制到关联 Blob 容器的新数据和更改数据的总文件大小(MiB)

文件失败

在当前迭代期间未能复制的文件总数。 选择此链接可转到 “日志记录容器 ”页,查看与此自动导出作业关联的日志。

* 当前正在进行的迭代的指标代表截至目前的数据。 例如, “发现的文件 ”是报告时发现导出的文件数。 下一个报告周期可能会显示发现更多文件。

自动导出的注意事项和最佳做法

使用自动导出功能时,请考虑以下最佳做法以确保顺利运行:

  • 冲突管理:如果同一个文件在文件系统和 Blob 存储中都被修改,则存在被覆盖的风险。 使用应用程序级协调来防止发生冲突的编辑。
  • 在删除之前禁用自动导出:删除文件系统或其 Blob 集成过程之前,请确保所有排队的更新都已同步。 验证 上次成功迭代时间 是否为最近,并且 文件失败 指标为零,以避免数据丢失。 然后,禁用自动导出。