使用 devicemapper 和 Docker 进行“写入时删除”

使用 devicemapper 和 Docker 进行“写入时删除”

Docker 当前的默认行为是 COW(写时复制),又名写时分配。这依赖于驱动器中的可用空间才能写入磁盘。

相比之下,对于内存,未引用的文件仍然可用,如果需要其他内容,则可以被覆盖,或者如果再次需要它们,则可以在恒定时间内重新链接。

我们希望实现类似的机制来在本地磁盘上缓存远程文件。也就是说,文件会有一个设定的位置,如果需要空间,则允许覆盖该文件,或者如果需要文件本身,则允许链接该文件。

理想情况下,这样的软件在尝试写入或报告可用空间时会挂接到 FS 驱动程序。我的假设是轮询方法是不够的,因为一个软件可以随时分配任意大文件。

开源世界中是否已经存在类似的东西?如果不行的话可以吗?是否存在重大障碍?什么是开始的好方法?

答案1

一种入门方法是使用 FUSE(用户空间中的文件系统)。这个 API 允许您在一个小程序中实现一个文件系统,该程序可以执行您选择的任何操作来缓存对远程文件的访问。例如,sshfsfuse 文件系统用于sftp在远程系统上获取/放置文件,并透明地让它们显示为本地文件。

使用 FUSE 的 C 只读缓存文件系统可以构成代码的基础,已在2004年并且是这里。对于初始开发,您可能更喜欢使用 FUSE 的 Python 库接口,并且至少有 3 种不同的实现,并且在每种实现上构建了许多示例文件系统。搜索Python缓存FUSE想出了 缓存文件系统从2011年开始。

相关内容