记录学习过程中的点点滴滴
KFS[CloudStore] 使用fuse挂载方法【原创】
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
如果出现fuse module not found的话,请使用fuse2.7.*版本,因为Fuse网页上提供下载的版本2.8以前的源码中包含kernel模块部分
,2.8及2.8以后的版本不包含kernel模块源码
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 -o allow_other 启动 #-o allow_other 运行其他用户访问
cd /tmp/kfs-fuse 就可以看到当前kfs下的所有数据了
11. fuse的一些参数:
- 其中,影响比较大的参数有
- -s 禁用多线程
- -o allow_other 允许其它用户访问
- -o allow_root 允许root用户访问
- -o nonempty 允许挂载在非空目录上
- -o auto_cache 开启基于修改时间的cache
- -o kernel_cache 开启内核cache
注: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手册
结束
来自yaronspace.cn 本文链接:http://yaronspace.cn/blog/archives/799您可能对下面文章也感兴趣:
这篇文章由admin于2010 年 09 月 15 日 16:30发表在Linux编程, 分布式数据存储。你可以订阅RSS 2.0 你可以跳到结尾直接评论。目前不允许通知。 |