本页面简要介绍了存储桶迁移以及它的优势、应用场景、工作原理和限制。
概览
Cloud Storage 存储桶迁移功能可在不同地理位置之间进行存储桶的无服务器迁移。使用存储桶迁移功能,您可以执行以下操作:
将现有存储桶从一个位置移动到另一个位置,无需更改其名称,也无需手动传输存储桶中的数据。
通过将工作负载的 Cloud Storage 配置与 Compute Engine 保持一致,提高性能和成本效益。
优势
存储桶迁移功能的优势如下:
简化迁移:您可以用最小的操作开销迁移存储桶。无需复杂的脚本编写或多步骤流程。
持续操作:在整个迁移过程中,您始终可以访问应用,读取操作不会停止,写入操作的停止时间也极短。
提高性能:将 Compute Engine 和 Cloud Storage 资源共置在同一区域内可以缩短延迟时间并提高性能。
保留元数据:存储桶迁移过程会保留对象元数据。保留对象元数据可确保在存储桶迁移后与现有应用和工作流保持兼容。
存储类别配置:您可以保持现有的 Cloud Storage 类别设置,包括 Autoclass。保留存储类别可确保您的费用结构在迁移后保持一致。
为什么应使用存储桶迁移?
以下是迁移存储桶的一些应用场景:
降低数据传输费用:如果经常访问数据的位置距离存储数据的位置较远,您可以迁移存储桶以靠近访问数据的位置,从而降低数据传输费用。例如,如果您的数据主要从欧洲访问,但存储在美国,您可以将存储桶移至欧洲位置,以降低成本。
提升性能:您可以通过将数据移至更靠近 Compute Engine 的位置来提升应用的速度和响应。例如,如果您的应用在
us-central1
中运行,但数据位于asia-east1
,您可以将存储桶迁移到us-central1
,以缩短延迟时间。增强弹性:您可以保护关键数据免受区域级中断的影响。例如,如果您的数据存储在单个区域,您可以将其迁移到双区域或多区域位置,以提高可用性和灾难恢复能力。
迁移类型
存储桶迁移是否涉及写入停止取决于存储桶的来源和目标位置。如需了解位置如何影响迁移类型,请参阅确定存储桶的迁移类型。这两种存储桶迁移类型如下所示:
存在写入停止的存储桶迁移:在存在写入停止的存储桶迁移中,您在存储桶迁移过程中有段时间将无法执行对象写入操作。
不存在写入停止的存储桶迁移:在不存在写入停止的存储桶迁移中,存储桶迁移在后台进行,您可以持续执行对象写入操作,不会发生中断。
下表介绍了存在写入停止和不存在写入停止的迁移类型之间的重要区别:
规范 | 存在写入停止的存储桶迁移 | 不存在写入停止的存储桶迁移 |
---|---|---|
写入可用性 | 无法在最终同步步骤期间执行写入操作。 | 写入操作不会中断。 |
用户参与 | 需要用户启动写入停止结束步骤。 | 无需明确的结束步骤。 |
性能影响 | 在最终同步步骤期间,无法在存储桶中写入或更新任何对象。 | 在迁移期间,对象读取和写入延迟时间可能会增加。 |
存储桶迁移的取消 | 比不存在写入停止的迁移更快。 | 取消操作不会立即生效。由于需要回填对象,因此可能需要更长时间。 |
功能支持 | 提供的功能支持比不存在写入停止的迁移少。 | 多部分上传、保留政策、Firebase 和 appspot 等功能存在限制。如需详细了解这些限制,请参阅限制。 |
确定存储桶迁移类型
来源和目标存储桶的位置决定了迁移类型。
在单区域、双区域或多区域之间迁移存储桶时,您会有段时间无法写入存储桶。不过,在以下情况下,您在迁移存储桶时不会造成写入停止:
从多区域位置迁移到可配置的双区域位置(这两个位置共用相同的多区域代码时)。
在可配置的双区域位置之间进行迁移(两个位置共用相同的多区域代码时)。
从可配置的双区域位置迁移到多区域位置(这两个位置共用相同的多区域代码时)。
了解存储桶迁移流程
存储桶迁移可帮助您将数据从来源存储桶移动到目标存储桶。来源存储桶存储您要移动的数据,而目标存储桶是您要将数据移动到的存储桶。
下图显示了存储桶迁移流程。

