Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1222439
  • 博文数量: 233
  • 博客积分: 6270
  • 博客等级: 准将
  • 技术积分: 1798
  • 用 户 组: 普通用户
  • 注册时间: 2010-01-26 08:32
文章分类

全部博文(233)

文章存档

2011年(31)

2010年(202)

我的朋友

分类: LINUX

2010-05-10 17:12:11

这阵子,基于FUSE开发了一个简单的网络文件系统。
文件系统的功能比较简单,就是基于TCP Socket连接,把Windows客户端的文件系统挂载到Linux服务器上,以便在服务器上就方便的访问客户端的文件。
 
 
FUSE文件系统的架构如下所示(图中,/tmp/fuse是一个已挂载的FUSE文件系统):
 
FUSE由fuse内核模块和应用层软件组成。
而基于FUSE的文件系统完全运行在应用层,而不是核心层。
这种架构为开发和调试提供了极大的便利。
 
开发人员完全可以根据自己的需要来定制出一个新的文件系统;根据自己的意图实现fuse_operations结构体的API函数,然后通过fuse_main()函数就可以把文件系统挂载到Linux主机上。
 
从2.8.x开始,FUSE已经提过了设备文件的支持,能在FUSE中模拟字符设备,并支持IOCTL的接口。
从2.8.x开始,FUSE的内核模块已经从源码包中提出,并且集成到Linux内核源码中,默认情况下作为模块进行编译。
 
但是,在开发过程中,我发现了一个小小的问题,就是挂载的文件系统只能由该用户访问;切换到其它用户后,挂载目录的访问权限会出现不正常的情况。
 
我试了sshfs,好像也存在同样的问题。。。。
 
使用FUSE文件系统时常用的命令:
  • 安装fuse模块
          $ sudo modprobe fuse
  • 卸载文件系统

          $ fusemount -u /home/user/mountdir

     

 
阅读(843) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~