【问题标题】:Share file blocks between two files在两个文件之间共享文件块
【发布时间】:2019-06-19 15:01:16
【问题描述】:

我想创建一个文件的副本而不使用额外的磁盘空间来存储数据,类似于硬链接的作用。

但是,我希望这些数据在块/范围级别具有 CoW(写入时复制)行为,因此只有修改过的数据块/范围才会实际写入磁盘,从而最大限度地减少磁盘使用量。我也在尝试通过这种方式最小化我正在执行的 I/O 量。

文件相对于它们之间的差异大小来说是比较大的,因此复制文件并在以后依赖重复数据删除等机制将是一种巨大的资源浪费。

我无法修改的外部应用程序必须能够读取文件格式,因此修改文件内容的替代方案在我的场景中不可用。

目前不知道这在 NTFS 上是否可行,而且我的搜索没有发现任何有用的信息,可能是我使用了错误的术语。

【问题讨论】:

  • 对于 NTFS,这很可能通过“重解析点”和匹配的文件系统过滤驱动程序来完成。

标签: windows ntfs


【解决方案1】:

您可能正在寻找Data Deduplication API。 至少在没有过滤器驱动程序的情况下,它不能在 NTFS 级别完成。 除此之外,您可以使用Remote Differential Compression API 手动执行此操作。我的FileSnap 工具正是这样做的。

【讨论】:

  • 我是否错误地假设这需要在重复数据删除之前进行初始实际副本,我想我应该在问题中提到,我还希望最大限度地减少执行 I/O 操作的时间,非常感谢链接虽然,现在看看
  • 为什么您的 I/O 操作会出现问题?
  • 我正在查看非常大的文件,因此在重复数据删除之前复制它们会使我的应用程序比仅仅声明一个范围属于两个文件要慢得多。与文件大小相比,差异也相对较小。
  • 在这种情况下,您应该手动实现类似部分的保存(如视频/音频应用等)
  • 谢谢,我要么不完全理解最后一条语句,要么不够,我必须为文件使用特定格式,由于数据的解释方式,部分数据将无用,将将 cmets 移到问题上,以便为其他人澄清事情。
猜你喜欢
  • 2020-02-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-02
  • 2020-09-20
  • 2012-08-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多