我想解决以下一组约束:
- 我希望能够挂载一个大型(16gb)远程文件的副本
- 如果应用程序写入文件的一部分,则将其写入本地副本,而不是通过网络同步
- 如果文件的一部分被读取,如果它以前被应用程序写入,它将读取本地副本。如果它从未被写入,它将首先从远程复制到本地,然后从本地读取
- 在写入之前从未读取过的文件部分不应通过网络传输(这是最重要的约束)
- 该文件将始终具有相同的大小,因此当我们从文件中读取特定字节时应该发生什么,永远不会有歧义。
造成这些限制的原因是,单个文件的绝大部分永远不会被读取,这样的文件很多(每个文件至少有一小部分被读取),并且网络带宽极其有限。
OverlayFS 非常接近我想要的。如果我能够在文件级别而不是目录级别应用overlayfs,我将使用(可能是安装了nfs 的)远程文件作为.lower_file
和一个空的稀疏文件作为upper_file
.
有什么可以让我做上述事情的吗?