备份概览

本页面介绍什么是备份、备份的工作原理、一些常见使用场景以及创建和使用备份的最佳做法。要了解如何创建 管理备份,以及如何从 Google Cloud 控制台中 请参阅备份数据以用于灾难恢复

什么是备份?

Filestore 备份是文件共享的副本, 包含相应时间点的所有文件数据和文件共享的元数据 会在创建备份时启动

创建文件共享的备份后,您可以修改或删除原始文件共享 文件共享,而不影响备份。

您可以使用备份将文件共享恢复到新的 Filestore 实例 或者(对于基本层级实例)到来源或现有文件共享。

备份是保留在您在 创建时间您可以在 Filestore 所在的区域中创建备份 实例或其他区域,以帮助降低数据丢失的风险。

备份具有全局可寻址,可用于将文件共享恢复到任何 region [地区],但无法共享 共享资源。

创建备份

您创建的第一个备份是以下所有文件数据和元数据的完整副本: 文件共享。后续每次备份都会复制对 数据。

与同一实例、区域和 CMEK(如有使用)关联的一组备份 称为备份链

备份链位于单个 Cloud Storage 存储桶和区域中,可以 位于用于存储源实例的区域之外。

所有服务层级都支持多个备份链,以便您存储 多个区域中的实例备份。

每次创建备份时,系统都会针对之前的备份同时扫描之前的备份 差异化和增量更改:

  • 差异更改:包括对共享文件中的文件所做的更改,例如 对文件进行编辑、添加或删除操作。

  • 增量更改:包括对备份所在的存储桶中的存储空间所做的更改 数据所在位置。这可能包括之前删除数据 。

每次将备份保存到同一备份链时,之前的备份都会 对差分和增量更改进行扫描。在这种情况下, 不需要。

但是,将一个实例的数据存储在多个备份链中,意味着 会交替保存和存储备份。

每次在交替位置创建新备份时, 系统会再次生成备份备份 create 的延迟时间预计较长 备用操作。

先前备份中包含的未更改数据会在较新的备份中引用,但不会复制到其中。如果删除较早的备份,则其唯一数据将复制到下一个最近的备份,并且所有内部数据引用都将自动更新。

创建备份是瞬时操作,但您需要等待一段时间(与复制的时间量成正比)才能使用备份。在此期间,备份会经历三种状态:

状态 时长 说明
正在创建 几秒钟 正在捕获文件共享的当前状态。对文件共享数据的任何新更改不一定都会包括在备份中。在启动备份之前,备份中会包含由实例确认的稳定写入。
正在完成 取决于大小 将数据上传到备份。对文件共享数据的任何新更改都不会包括在备份中。
准备就绪 直到删除备份为止 备份可以随时使用。

创建后,系统会自动压缩基本层级备份以降低费用。 为以下项目中的实例创建备份时,实例性能可能会降低 可用区级、区域级和企业服务层级创建备份不会影响 基本层级实例的可用性或性能。

删除备份

备份是项目级资源,而不是源实例的子资源, 并且需要自己的单独存储空间因此,备份的生命周期 与源实例的名称相关联。删除来源不会删除其 关联的备份如果要删除备份,您必须明确执行 对备份(而不是实例)执行删除操作。

请务必删除所有不需要的备份。如果源实例被删除, 剩余备份会继续产生费用。

备份一经删除便无法恢复。

备份一致性

Filestore 备份具有 NFSv3 一致性语义。启动备份之前,Filestore 实例确认已写入到稳定的存储空间中或后跟已确认的 COMMIT 的所有写入将会包括备份中。如需了解详情,请参阅 NFSv3 RFC-1813 第 3.3.7 节

常见使用场景

以下部分介绍了备份的常见用例。

备份数据用于灾难恢复

假设您的 Filestore 实例位于 us-west1-c,并且您希望保护自己的数据免受影响此区域的灾难的影响。您可以安排作业以定期在远程地区(例如 us- east1)创建此实例的备份。如果 us-west1-c 发生灾难,您可以使用之前的任何备份在其他位置创建新实例。

备份数据以防发生意外更改

如果您希望保护 Filestore 数据免遭意外更改,则可以安排定期创建实例备份的作业。如果数据丢失,您可以浏览备份列表以找出拥有所需文件版本的备份。然后,您可以根据备份创建一个新的 Filestore 实例,将其装载到原始实例所在的客户端,并将文件复制过来。

在复制文件之前,您可以使用 diff 命令,以检查 原始实例和从备份恢复的数据。生成数据后, 已恢复,您可以删除恢复的实例,并创建新的备份 保留数据的当前状态以备将来使用。

