Linux|系统管理|WEB开发

关注Linux,系统管理,WEB开发以及开源世界

用户级文件系统--FUSE

| Comments

FUSE是定义在用户空间(userspace)一组实现文件系统功能的程序,他包括的功能有:

  1. 简单API实现
  2. 简单安装
  3. 用户空间
  4. 非特权用户可以使用
  5. kernel 2.4和2.6均可以使用
  6. 目前比较稳定

其实FUSE只是一个框架(framework),我比较喜欢的是基于它的各种文集系统的实现,比如 bluetooth filesystem
ghoto2 file system
ssh filesystem
flickr filesystem
blog filesystem
gmail filesystem 等。

我测试了一下ssh filesystem,觉得不错。下面是我的安装和测试手记

1)下载最新的fuse版本

2)编译安装

 $tar -vxzf fuse-2.5.3.tar.gz 
 $cd fuse-2.5.3 $ 
 ./configure --with-kernel=/usr/src/linux 
 $make && sudo make install 
 $sudo ldconfig 

3)下载最新的sshfs

4)编译安装

 $tar -vxzf ssfs-fuse-1.6.tar.gz 
 $cd sshfs-fuse-1.6 
 $./configure && make && make instll 

5)测试

你可以使用通常的挂载分区的方式挂载远程服务器上的某一个目录,而通过的协议是ssh,比如

#sshfs mlsx@172.16.81.196:/home/mlsx /misc
[root@wgzhao ~]# df -h 
Filesystem 容量 已用 可用 已用% 挂载点 
/dev/hda5 5.8G 4.6G    987M 83% / 
none 248M 0 248M 0% /dev/shm 
/dev/hda6 17G 4.1G 13G 25% /home
/dev/hda7 7.9G 4.5G 3.0G 61% /mnt/suse
sshfs#mlsx@172.16.81.196:/home/mlsx 7.5T 0 7.5T 0% /misc 

不过它对大小的识别就有点问题了。不管是哪个分区,哪个目录挂载上来,它都识别为7.5T(如果是真的,那该多好)。 这也挂载上来的读写权限是远程机器帐号的uid和gid对应的本地机器的帐号,比如如果远程机器mlsx帐号的uid是500,而我的机器上uid是500的帐号是work,那么/misc的读写权限属于work,其他帐号都没有权限。 你可以这样来挂载 #sshfs mlsx@172.16.81.196:/home/mlsx /misc -o uid=1000,gid=100 uid,gid是对应你本地机器帐号的id号,这样你就可以指定某个帐号来读写了。 卸载的时候,使用下面的命令 #fusermount -u /misc 是不是觉得比scp,sftp要方便很多呢? 同样的,你可以使用它提供的gmail filesystem,blog filesystem等。 而接下来,我要关心的是基于fuse的ZFS,这是sun公司基于solaris提出的一种文件系统,在我的blog中提到过它,而ZFS-FUSE就是基于FUSE来在linux实现ZFS的特性,不过目前还没有实质性的成果,我也下载了它现在推出的最新版本,也能编译通过,但是目前还不知道如何使用,solaris上有专门的视频来告诉你如何使用ZFS,可惜那些功能目前在ZFS-FUSE还没有实现。 让我们期待。

Comments