以下带编号的步骤对应于该图中的标号。该图显示了以下步骤:
增量数据复制:增量数据复制步骤会将数据从来源存储桶复制到目标存储桶。存储桶元数据处于写入锁定状态,以防止对存储桶进行任何可能影响迁移过程的更改。不过,您可以写入、修改和删除存储桶中的对象。影响时长的因素如下:
- 存储桶中对象更新、删除或添加的频率会直接影响复制时长。更高的更改速率需要更多的时间。对象移动速率存在一个上限
Rm, objects/second
。如果总对象数为N
,更新速率为R objects/second
,则复制步骤的时长估计为N / (Rm - R)
秒。
由于带宽有限,大存储桶需要更长的迁移时间。
单个对象的大小会影响复制时间。由于带宽限制,大于 10 GB 的对象的传输时间比小于 10 GB 的对象的传输时间更长。例如,1 TB 的对象需要 1 天才能复制完毕。我们建议您将较大的对象拆分为大小介于 0.1 到 1 GB 的较小对象。
如需详细了解如何启动增量数据复制,请参阅启动增量数据复制步骤。
- 存储桶中对象更新、删除或添加的频率会直接影响复制时长。更高的更改速率需要更多的时间。对象移动速率存在一个上限
监控增量数据复制:如需查看增量数据复制步骤的状态,您可以定期查看长时间运行的操作列表。如需了解如何检查增量数据复制步骤的状态,请参阅监控增量数据复制步骤。
最终同步:对于存在写入停止的迁移,在增量数据复制完成后,您需要触发最终同步步骤。最后一个同步步骤包括一个您无法向存储桶写入数据的时间段,以确保数据一致性。最后一个同步步骤包括以下操作:
存储桶暂时处于写入锁定状态。因此,在此期间,您无法在存储桶中写入或更新任何对象,以防止数据不一致。
自增量复制步骤之后对存储桶中的对象数据所做的任何更改都会复制到目标存储桶,以确保已迁移的存储桶包含最新的数据。对象复制完成后,系统会执行比较,以确保来源存储桶和目标存储桶之间的数据相同。数据比较后,存储桶的位置会更新,所有请求都会重定向到新位置。
在所有数据都已传输、验证完毕,并且存储桶在新位置可正常运行后,写入锁定会被移除。然后,您可以继续写入和更新存储桶中的对象。
如需了解如何启动最终同步步骤,请参阅启动最终同步步骤。
限制
存储桶迁移服务最多支持从项目中的同一位置进行五次并发迁移。
以下各部分介绍了适用于存在写入停止和不存在写入停止的迁移的限制。
存在写入停止的迁移的限制
存在写入停止的迁移在以下部分列出了相关的限制。
数据处理限制
在迁移期间处理数据时,存在以下限制:
- 表损坏:使用 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 存储类别存储桶中读取或写入对象,则该对象不会自动升级到 Standard Storage 等较热的存储类别,这有助于防止在迁移过程中发生不必要的存储类别转换。
如果对象已安排降级到较冷的存储类别(例如从 Nearline Storage 降级到 Coldline Storage),则迁移过程不会干扰到该安排。在迁移完成后,降级将按计划进行。
对象大小限制:迁移的对象大小上限为 2 TB。
不支持的功能
使用以下功能的存储桶无法迁移:
- 客户管理的加密密钥 (CMEK) 或客户提供的加密密钥 (CSEK)。
- 锁定的保留政策。
- 启用了临时冻结的对象。
- 分段上传。您必须先完成或取消所有未完成的多部分上传,然后才能开始存储桶转移流程。
- 标记。不建议在迁移期间添加标记,因为这会导致迁移流程失败。
- Appspot 存储桶。考虑将 Container Registry 迁移到 Artifact Registry,以解决由 App Engine 创建的默认存储桶的问题。
- Firebase 存储桶。您无法迁移与 Firebase 关联的存储桶。
操作限制
存在写入停止的存储桶迁移具有以下操作限制:
- 项目限制:您无法在各项目之间迁移存储桶。
- 可续传上传:在最终同步步骤之前必须结束正在进行的可续传上传,以免数据丢失。
- 元数据更新:您无法在迁移期间更新存储桶的元数据。
- 请求速率提升:迁移的存储桶遵循与新建存储桶相同的请求速率提升准则。
不存在写入停止的迁移的限制
不存在写入停止的存储桶迁移具有以下限制:
- 分段上传:不支持未完成的分段上传,必须在迁移之前完成或中止分段上传。在移动期间,新的分段上传会被阻止。
- 保留政策:在迁移前必须解锁所有保留政策。
- Firebase 和 Appspot 存储桶:与 Firebase 或 Appspot 关联的存储桶不支持迁移。
- 进度更新:迁移进度更新可能不是线性的。
不受支持的区域
来源存储桶或目标存储桶在 me-central1
区域内无法进行存储桶迁移。