此外,您也可以执行就地恢复,即备份数据直接恢复到原始 Filestore 实例,从而将实例中的所有数据替换为备份中的数据。我们建议您为 因为其中存在任何没有支持的数据, 会丢失

创建克隆以用于开发和测试

假设您在提供生产流量的 Filestore 实例上设置了数据库。如果您想使用数据库作为输入运行测试,则可以通过生产实例的备份创建新的 Filestore 实例用于测试。这样,测试使用就不会干扰生产。

同样,您可以使用备份进行离线分析和调查,而不会影响生产。

迁移数据

创建 Filestore 实例后,您无法更改其实例。 位置或服务层级。如需将数据迁移到另一个区域,则可以创建数据备份,然后使用该备份创建新的 Filestore 实例,或者将备份恢复到现有实例。

此外,当您基于备份创建新的 Filestore 实例时, 可以在基本 HDD 和基本 SSD 层级之间进行选择,无论 源实例。

功能限制

Filestore 备份已正式发布(正式版) 适用于所有服务层级

存在以下限制:

  • Filestore 备份不能与 Filestore 结合使用 多人共享功能。

  • 价格生效后,您将需要支付相关费用。

  • 用户应创建新的备份或备份,以替换在 预览。在预览版中创建的备份可能会被删除。已创建备份 预览版反映的是创建时可用的功能行为。 新功能发布时,现有备份不会更新。

以下各部分介绍了与性能相关的其他功能限制, 存储、容量和加密的详细信息:

性能

  • 通过多个硬链接对同一文件进行大量更改(例如, 成千上万个)都可能会影响性能。

  • 对于利用率较高的实例,性能可能会降低多达 15% 并在上传备份时删除。基本层级实例性能不受 备份 create 操作。

  • 将实例的数据存储在多个备份链中确实会影响备份 性能在以下情况下,备份 create 操作的延迟时间预计会更长: 备用链

  • 实例 restore 或实例 delete 等实例操作 延迟,直到备份 create 操作完成。

  • 在某些情况下,delete 操作最长可能需要 24 小时才能完成。

操作并发数

  • 与同一源实例关联的备份 delete 操作必须 一次执行一个。

    不支持在一个备份链内执行批量备份 delete 操作。虽然 delete操作处于待处理状态,而同一个应用中的所有新delete操作 备用链返回 RESOURCE_EXHAUSTED 错误。无论 源实例是否已被删除。

    • 如果源实例已被删除,用户会收到类似 FAILED_PRECONDITION 个错误。

    • 此限制适用于除基本 SSD 和基本 HDD 之外的所有服务层级。

    • 请注意,Filestore 确实支持并发备份 delete 备份操作会引用单独的源实例。

      例如,名为 Source1 的实例有备份数据引用 Backup1Backup2。“Source2”在“Backup3”中引用了备份数据 和 Backup4。不能同时删除 Backup1Backup2, 但 Backup2Backup3 可以。

    如需了解详情,请参阅备份的速率限制

  • 备份 create 和备份 delete 操作在同一时间启动 备用链可以并发运行。不过,用户无法完成备份 create 操作。

    • 如果用户在执行时间最长时尝试为实例创建新的备份, 正在删除最近的备份,这些备份将收到 FAILED_PRECONDITION 错误。例如,如果 Source1 的备用链由 Backup1 组成, 和 Backup2,并且用户开始针对 Backup3create 操作,他们 在 create 操作完成之前,无法删除 Backup2。 这是因为最近的备份包含最关键的数据 成功完成备份 create 操作所需的资源。
  • 如需详细了解操作速率限制,请参阅 备份的操作速率限制

存储

  • restore 操作备份到源实例或现有实例 可用区级实例、区域级实例和企业实例不支持。 如果要恢复其中任一服务层级中的实例的备份, 您必须创建一个新实例。

    • 新实例必须与源实例的服务层级和容量匹配 范围。例如,如果来源是使用可用区级服务层级创建的 但新实例必须使用相同的服务层级 和容量范围

    • 如果您需要使用旧版大规模 SSD 服务创建实例 您必须直接通过 Filestore 运行您的操作 API.

    • 如果您需要使用旧版企业服务层级创建实例, 您可以直接通过 Filestore API 运行自己的操作 或者通过恢复备份 >新建实例页面 Google Cloud

      例如,如果您要创建 10 TiB 的区域级资源 实例容量,则必须使用旧版企业服务层级。

  • 备份操作(例如 restoreeditdelete)可能不可用 在预览版中创建的部分备份。

  • RestoreInstance 调用 应用于区域级或企业实例时,您将无法 创建与之前快照同名的快照 操作。

  • 在删除备份时尝试通过备份恢复实例 快照删除操作将会失败。

  • 如果备份删除失败,则状态会被标记为 invalid。在此类 您需要重试 delete 操作。

