【源码+文档】基于FUSE的简单文件系统

可以说FUSE其实是一个用来帮助我们实现文件系统的库,我们可以通过库里面的各种方法和它给出的框架,来实现一个用户空间上的文件系统,这个系统里面对文件的各种操作由我们自己编写相应的函数来实现。编写好以后,就要编译这个.c文件,然后用编译出来的文件,通过fusermount3把一个文件夹挂载到OS上面,OS会认为自己的系统上多了一个存储设备,这个设备就是我们编写的用户空间上的文件系统了,上面的所有操作都是在.c文件中实现好的,进行什么文件操作,就会调用我们编写的相应函数。运行相应的操作函数,并获取返回结果;
摘要由CSDN通过智能技术生成

方案论证(设计理念)

首先说一下我对FUSE的理解,FUSE是对Linux内核扩展,允许用户空间程序为各种与文件相关的系统调用提供实现。可以说FUSE其实是一个用来帮助我们实现文件系统的库,我们可以通过库里面的各种方法和它给出的框架,来实现一个用户空间上的文件系统,这个系统里面对文件的各种操作由我们自己编写相应的函数来实现。

fuse主要由三部分组成:FUSE内核模块、用户空间库libfuse以及挂载工具fusermount3。内核模块实现了一个能被用户空间进程打开的设备;libfuse库负责和内核空间通信,接收来自/dev/fuse的请求,并将其转化为一系列的函数调用,将结果写回到/dev/fuse;挂载工具fusermount3实现对用户态文件系统的挂载。

文件系统的运行流程大概是这样的:

  • 在fuse_operation里面注册各种操作的函数,这些函数当然是由我们实现的,其中会调用到一些libfuse里面的API,还要有一个数据结构来把整个文件系统的内容存起来,至于详细如何与OS进行连接,还有fuse是如何处理我们在终端输入的命令的,我们全部交给fuse_main来处理就可以了。经过我的观察,一旦我们运行了自己的编译好的文件系统文件,这个进程就会一直在后台运行,等待新的内核命令到来,这是我在网上找到的关于fuse_main()的处理过程:

    • 先打开设备文件/dev/fuse;

    • 然后挂载FUSE文件系统;

    • 产生FUSE文件系统指针;

    • 初始化FUSE文件系统的操作函数集:

    • 初始化信

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
centos 挂载ntfs所需要的步骤 我就是在挂载2TB的时候发现的 linux挂载NTFS分区移动硬盘2010-09-23 16:35CentOS 挂载NTFS分区移动硬盘 1.uname -r 查看当前的linux内核版本. [root@localhost Desktop]# uname -r 2.6.18-128.el5 2.去http://www.linux-ntfs.org/下载与内核版本相同的ntfs补丁.具体的地址 3.安装补丁:kernel-module-ntfs-2.6.18-128.el5-2.1.27-0.rr.10.11.i686.rpm [root@localhost Desktop]# rpm -ivh kernel-module-ntfs-2.6.18-128.el5-2.1.27-0.rr.10.11.i686.rpm Preparing... ########################################### [100%] 1:kernel-module-ntfs-2.6.########################################### [100%] 4.使用fdisk -l查看硬盘的分区信息. 5.mkdir /mnt/xxx 在mnt文件夹里新建文件夹,分别对应于移动硬盘下的分区(xxx为文文件夹名) 如:mkdir /mnt/name1 对应于叫做name1的盘 6.mount -t ntfs /dev/sdyz /mnt/xxx 将移动硬盘下的各分区挂载在新建的文件夹里(sdyz为硬盘的分区号码) 如: [root@localhost Desktop]# mount -t ntfs /dev/sdc1 /mnt/TheLORD,OurGod 今天将USB移动硬盘挂在CentOS上准备将压缩包拷贝下来的。 结果挂载移动硬盘的时候却提示: mount: unknown filesystem type ‘ntfs’ 原因:Linux无法识别NTFS格式的分区。 解决: 因为刚刚将CentOS升级到了2.6.18-164.el5内核,无法使用Kernel NTFS Module挂载Windows下的NTFS分区(没有在开源站点上找到相应内核包),所以只有使用ntfs-3g来解决了。 打开ntfs-3g的下载站点,将最新稳定版(当前最新版本为ntfs-3g-2010.3.6)下载到CentOS,执行以下命令安装: 1、编译安装ntfs-3g: #./configure #make #make install [/code] 2、查看USB设备点: #fdisk -l Disk /dev/sdb: 60.0 GB, 60011642880 bytes 255 heads, 63 sectors/track, 7296 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/sdb1 * 1 653 5245191 b W95 FAT32 /dev/sdb2 654 7295 53351865 f W95 Ext'd (LBA) /dev/sdb5 654 1958 10482381 b W95 FAT32 /dev/sdb6 1959 7295 42869421 7 HPFS/NTFS 3、挂载NTFS分区: #mount -t ntfs-3g /dev/sdb6 /mnt/win
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值