新钛云服已为您服务1422天
CEPFS支持快照功能,通常通过使用mkdir命令创建快照目录。注意这是一个隐藏的特殊目录,在目录列表中不可见。
概述
通常情况下,快照正如起名:它们保存数据变化过程中的状态。需要注意的一点事,CEPFS快照的一些功能与您可能期望的有所不同:
Arbitrary subtrees:快照将在您选择的目录中创建,并覆盖该目录下文件系统中的所有数据。
Asynchronous:如果创建快照,缓冲数据会被延迟清除,包括从其他客户端清除。因此,“创建”快照的速度非常快。
数据结构
SnapRealm:每当您在新的位置创建快照时(或当快照索引节点移动到其父快照之外时),都会创建SnapRealm。SnapRealms包含一个sr_t srnode,以及作为快照一部分的inodes_with_caps。客户端还有一个SnapRealm概念,它维护的数据较少,但用于将SnapContext与每个打开的文件关联起来进行写入。
sr_t:sr_t是磁盘上的快照元数据。它是包含目录的一部分,包含序列计数器、时间戳、关联快照ID列表和父快照(past_parent_snaps)。
SnapServer:SnapServer管理快照ID分配、快照删除,并跟踪文件系统中有效快照的列表。文件系统只有一个snapserver实例。
SnapClient:SnapClient用于与snapserver通信,每个MDS列组都有自己的SnapClient实例。SnapClient还在本地缓存有效快照。
创建快照
默认情况下,新文件系统上会启用CEPFS快照功能。要在现有文件系统上启用它,请使用下面的命令。
$ ceph fs set <fs_name> allow_new_snaps true
启用快照后,CephFS中的所有目录都将有一个特殊的.snap
快照目录。(如果愿意,可以使用客户端snapdir设置配置其他名称)
要创建CephFS快照,请在.snap
下创建子目录。用你选择的名字创建快照。例如,要在目录“/1/2/3/”下创建快照,请使用mkdir /1/2/3/.snap/my-snapshot-name
命令。
客户端会将请求发送到MDS服务器,然后在服务器的Server::handle_client_mksnap()中处理。它会从 SnapServer中分配一个 snapid&#