Featured image of post Gekkofs

Gekkofs

Gekkofs概述

最近在看GekkoFS,打算从理论到实现来试试能不能记下来这个分布式文件系统的实现。

他的亮点主要在于使用了系统调用拦截来直接在mount的目录上拦截相应的系统调用。

使用时还用到了一个比较少见的指令: LD_PRELOAD=<install_path>/lib64/libgkfs_intercept.so cp ~/some_input_data <pseudo_gkfs_mount_dir_path>/some_input_data 这个指令的意思是提前加载某个动态库(libgkfs_intercept.so),使用的时候将拦截的动态库提前加载进来,就可以在进入glibc的文件操作之前转向别的路径。

概述

node-local burst buffer file system.

  1. 客户端GekkoFS client library

客户端是以库的形式提供的给HPC应用程序使用的。GekkoFS既没有实现基于fuse用户态文件系统的客户端,也没有实现VFS kernel的内核态的客户端。而是通过可以库的形式,截获所有文件系统的系统调用:如果是GekkoFS文件系统的文件,就通过网络转发给Gekkofs 服务端。如果不是GekkoFS文件系统,就调用原始的glibc库的系统调用。

  1. Server端:GekkoFS daemon

Sever端通过本地的rocksdb来保存文件系统的元数据。 通过本地文件系统来保存数据。数据被切成同样大小的chunk(测试用512k)。

在客户端访问文件时,通过hash的方法映射到多个Server节点上。

总的来说这个架构还是很清晰的,附上论文里的图:

重点在于其工程实现,希望能从对它的代码分析中学到些有用的知识。

comments powered by Disqus
Built with Hugo
Theme Stack designed by Jimmy