KFS[CloudStore] 使用fuse挂载方法

来源:互联网 发布:软件开发者路线图 编辑:程序博客网 时间:2024/05/21 10:41

1, 下载fuse-2.8.4.tar.gz
2,  tar -xzvf fuse-2.8.4.tar.gz
3,  ./configure && make && make install
注:需要root权限
4,  echo “/usr/local/lib” >> /etc/ld.so.conf
/sbin/ldconfig
5,  /sbin/modprobe fuse

6,  修改kfs-0.5中CMakeLists.txt中的
SET(Fuse_LIBRARY_DIR “/usr/local/lib”)
SET(Fuse_INCLUDE_DIR “/usr/local/include”)
7,  重新编译kfs-0.5 会在bin目录下生成kfs_fuse二进制文件

8,  启动kfs

9,  编写kfs.prp
metaServer.name=10.60.1.125
metaServer.port=20000
注:kfs.prp这个配置的路径是在kfs_fuse_main.cc中写的,
注意启动时kfs.prp与kfs_fuse是在同一个目录下

10, ./kfs_fuse /tmp/kfs-fuse -f  启动

cd /tmp/kfs-fuse 就可以看到当前kfs下的所有数据了

注:kfs-0.5版本中存在bug以及可优化的地方

1, 在fuse_read 和fuse_write 中调用Seek, 判断返回值status应该是大于等于0 而不是等于0
因为status 的值应该是seek后的文件偏移


2, 可以优化的地方,在每次fuse_read 和 fuse_write 时,都会进行open 和close 操作,这样会导致效率上的问题,加入读取很大的数据,导致进行多次open 和 close操作。
优化方法:使用client->Fileno(path) 来获得已经打开的fd ,如果fd不存在的话,再进行Open 操作,在函数结束时不进行

Close 操作,而是将close操作放到fuse_flush函数中(新增的函数),具体作用请参考fuse手册

原创粉丝点击