存储桶迁移

本文档介绍了 Cloud Storage 存储桶迁移服务,该服务可在不同地理位置之间以无服务器方式迁移存储桶。借助存储桶迁移功能,您可以将现有存储桶从一个位置移动到另一个位置,无需更改其名称,也无需手动传输存储桶中的数据。

根据您的目标和存储桶用量,您需要仔细规划存储桶迁移,以最大限度地减少中断并成功迁移存储桶。如需详细了解如何重定位存储桶,请参阅重定位存储桶

优势

存储桶迁移功能的优势如下:

  • 简化迁移:您可以用最小的操作开销迁移存储桶。无需复杂的脚本编写或多步骤流程。

  • 持续操作:在整个迁移过程中,您始终可以访问应用,读取操作不会停止,写入操作的停止时间也极短。

  • 提高性能:将 Compute Engine 和 Cloud Storage 资源共置在同一区域内可以缩短延迟时间并提高性能。

  • 保留元数据:存储桶迁移过程会保留对象元数据。保留对象元数据可确保在存储桶迁移后与现有应用和工作流保持兼容。

  • 存储类别配置:您可以保持现有的 Cloud Storage 类别设置,包括 Autoclass。保留存储类别可确保您的费用结构在迁移后保持一致。

使用场景

以下是您可以通过迁移存储桶实现的用例:

  • 降低数据传输费用:通过将存储桶迁移到更靠近访问存储桶数据的工作负载的位置,避免产生数据传输费用。例如,如果您的数据存储在美国,但主要从欧洲访问,您可以将存储桶移至欧洲位置,以降低数据传输费用。

  • 提升性能:您可以通过将数据移至更靠近 Compute Engine 工作负载的位置来提升应用的速度和响应。例如,如果您的应用在 us-central1 中运行,但数据位于 asia-east1,您可以将存储桶迁移到 us-central1,以缩短延迟时间。

  • 增强弹性:保护关键数据免受区域级中断的影响。例如,如果您的数据存储在单个区域,您可以将其迁移到双区域或多区域,以提高可用性和灾难恢复能力。

迁移类型

存储桶迁移分为两种类型:

  • 存在写入停止的存储桶迁移:在存在写入停止的存储桶迁移中,您在存储桶迁移过程中有段时间将无法执行对象写入操作。

  • 不存在写入停止的存储桶迁移:在不存在写入停止的存储桶迁移中,存储桶迁移在后台进行,您可以持续执行对象写入操作,不会发生中断。

存储桶的来源和目标位置决定了存储桶迁移是否涉及写入停止。下表显示了存储桶的位置对迁移期间的写入停止时间有何影响,包括存在写入停止和不存在写入停止的迁移之间的区别。

规范 存在写入停止的存储桶迁移 不存在写入停止的存储桶迁移
存储桶位置

在以下位置之间重定位存储桶会导致停机:

  • 区域
  • 双区域
  • 多区域
  • 多区域和预定义双区域
  • 多区域和可配置的双区域(两个位置具有不同的多区域代码时)

如果两个位置共用相同的多区域代码,则在以下位置之间迁移存储桶不会导致停机:

  • 可配置的双区域
  • 多区域和可配置的双区域
写入可用性 您无法在最终同步步骤期间执行写入操作。

在迁移过程中,写入操作不会中断。

注意:如果政策变更不会导致写入停机,则至少需要 7 天才能完成,因为必须先等待正在进行的可恢复上传完成。

用户参与 您必须启动写入停止结束步骤。 无需明确的结束步骤。
性能影响 在最终同步步骤期间,您无法在存储桶中写入或更新对象。在迁移期间,对象读取和写入延迟时间可能会增加。
存储桶迁移的取消 比不存在写入停止的迁移更快。 取消操作不会立即生效,由于需要回填对象,因此可能需要更长时间。
功能支持提供的功能支持比不存在写入停止的迁移少。如需详细了解不支持的功能,请参阅不支持的功能多部分上传保留政策Firebaseappspot 等功能存在限制。 如需详细了解这些限制,请参阅限制
最短迁移时长 7 天

了解存储桶迁移流程

存储桶迁移可帮助您将数据从来源存储桶移动到目标存储桶。来源存储桶存储您要移动的数据,而目标存储桶是您要将数据移动到的存储桶。

下图显示了存储桶迁移流程:

存储桶迁移流程。
图 1. 存储桶迁移流程(点击可放大)。

* 只有在迁移存在写入停止时,才需要进行最终同步。

下表列出了三个主要步骤以及每个步骤的说明:

步骤 说明

执行试运行
(可选)

模拟存储桶重定位过程,以便在实际数据传输开始之前发现潜在问题。

启动增量数据复制步骤

