自动从 S3 桶导入更新。 - FSx for Lustre

自动从 S3 桶导入更新。

您可以配置 FSx for Lustre,以便当您在 S3 桶中添加、更改或删除对象时自动更新文件系统中的元数据。FSx for Lustre 会创建、更新或删除与 S3 中的更改对应的文件和目录列表。如果 S3 桶中已更改的对象不再包含其元数据,则 FSx for Lustre 将保留该文件的当前元数据值,包括当前权限。

注意

FSx for Lustre 文件系统和链接的 S3 桶必须位于相同的 AWS 区域,才能自动导入更新。

您可以在创建数据存储库关联时配置自动导入,也可以随时使用 FSx 管理控制台、AWS CLI 或 AWS API 更新自动导入设置。

注意

您可以在同一数据存储库关联上同时配置自动导入和自动导出。本主题仅介绍自动导入功能。

重要
  • 如果您在 S3 中修改某个对象,同时启用所有自动导入策略并禁用自动导出,则该对象的内容将始终导入文件系统中的相应文件。如果目标位置已存在文件,则该文件将被覆盖。

  • 如果同时在文件系统和 S3 中修改文件,并且启用所有自动导入和自动导出策略,则文件系统中的文件或 S3 中的对象可能被其他文件或对象覆盖。无法保证某个位置更晚的编辑会覆盖其他位置更早的编辑。如果您在文件系统和 S3 桶中修改同一个文件,您应该确保应用程序级协调以防止此类冲突。FSx for Lustre 无法防止在多个位置发生写入冲突。

导入策略会指定,当链接的 S3 桶中的内容发生变化时,您希望 FSx for Lustre 如何更新您的文件系统。数据存储库关联可能具有下面其中一种导入策略:

  • – 仅当链接的 S3 数据存储库中添加新对象时,FSx for Lustre 才会自动更新文件和目录元数据。

  • 已更改 – 仅当数据存储库中的现有对象已更改时,FSx for Lustre 才会自动更新文件和目录元数据。

  • 已删除 – 仅当数据存储库中的现有对象已删除时,FSx for Lustre 才会自动更新文件和目录元数据。

  • “新”、“已更改”和“已删除”的任意组合 – 当 S3 数据存储库中发生任何指定操作时,FSx for Lustre 会自动更新文件和目录元数据。例如,您可以指定在 S3 存储库中添加对象()或从 S3 存储库中删除对象(已删除)时更新文件系统,但在更改对象时不更新文件系统。

  • 未配置策略 – 在 S3 数据存储库中添加、更改对象或从中删除对象时,FSx for Lustre 不会更新文件系统上的文件和目录元数据。如果您未配置导入策略,则禁用数据存储库关联的自动导入。您仍然可以使用导入数据存储库任务来手动导入元数据更改,如使用数据存储库任务导入更改中所述。

重要

自动导入不会将以下 S3 操作与您链接的 FSx for Lustre 文件系统同步:

  • 使用 S3 对象生命周期过期来删除对象

  • 永久删除已启用版本控制的桶中的当前对象版本

  • 取消删除已版本控制的桶中的对象

对于大多数使用案例,我们建议您将导入策略配置为已更改已删除。该策略确保链接的 S3 数据存储库中的所有更新都自动导入您的文件系统。

当您设置导入策略以根据链接的 S3 数据存储库中的更改来更新文件系统文件和目录元数据时,FSx for Lustre 会在链接的 S3 存储桶上创建事件通知配置。事件通知配置的名称为 FSx。请勿修改或删除 S3 桶上的 FSx 事件通知配置,否则会阻止更新的文件和目录元数据自动导入文件系统。

当 FSx for Lustre 更新链接的 S3 数据存储库上已更改的文件列表时,即使该文件已被写入锁定,它也会用更新的版本覆盖本地文件。

FSx for Lustre 会竭尽全力来更新您的文件系统。对于以下情况,FSx for Lustre 无法更新文件系统:

  • 如果 FSx for Lustre 无权打开已更改的或新的 S3 对象。在本例中,FSx for Lustre 会跳过对象并继续。DRA 生命周期状态不受影响。

  • 如果 FSx for Lustre 没有桶级权限,例如针对 GetBucketAcl 的权限。这将导致数据存储库生命周期状态变为错误配置。有关更多信息,请参阅 数据存储库关联生命周期状态

  • 如果链接的 S3 桶上的 FSx 事件通知配置已删除或更改。这将导致数据存储库生命周期状态变为错误配置。有关更多信息,请参阅 数据存储库关联生命周期状态

