存档

  • 使用 fuse 编写文件系统 (2)

    读写文件

    在第一个程序的基础上增加读写 hello-world 的功能:

    #define FUSE_USE_VERSION 26
    
    #include <stdio.h>
    #include <string.h>
    #include <errno.h>
    #include <fuse.h>
    
    #define BUFFSIZE 8192
    
    static int content_size;
    static char content[BUFFSIZE];
    static const char* fname = "hello-world";
    
    static int ou_readdir(const char* path, void* buf, fuse_fill_dir_t filler,
                          off_t 

    阅读全文…

    2013年1月26日 | 归档: 文件系统 | 标签:
  • 使用 fuse 编写文件系统 (1)

    FUSE 的全称是“Filesystem in Userspace”,即“用户空间的文件系统”,这是一个内核模块,能够让用户在用户空间实现文件系统并且挂载到某个目录,就像在内核实现的文件系统一样。使用 FUSE 有几个好处:一是因为在用户空间实现,开发和调试都比较方便;二是可以把一些常用的服务以文件系统的形式展现,方便操作,如 ftpfs,sshfs,mailfs 等;另外可以避免一些版权问题,如 Linux 上对 ntfs,zfs 的操作都是通过 FUSE 实现的。当然用户空间的实现也有缺点,最明显的就是由多次在用户态/内核态切换带来的性能下降。

    根据参考资料 [1] 的介绍,用户通过 FUSE 和内核的通信过程如下:

                       +----------------+
                       | myfs /tmp/fuse |
                       +----------------+
                              |   ^
    +--------------+          v   |
    | ls /tmp/fuse |    +--------------+
    +--------------+    |    libfuse   |
          ^  

    阅读全文…

    2013年1月5日 | 归档: 文件系统 | 标签:
文章标签 ‘fuse’