我正在尝试制作一些文件/目录的副本,但在我所知道的几种方法中,似乎都不是最佳的。
例如,btrfs 可以与使用一起cp --reflink=auto
快速生成文件副本。
我尝试过的:
zfs send/receive
并启用重复数据删除,将数据集复制到新数据集:这避免了使用克隆的父/子关系,但仍然不必要地创建另一个数据集,并且仍然受到必须100%读取文件所涉及的缓慢和再次引用而不是写入的块。zfs 发送/接收和物理复制或 rsyncing 的缓慢进一步加剧,因为大多数东西都是压缩存储的,并且必须在读取期间解压缩,然后在 dedup 开始引用重复块之前进行压缩。
在我所有的研究中,我没有找到任何与 btrfs 中 --reflink 的简单性相似的东西。
那么,有没有办法在 ZFS 中创建文件副本?还是“物理”复制并让重复数据删除完成其工作是唯一真正的选择?
我认为您上面描述的选项 3 可能是您最好的选择。您想要的最大问题是 ZFS 实际上只在数据集/快照级别处理这种写时复制。
我强烈建议避免使用重复数据删除,除非您已经验证它适用于您的确切环境。我个人的经验是重复数据删除工作得很好,直到再有一个用户或 VM 存储被移入,然后它从性能悬崖上掉下来并导致很多问题。仅仅因为它看起来对您的前十个用户运行良好,当您添加第十一个(或第十二个,或第十三个,或其他)时,您的机器可能会翻倒。如果您想走这条路,请绝对确保您有一个完全模仿您的生产环境的测试环境,并且它在该环境中运行良好。
回到选项 3,您需要设置一个特定的数据集来保存要以这种方式管理的每个文件系统树。设置好并初始填充后,拍摄快照(每个数据集一个,略有不同),然后升级为克隆。永远不要再接触原始数据集。
是的,这个解决方案有问题。我并不是说它没有,但考虑到 ZFS 的限制,它仍然可能是最好的。我确实找到了对有效使用克隆的人的引用:http : //thegreyblog.blogspot.com/2009/05/sparing-disk-space-with-zfs-clones.html
我对 btrfs 不是很熟悉,但是如果它支持您想要的选项,您是否考虑过设置一个单独的服务器来支持这些数据集,在该服务器上使用 Linux 和 btrfs?
归档时间: |
|
查看次数: |
4881 次 |
最近记录: |