mirror-requests icon indicating copy to clipboard operation
mirror-requests copied to clipboard

MetaFUSE: a user-space filesystem which caches file metadata

Open skyzh opened this issue 4 years ago • 2 comments

MetaFUSE 是一个“透明”的文件系统。用户可以通过 MetaFUSE 访问一个现有的文件系统(称之为源文件系统)。在访问某个文件时,MetaFUSE 会将源文件系统文件的 metadata 以 key-value pair 的形式缓存在内存或 KV 数据库中,由此提升文件系统的 scan 效率,加快诸如 rsync 比对等操作的效率。

目前处于 proposal 的阶段,欢迎大家分享想法。

(Possible) related projects:

  • rsync-huai: https://github.com/tuna/rsync
  • https://github.com/zargony/fuse-rs

skyzh avatar May 08 '21 08:05 skyzh

最近看到的一篇 ATC 13 的 paper,差不多做了这个事情。 https://www.usenix.org/system/files/conference/atc13/atc13-ren.pdf https://github.com/pdlfs/tablefs

skyzh avatar Jul 04 '21 08:07 skyzh

感觉最好先研究一下目前服务器vfs cache的情况。

mirrors.sjtu:

# all, unused, ...
➜  ~ cat /proc/sys/fs/dentry-state 
4524631	4275776	45	0	35906	0
➜  ~ cat /proc/sys/fs/inode-state 
5377404	1215297	0	0	0	0	0

可以看出目前服务器的dentry cache和inode cache似乎还有不少空余。如果fs scan能被hit vfs cache处理,额外的一层cache是否能够带来更多的好处需要实验一下。另外也可以尝试先调整一下 vm.vfs_cache_pressure 来增加 OS 对 metadata cache 的分配。

htfy96 avatar Jul 07 '21 16:07 htfy96