首页 > 编程知识 正文

linux挂载ntfs格式的u盘,网口访问fat32文件系统

时间:2023-05-05 14:21:22 阅读:61281 作者:1432

1 .什么是文件系统

文件系统顾名思义是管理文件的系统。 在windows上格式化USB内存时,必须选择NTFS、FAT32等文件系统。 经常使用linux的人也知道Ext4、XFS等文件系统。

格式化USB存储器. png

维基百科说明:文件系统是一种为用户提供基础数据访问的机制。 将设备中的空间划分为特定大小的块(群集),通常每块512字节。 数据存储在这些块中,大小被修改为占用整数个块。 文件系统软件将这些块组织成文件和目录,并记录哪些块被分配给哪个文件,哪些块未被使用。

2. FUSE文件系统

虽然很难从内核实现文件系统,但优秀的人实现了用户空间文件系统(Filesystem in Userspace,简称FUSE )。 我们可以站在优秀的人的肩膀上实现自己的文件系统。

假设您安装了名为myfs的基于FUSE的文件系统,并运行了可执行文件myfs以装载到/mnt/FUSE文件夹中。 下图为fuse的调用流程。

fuse.png

3 .实现简单的文件系统

FUSE提供两个接口: fuse_operations和fuse_lowlevel_ops,它们提供了一个文件系统,每个文件系统都可以提供一个用户空间。 fuse_lowlevel_ops对于VFS知识较少的人来说很难实现,而fuse_operations相对简单。

在本例中,您将基于fuse_operations创建自己的文件系统。 在使用FUSE之前,必须安装fuse-devel安装软件包。

#包含

#包含

void * myfs _ init (struct fuse _ conn _ info * conn ) )

{

printf(initmyfilesystem.n );

返回空值;

}

(intmain(intargc,char **argv ) ) ) ) ) ) ) )。

{

sructfuse _ args args=fuse _ args _ init (argc,argv );

struct fuse _ operationsmyfs _ oper={

. init=myfs_init,

(;

fuse_main(args.argc,args.argv,myfs_oper,NULL );

返回1;

}

编译后,gcc-omyfsmyfs.c-lf use-d _ file _ offset _ bits=64

装载:/myfs /mnt/fuse

使用mount命令检查装载情况:/opt/test fuse/myfs/myfson/mnt/fusetypefuse.myfs (rw,nosuid,nodev,relatime,user _

卸载: umount /mnt/fuse

虽然到目前为止已经实现了可以装载的文件系统,但此文件系统只能装载/卸载。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。