本页介绍了什么是快照、快照的工作原理,并讨论了限制和最佳实践。
如需了解如何使用快照,请参阅以下指南:
什么是快照?
Filestore 快照是创建快照时文件共享数据的保留状态。实例会维持快照创建后修改的文件的状态。如果要将文件恢复为快照中的保留状态,您可以使用相关快照目录中的文件覆盖当前文件。
快照存储在 Filestore 实例中,并且是该实例的子资源。在实例上的数据被修改之前,快照不会复制任何数据,也不会消耗容量。一个实例的所有快照共享共同的数据,这意味着实例仅保留这些快照之间的差异部分。
虽然与其他 Filestore 数据恢复操作相比,快照确实可以实现成本效益,但随着文件修改的进行,可用实例容量会不断减少。
快照创建
文件共享的每个目录都包含一个隐藏的 .snapshot
目录。每个 .snapshot
目录都包含您创建的父级目录的快照,例如:
volume1/
│ genomics-file.txt
│
└───.snapshot
│
├───snap1/
│ genomics-file.txt
│
├───snap2/
│ genomics-file.txt
│
└───snap3/
genomics-file.txt
快照包含创建快照时其父目录中存在的所有文件和子目录的只读视图。所有文件属性(例如 atime
、ownership
以及读写权限)都将保留。
快照创建通常在两分钟内就能完成,因为它不涉及数据复制,并且不影响实例性能。
每个实例最多可以同时有 240 个快照。 文件共享名称和快照名称的总长度不得超过 78 个字符。
快照一致性
Filestore 快照具有 NFSv3 一致性语义。启动快照之前,Filestore 实例确认已写入到稳定的存储空间中或后跟已确认的 COMMIT
的所有写入将会包括在快照中。如需了解详情,请参阅 NFSv3 RFC-1813 第 3.3.7 节。
准备文件共享以实现最佳快照一致性
快照的质量取决于您的应用从在大量写入工作负载期间创建的快照恢复数据的能力。在大多数情况下,即使您的应用向文件共享写入数据,您也可以创建具有良好一致性的快照。但是,如果您的应用要求严格的一致性,建议您执行以下一项或多项操作:
- 使用 sync 装载选项,或通过
O_DIRECT|O_SYNC
打开文件。这两种方法都可以提高一致性,但不能保证一致性。 - 暂停将数据写入文件共享的应用或操作系统进程,使其在启动快照之前刷新对文件共享的更改。如需了解详情,请参阅 fsync(2)。
- 如果您的应用需要在多个共享之间保持一致性,请在写入所有文件共享的所有实例上暂停所有应用,并在恢复应用之前为所有文件共享创建快照。
- 如果需要保持应用级层一致性,请在创建快照之前先停止应用并卸载文件共享。
.snapshot
目录的 NFS 语义
.snapshot
目录是特殊的隐藏目录,其中包含为其父级目录截取的快照。所有 NFS 和 bash 命令都适用于这些目录,但以下情况除外:
- 您不能创建名为
.snapshot
的文件或目录,因为它是为快照预留的。 .snapshot
目录不会在READDIR
或READDIRPLUS
命令的输出中列出,也不会在ls -a
bash 命令中列出。- 要更改为
.snapshot
目录,您必须明确输入.snapshot
字符串。示例:cd somedir/.snapshot/
- shell 命令的自动补全功能不会将
.snapshot
列为选项。
删除快照中捕获的文件
在快照中捕获文件时,删除文件不会增加实例上的可用磁盘空间。
还原为快照状态
将实例还原为快照状态仅适用于可用区实例、大规模 SSD 实例、区域级实例和企业实例,且已正式发布。
实例恢复为快照中捕获的状态时,自创建目标快照以来写入的所有新数据都会予以删除,且无法恢复。在目标快照之后创建的快照也会由还原流程删除。
功能限制
还原快照功能是一项不可逆转的操作,会从实时文件系统中删除数据,并删除链中每个后续的较新快照。因此,意外丢失数据的风险更高。与从备份恢复相比,这种行为有很大不同,因为在使用后,备份将保持其当前状态,这样您就可以尝试从多个备份恢复,以找到最佳备份。请谨慎使用“还原”功能。
创建目标快照后写入的所有数据都会在还原流程开始时予以删除,且无法恢复。比目标快照更新的所有快照也将予以删除。例如,
snapshot1
、snapshot2
和snapshot3
是按顺序创建的。将实例还原为snapshot2
中捕获的状态意味着snapshot2
之后写入的所有数据以及创建snapshot2
之后拍摄的所有快照都会在还原流程中删除。清理这些已删除数据可能需要 6 至 10 天的时间。在此期间,实例容量和性能可能会受到影响。
将实例还原为快照状态会更新 NFS 文件系统 ID (fsid)。如果尝试使用现有挂载点访问客户端,则会返回过时文件句柄错误。最佳实践是,在还原操作之前从实例中卸载所有客户端,并在操作完成后重新挂载它们。
还原操作最多可能需要 2 分钟才能完成。
- 与还原操作相关的任何清理操作(例如删除链中的后续快照)可能需要 6 小时到 10 天才能完成,具体取决于涉及的文件数。
- 在还原操作运行期间和清理完成期间,您可以运行其他操作。
- 您必须等待还原操作完成,然后才能开始执行另一项还原操作。
快照及其相关的
revert
操作适用于大多数服务层级。基本 SSD 和基本 HDD 服务层级不支持快照。只有包含单个共享的实例才能还原为快照状态。
虽然企业服务层级支持快照,但快照无法与 Filestore 多共享功能搭配使用。