容量

每个备份都会占用实例容量。此容量因 自上次创建备份以来对数据所做更改的范围。

更具体地说,在创建备份时,Filestore 会创建一个 文件系统的内部快照,这也占用了 实例容量

快照大小与 自上次备份创建以来所共享的数据。此快照将继续存在,直到 系统会创建并上传下一个后续备份

备份引用的所有数据都会保持在捕获时的状态 并继续占用文件系统的容量。例如,如果你 从装载的文件系统中删除数据,该操作本身不会 释放容量。为此,您需要在删除数据后创建新的备份 或覆盖大量数据

有关差异化和增量更改及其如何 具体请参阅备份创建

如需预测您的工作负载会有足够的容量,请考虑应用下列其中一项 以下:

  • 针对数据量大且频繁的工作负载增加实例容量 或较高的变化率。

加密

使用 CMEK 加密备份链时,需遵循以下限制:

  • 整个备份链均使用相同的 CMEK 进行加密。

  • CMEK 必须与其加密的资源位于同一区域。

  • 如果将备份链存储在与源实例不同的区域中, 可能需要为源密钥和备份密钥应用不同的密钥 链。

    • 所有服务层级都支持多个备份链,或者能够存储 多个区域中的实例备份。如果选择将 CMEK 用于以下用途 加密,CMEK 密钥必须与其资源位于同一区域 加密。如果将备份存储在与来源不同的区域, 并且 CMEK 不是多区域密钥,则必须使用单独的 CMEK 密钥。 如需了解详情,请参阅 CMEK 限制 以及选择最佳 CMEK 位置
  • 单个 CMEK 会应用于备份链所在的 Cloud Storage 存储桶 已存储,无法组合或替换。

  • CMEK 支持不适用于基本层级备份。

如需了解详情,请参阅对备份链的 CMEK 支持

最佳做法

以下各部分介绍了推荐采用的最佳实践。

准备文件共享以实现最佳备份一致性

备份的质量取决于您的应用通过在大量写入工作负载期间创建的备份恢复数据的能力。在大多数情况下,即使您的应用向文件共享写入数据,您也可以创建具有良好一致性的备份。但是,如果您的应用要求严格的一致性,建议您执行以下一项或多项操作:

  • 使用 sync 装载。如需了解详情,请参阅 nfs(5) 中的“同步装载选项”部分。或者,您也可以使用 O_DIRECT|O_SYNC 标志打开文件。有关 请参阅 open(2)
  • 暂停将数据写入文件共享的应用或操作系统进程,使其在启动备份之前清空对文件共享的更改。如需了解详情,请参阅 fsync(2)
  • 如果您的应用需要在多个共享之间保持一致性,请在写入所有文件共享的所有实例上暂停所有应用,并在恢复应用之前为所有文件共享创建备份。
  • 如果需要保持应用级层一致性,请在创建备份之前先停止应用并卸载文件共享。

将现有备份用作新备份的基准,以缩短创建备份的时间

一个区域内某个文件共享的现有备份可用作 创建新的文件共享备份,从而缩短备份创建时间。因此, 我们建议您执行以下操作:

  • 在删除某个文件共享之前的备份之前,请先重新备份该文件共享 文件共享。

  • 等待新备份处于 Ready 状态,然后再创建后续备份 同一文件共享的备份。

将备份任务安排在非高峰时段运行,以缩短创建备份的时间

在非高峰时段创建备份可以缩短创建备份的时间。如果您要安排定期备份文件共享,建议在非高峰时段安排备份。

在 Filestore 实例所在地区中创建备份的高峰时段是每个工作日的结束时和午夜。建议您在清晨或工作日创建备份。

在不同的 Filestore 实例上整理数据,以最大限度地提高效率

文件共享的数据越多,备份就越大,费用也就越高。接收者 仅备份需要备份的数据,因此我们建议您妥善整理数据 即:

  • 采用不同的写入模式或不同的备份存储关键数据 对不同文件共享的要求
  • 通过保留类似数据来减少需要创建的备份数量 一个文件共享。

配额

对于基本 SSD 的每个区域中的备份数量,存在配额限制 和基本 HDD 服务层级。

备份配额限制不适用于可用区级、区域级和企业服务层级。

如需了解详情,请参阅服务层级和配额

Filestore 备份使用入门

如需开始使用该功能,请参阅备份数据以用于灾难恢复

后续步骤