我们建议您启用 CloudWatch Logs 的日志记录,记录有关无法自动导入的任何文件或目录的信息。日志中的警告和错误包含有关失败原因的信息。有关更多信息,请参阅 数据存储库事件日志

先决条件

FSx for Lustre 需要满足以下条件,才能自动从链接的 S3 桶中导入新的、已更改或已删除的文件:

  • 文件系统及其链接的 S3 桶位于相同的 AWS 区域。

  • S3 桶没有配置错误的生命周期状态。有关更多信息,请参阅 数据存储库关联生命周期状态

  • 您的账户拥有所需的权限,才能在链接的 S3 桶上配置和接收事件通知。

支持的文件更改类型

FSx for Lustre 支持导入链接的 S3 桶中发生的以下文件和目录更改:

  • 对文件内容的更改。

  • 对文件或目录元数据的更改。

  • 对符号链接目标或元数据的更改。

  • 文件和目录的删除。如果您在链接的 S3 桶中删除与文件系统中的目录对应的对象(即密钥名称以斜杠结尾的对象),则 FSx for Lustre 只有在文件系统上的相应目录为空时才会将其删除。

更新导入设置

在创建数据存储库关联时,您可以为链接的 S3 桶设置文件系统的导入设置。有关更多信息,请参阅 创建指向 S3 桶的链接

您还可以随时更新导入设置,包括导入策略。有关更多信息,请参阅 更新数据存储库关联设置

监控自动导入

如果 S3 桶中的更改速率超过自动导入可以处理这些更改的速率,则相应元数据更改到 FSx for Lustre 文件系统的导入会延迟。如果发生这种情况,您可以使用 AgeOfOldestQueuedMessage 指标来监控等待自动导入处理的较早更改的期限。有关该指标的更多信息,请参阅FSx for Lustre S3 存储库指标

如果元数据更改导入的延迟超过 14 天(使用 AgeOfOldestQueuedMessage 指标衡量),则 S3 桶中尚未被自动导入处理的更改不会导入文件系统。此外,您的数据存储库关联生命周期被标记为错误配置,并且自动导入停止。如果您已启用自动导出,则自动导出会继续监控您的 FSx for Lustre 文件系统是否有更改。但是,其他更改不会从 FSx for Lustre 文件系统同步到 S3。

要将您的数据存储库关联从错误配置生命周期状态恢复为可用生命周期状态,您必须更新您的数据存储库关联。您可以使用 update-data-repository-association CLI 命令(或相应的 UpdateDataRepositoryAssociation API 操作)。您唯一需要的请求参数是您要更新的数据存储库关联的 AssociationID

在数据存储库关联生命周期状态更改为可用后,自动导入(和自动导出,如果已启用)将重新启动。重新启动后,自动导出会继续将文件系统更改同步到 S3。要将 S3 中新对象和已更改对象的元数据与未导入的或数据存储库关联处于错误配置状态时的 FSx for Lustre 文件系统同步,请运行导入数据存储库任务。导入数据存储库任务不会将 S3 桶中的删除内容与 FSx for Lustre 文件系统中的删除内容同步。如果您要将 S3 与文件系统完全同步(包括删除内容),您必须重新创建文件系统。

为确保元数据更改的导入延迟不超过 14 天,我们建议您对 AgeOfOldestQueuedMessage 指标设置警报,并在 AgeOfOldestQueuedMessage 指标超过警报阈值时减少 S3 桶中的活动。如果 FSx for Lustre 文件系统连接到 S3 桶,单个分片持续发送 S3 中更大数量的可能更改,并且仅在 FSx for Lustre 文件系统上运行自动导入,则自动导入可以在 14 天内处理 7 小时的 S3 积压更改。

此外,通过单个 S3 操作,您可以生成的更改要多于自动导入在 14 天内处理的更改。这些类型的操作包括但不限于到 S3 的 AWS Snowball 上传和大规模删除。如果您大规模更改您希望与 FSx for Lustre 文件系统同步的 S3 桶,以防止自动导入更改超过 14 天,您应该删除文件系统,并在 S3 更改完成后重新创建它。

如果您的 AgeOfOldestQueuedMessage 指标在增长,请查看您的 S3 桶 GetRequestsPutRequestsPostRequestsDeleteRequests 指标,了解可能导致发送到自动导入的更改速率和/或数量增加的活动更改。有关可用 S3 指标的信息,请参阅《Amazon S3 用户指南》中的监控 Amazon S3

有关所有可用 FSx for Lustre 指标的列表,请参阅使用 Amazon CloudWatch 监控