将数据从源存储桶复制到目标存储桶。存储桶元数据处于写入锁定状态,以防止对存储桶进行任何可能影响迁移过程的更改。不过,您可以写入、修改和删除存储桶中的对象。影响时长的因素如下:

  • 存储桶中对象更新、删除或添加的频率会直接影响复制时长。更高的更改速率需要更多的时间。对象移动速率存在一个上限 `Rm,对象/秒`。如果总对象数为 `N`,更新速率为 `R 对象/秒`,则复制步骤的时长估计为 `N / (Rm - R)` 秒。
  • 由于带宽有限,大存储桶需要更长的迁移时间。
  • 单个对象的大小会影响复制时间。由于带宽限制,大于 10 GB 的对象的传输时间比小于 10 GB 的对象的传输时间更长。例如,1 TB 的对象需要 1 天才能复制完毕。

启动最终同步步骤
(仅当迁移存在写入停止时需要执行)

启动最终同步后,相应存储桶会被锁定以禁止写入。因此,在此期间,您无法在存储桶中写入或更新任何对象,以防止数据不一致。不过,您可以继续从相应存储桶中读取数据。

在所有数据都已传输、验证完毕,并且存储桶在新位置可正常运行后,写入锁定会被自动移除。然后,您可以继续写入和更新存储桶中的对象。

限制

存储桶迁移服务最多支持从项目中的同一位置进行五次并发迁移。

以下各部分介绍了适用于存在写入停止和不存在写入停止的迁移的限制。

存在写入停止的迁移的限制

存在写入停止的迁移在以下部分列出了相关的限制。

数据处理限制

在迁移期间处理数据时,存在以下限制:

  • 表损坏:使用 Apache Iceberg 的 BigLake 外部表和 BigQuery 表将会损坏,需要手动重新创建。无法自动检测受影响的表。

  • Autoclass 对象处理:Autoclass 使用访问模式来确定何时将对象转换到较冷的存储类别。在存储桶迁移过程的最终同步期间,Autoclass 会暂停,并且对象不会转换到较冷的存储类别。最终同步完成后,Autoclass 会恢复。

    • Standard 存储类别中的对象的处理方式如下:

      • Standard 存储类别对象有 30 天的禁止访问期,过了这段时间,这些对象才能转换到较冷的存储类别,例如 Nearline Storage。如果 Standard 存储类别中的对象在迁移期间移动了,则系统会将该对象视为已被访问。因此,迁移过程会重置禁止访问期,即使对象在移动前已快要转换到 Nearline Storage,也必须在迁移完成后再等待 30 天。
    • 非 Standard 存储类别中的对象的处理方式如下:

      • 迁移 Nearline Storage、Coldline Storage 或 Archive Storage 存储类别中的对象不算是访问这些对象。因此,这些对象的禁止访问期不受影响。

      • 迁移存储桶时,如果您经常访问非 Standard 存储类别(例如 Nearline Storage、Coldline Storage 或 Archive Storage)存储桶中的对象,则该存储桶不会自动转换到较热的存储类别。例如,即使对象经常被访问,存储桶也不会自动从 Archive Storage 转换到 Coldline Storage,也不会从 Coldline Storage 转换到 Standard Storage。此行为可防止在重定位期间自动转换存储类别。

      • 如果对象已安排转换为较冷的存储类别(例如从 Nearline Storage 降级到 Coldline Storage),则迁移过程不会干扰到该安排。在迁移完成后,转换将按计划进行。

  • 对象大小限制:迁移的对象大小上限为 2 TB。

分段上传

对于存在写入停机时间的存储桶迁移,无论分段上传处于何种状态(已完成、正在进行或在迁移期间开始),均不支持分段上传。如果您已在要迁移的存储桶中完成分段上传,则必须重新上传对象(不使用分段方法)并删除分段上传,否则迁移会失败。如果您在存在写入停止的存储桶迁移期间使用分段上传功能上传对象,则会发生 FAILED_PRECONDITION 错误。

不支持的功能

使用以下功能的存储桶无法迁移:

操作限制

存在写入停止的存储桶迁移具有以下操作限制:

  • 项目限制:您无法在各项目之间迁移存储桶。

  • 可续传上传:在最终同步步骤之前必须结束正在进行的可续传上传,以免数据丢失。

  • 元数据更新:您无法在迁移期间更新存储桶的元数据。

  • 请求速率提升:迁移的存储桶遵循与新建存储桶相同的请求速率提升准则。

不存在写入停止的迁移的限制

不存在写入停止的存储桶迁移具有以下限制:

  • 保留政策:在迁移前必须解锁所有保留政策。

  • Firebase 和 Appspot 存储桶:与 Firebase 或 Appspot 关联的存储桶不支持迁移。

  • 进度更新:迁移进度更新可能不是线性的。

  • 分段上传:在存储桶迁移期间,仅支持已完成的分段上传。在存储桶迁移期间,不支持对对象进行中的分段上传,必须在存储桶迁移之前完成或取消分段上传。您必须重新上传对象,但不能使用分段方法。 如果您在存储桶迁移期间使用分段上传功能上传对象,则会发生 FAILED_PRECONDITION 错误。

不支持的位置

以下位置的来源存储桶和目标存储桶不支持存储桶迁移:

位置类型 不支持的位置
区域
  • ME-CENTRAL1
  • ME-WEST1

价格

如需详细了解与存储桶迁移相关的价格,请参阅 Cloud Storage 价格

后续步骤