有没有一种方法可以创建目录的写时复制副本?


14

我正在考虑一种情况,我需要创建目录的副本,调整一些文件,然后对结果进行一些处理。这项工作相当频繁,一天可能要做几十次。(确切的用例是测试补丁提交;复制代码,补丁,构建/测试/报告/等)。

我要找的东西可以通过创建一个新的目录结构并用原始的硬链接填充它来完成。但是,仅当您使用的所有工具都删除并重新创建文件而不是就地编辑它们时,此方法才起作用。

有没有办法让文件系统对文件进行写时复制


注意:我知道许多FS在块级别使用COW(所有更新都是通过写入新块来完成的),但这不是我想要的。


它不会出现维持,但也许boklm.eu/copyfs
Zoredache

因此,您想通过文件系统进行写时复制,但又不想使用写时复制的文件系统?我很困惑。
卡米尔·基西尔

1
@Kamil Kisiel:我希望文件级COW而不是块级COW。文件级COW结果cpln这样做几乎同样的事情。块级COW是最小化FS元数据不正确间隔的技巧:en.wikipedia.org/wiki/ZFS#Copy-on-write_transactional_model
BCS 2010年

预计将在哪种系统上使用?
约翰·加迪尼尔

它具有推测性,除非您知道用于某种设置的方法(在这种情况下,只需发布​​),否则我不会希望人们花费大量时间弄清楚该如何做(除非他们是为了娱乐而做:)
BCS

Answers:


7

如果您选择文件服务器的平台,则可以使用最新的OpenSolaris构建,并使用ZFS的重复数据删除功能。这样,文件副本将不占用额外的空间,甚至文件之间的公共段也不会被复制。

您可以在Jeff Bonwick的Blog上的这篇文章中阅读有关ZFS重复数据删除的所有信息。


1
ZFS很棒。它将改变您对存储的看法
tegbains 2010年

整洁,除非整个驱动器都有缺点。
BCS

我在博客文章中添加了一个链接,其中包含更多技术细节。您可以在那里查看是否需要它。
卡米尔·基西尔

Jeff Bonwick的帖子的新网址:blogs.oracle.com/bonwick/zfs-deduplication-v2
Mathieu

0

大多数linux虚拟化解决方案在虚拟化OS(从WP复制)中提供文件级COW:

  • 是:
    • Docker,Linux-VServer,lmctfy,LXC,奇点,Virtuozzo,Sandboxie,systemd-nspawn,Solaris Containers(ZFS),FreeBSD jail(ZFS),OpenVZ
  • 没有:
    • chroot,sysjail,WPAR,iCore虚拟帐户,Turbo

尽管此链接可以回答问题,但最好在此处包括答案的基本部分,并提供链接以供参考。如果链接的页面发生更改,仅链接的答案可能会失效
Romeo Ninov

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.