首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否存在能够智能处理冗余块以节省磁盘空间和即时复制的文件系统?

是否存在能够智能处理冗余块以节省磁盘空间和即时复制的文件系统?
EN

Server Fault用户
提问于 2019-09-25 22:15:59
回答 3查看 601关注 0票数 3

如果我想要复制的千兆字节中有一个非常大的连续文件,那么我的磁盘必须分配所有必要的空间,并编写每个块的副本。

为什么复制不能“快速”,因为它只能在更改时复制对块的引用并写入新的块?

我理解,这将导致磁盘上有多少数据(由于块引用)与磁盘可能包含的数据超过其实际容量的可能性脱钩。这也可能导致在写入时占用大量空间,因为在从源块更改时必须编写全新的块。

这样的文件系统当然会受到独特的惩罚,但这听起来像是一个有趣的用例。

现在是否有任何文件系统利用类似的方式来处理数据?

请注意,我不是一个文件系统专家,所以我的一些假设可能是令人尴尬的错误。我欢迎对评论的任何更正。

EN

回答 3

Server Fault用户

回答已采纳

发布于 2019-10-16 10:45:43

您所指的是一个reflink。根据Linuxcp手册页

当指定--reflink[=always]时,执行轻量级副本,其中数据块仅在修改时被复制。如果这是不可能的,复制失败,或者如果指定了--reflink=auto,则返回到标准副本。使用--reflink=never确保执行标准副本。

在Linux上,这是由这个FICLONEioctl()打电话实现的:

如果文件系统支持在多个文件("reflink")之间共享物理存储的文件,则此ioctl(2)操作可用于通过共享底层存储使src_fd文件中的某些数据出现在dest_fd文件中,这比创建数据的单独物理副本更快。两个文件必须驻留在同一个文件系统中。如果文件写入发生在共享区域,则文件系统必须确保这些更改对正在写入的文件保持私有。这种行为通常被称为“在写上复制”。

BTRFS支持反射,Linux内核4.8中的XFS

2016年8月,Linux内核4.8增加了一个新特性,即“反向映射”。这是大量计划功能的基础:快照、写入复制(COW)数据、数据去重复、reflink副本、在线数据和元数据清除、数据丢失或坏扇区的高度准确报告,以及严重损坏或损坏的文件系统的重建。这项工作需要更改XFS的磁盘上格式。

cp -z ...这个reflink()函数可以在ZFS的Solaris11.4上使用。ZFSonLinux支持可能在某个时候在OpenZFS和ZFSonLinux中可用。请参阅https://github.com/zfsonlinux/zfs/issues/405

票数 3
EN

Server Fault用户

发布于 2019-09-26 04:43:41

您指的是一个文件系统,它是“复制在写上”或“牛”,您所指的具体特性是一个reflink文件副本。

与复制文件内容不同,COW文件系统可以使一个新文件引用另一个文件的内容,只记录两个文件之间的交互增量。这使得你所说的复制过程几乎是瞬间的。

COW文件系统还能够使用相同的模型去复制现有的数据。例如,请参阅带有bedup或ZFS的BTRFS。

这种方法的一个惩罚是,维护此类文件链接所需的元数据维护它还需要相当多的CPU时间来支持这一功能和其他相关功能。

票数 3
EN

Server Fault用户

发布于 2019-09-26 15:57:41

只需在@Spooler的回答中添加几个链接:

票数 1
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/985659

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档