Linux文件系统剖析
简述linux文件系统的类型
简述linux文件系统的类型Linux文件系统的类型文件系统是操作系统中用来组织和管理文件的一种机制。
Linux作为一种开源的操作系统,拥有多种不同的文件系统类型来适应不同的需求和场景。
本文将对常见的Linux文件系统类型进行简要介绍。
1. ext4文件系统ext4(Fourth Extended File System)是Linux中最常用的文件系统类型之一。
它是对ext3文件系统的改进和升级,具有更好的性能和稳定性。
ext4文件系统支持最大16TB的单个文件,最大1EB的文件系统大小,同时支持日志功能,可以在系统崩溃后快速恢复文件系统。
2. ext3文件系统ext3(Third Extended File System)是ext2文件系统的改进版本,它添加了日志功能以提供更好的数据一致性和可靠性。
相比ext2,ext3具有更好的容错能力,可以在系统崩溃后更快地恢复文件系统。
ext3文件系统最大支持16TB的文件大小和8TB的文件系统大小。
3. ext2文件系统ext2(Second Extended File System)是Linux中最早的一种文件系统类型,它为Linux提供了一个可靠的文件存储机制。
ext2文件系统采用了索引节点(inode)的结构来组织文件和目录,支持文件和目录的权限和属性设置。
然而,ext2文件系统没有日志功能,对于系统崩溃或断电等异常情况,恢复文件系统需要较长的时间。
4. XFS文件系统XFS是一个高性能的日志文件系统,最初由SGI开发,后来被红帽公司广泛采用。
XFS文件系统支持最大8EB的文件系统大小和最大8EB的单个文件大小。
它具有快速的文件系统检查和修复功能,并且能够高效地处理大文件和大量小文件。
5. Btrfs文件系统Btrfs(B-tree file system)是一个基于B树的文件系统,它是Linux内核的一部分,并且正在逐渐取代ext4成为Linux中的主流文件系统。
请简述 linux 中的文件系统层次结构
请简述 linux 中的文件系统层次结构
Linux系统的文件系统层次结构是非常复杂的,通常可以分成如下几个层次:
1. 根目录:根目录是 Linux 文件系统中最顶层的根目录,它可以看做是 Linux 系统整个文件系统的根,其它所有的子目录都在它之下,一般用 '/' 表示。
2. 二级目录:包括 '/etc'、'/usr'、'/bin'、'/sbin'、'/lib' 等,这些目录又可以看做是四级目录的父目录,下面可以放置用户自定义的文件和文件夹。
3. 四级目录:这里可以放置用户自定义的应用程序,一般都是以某个子目录名开头,比如 '/usr/local','/usr/bin'、'/usr/sbin'等。
4. 程序文件:可以放置各种程序文件,包括可执行文件、库文件、配置文件等。
5. 日志文件:记录系统的运行日志,以及用户行为日志,用于排查故障。
6. 数据文件:用户可以将各种数据文件存放在用户指定的目录下。
总之,Linux系统的文件系统层次结构比较复杂,它们可以根据用户需求和功能进行多层次的划分,以满足用户的不同需求。
linux 操作系统的文件系统的特点
Linux 操作系统的文件系统特点作为一种开源、免费的操作系统,Linux 在计算机领域广泛应用,并且以其稳定性和安全性而闻名。
在Linux 操作系统中,文件系统是一个重要的组成部分,它负责管理和组织存储在硬盘上的数据。
本文将介绍Linux 操作系统文件系统的特点,以帮助读者更好地了解其优势。
一、多样的文件系统类型Linux 操作系统支持多种文件系统类型,如ext2、ext3、ext4、XFS、JFS 等。
每种文件系统类型都有其独特的特点和适用场景。
例如,ext4 是一种高性能的文件系统,适用于大容量存储;XFS 是一种适用于大型文件和高性能存储的文件系统。
这种多样性使得Linux 操作系统能够根据不同的需求和应用场景选择最适合的文件系统类型。
二、强大的文件权限管理Linux 操作系统的文件系统采用了一套灵活而强大的文件权限管理机制。
每个文件和目录都有其所属的用户和用户组,并且可以设置不同的权限,如读、写、执行等。
这种权限机制使得用户可以对文件和目录进行精确的访问控制,从而提高了系统的安全性。
三、支持符号链接符号链接是Linux 操作系统文件系统的一个重要特点。
符号链接是指一个文件或目录指向另一个文件或目录的快捷方式。
通过使用符号链接,用户可以在不改变文件或目录实际位置的情况下,创建文件或目录的别名。
这种特性在管理和组织文件时非常有用,可以提高文件系统的灵活性和可维护性。
四、可靠的日志记录Linux 操作系统的文件系统通常采用日志记录机制,以确保文件系统的可靠性和一致性。
日志记录可以记录文件系统的操作和状态变化,当系统发生故障或意外断电时,可以通过日志进行恢复,避免数据丢失或损坏。
这种可靠的日志记录机制是Linux 文件系统的一个重要特点,为用户提供了更高的数据保护和可靠性。
五、支持加密和压缩Linux 操作系统的文件系统支持加密和压缩功能。
通过使用加密功能,用户可以对文件和目录进行加密,保护敏感数据的安全性。
Linux日志文件系统研究
i i bly hs pp rs d s ju l g tcn l y ad l u o ma n lss m uh a X 3 R i rS X S t hg aitT i a e t i oman eh o g n i x ju l g feyt s sc s E T , e eF , F s h i. ue i o n i i e s
a d J S a d c mp ms tee flsse efr n e u ig b n h r sP sMak n B n i+ . n F n o a h s ey tmsp r ma c sn e c mak , o t r a d o ne + i o Ke wo d :J u aig EXT Res r S, S,F y r s o m ln , 3, ieF XF J S
Z a g We j n W u Qig o h n ni g a n b
( c olo o p t S i c , ai a U i ri fD fne T c n lg , h n sa 4 7 ) Sh o fC m ue ce e N t n l nv sy o e s eh o y C a gh 0 3 n o e t e o 1 0
关键 词 日志技 术 E T R i r S X S J S X 3 es F F F e
文章 编 号 10 — 3 1 (0 6 0 — 0 0 0 文 献 标 识 码 A 0 2 8 3 一 2 0 )9 0 5 - 3 中图分类号 T36 P1
linux 文件系统的组成
linux 文件系统的组成Linux文件系统是Linux操作系统中的一种重要组成部分,它负责管理和组织计算机上的文件和目录。
本文将介绍Linux文件系统的组成,包括文件、目录、文件权限、文件链接和文件系统结构等内容。
一、文件文件是存储在计算机中的数据单元,可以是文本文件、图像文件、音频文件等各种类型。
在Linux系统中,文件以字节序列的形式存储在磁盘上,每个文件都有一个唯一的名称和相应的扩展名。
文件可以被用户创建、读取、写入和删除。
二、目录目录是用于组织和管理文件的容器,它可以包含文件和其他目录。
在Linux系统中,目录以树状结构组织,顶层目录为根目录(/),其他目录都是根目录的子目录。
用户可以通过目录的路径来定位和访问文件,例如“/home/user/file.txt”表示根目录下的home目录下的user目录下的file.txt文件。
三、文件权限Linux文件系统使用权限来控制对文件的访问和操作。
每个文件都有一个所有者和一个所属组,同时还可以设置其他用户的访问权限。
权限分为读(r)、写(w)和执行(x)三种,分别表示对文件的读取、写入和执行操作。
文件权限可以通过命令“ls -l”来查看和修改。
四、文件链接文件链接是指在文件系统中创建一个指向另一个文件或目录的链接。
在Linux系统中,有两种类型的链接:硬链接和软链接。
硬链接是指多个文件共享相同的物理存储空间,它们具有相同的inode(索引节点)和数据块。
软链接是一个特殊的文件,它包含了指向另一个文件或目录的路径,软链接的inode指向原始文件或目录的inode。
五、文件系统结构Linux文件系统采用分层结构来组织文件和目录。
最上层是根目录(/),包含了系统的所有文件和目录。
在根目录下有一些重要的系统目录,如bin目录存放可执行文件,etc目录存放系统配置文件,home目录存放用户的个人文件等。
此外,Linux文件系统还支持挂载(mount)功能,可以将其他存储设备(如硬盘、光盘、USB 设备)挂载到文件系统的某个目录下,使其成为文件系统的一部分。
简述linux文件系统的类型
简述linux文件系统的类型Linux文件系统是指Linux操作系统中用来组织和管理文件的一种系统。
Linux文件系统的类型有很多种,每种文件系统都有其特定的特点和用途。
本文将对常见的几种Linux文件系统进行简要介绍。
1. ext文件系统ext文件系统是最早也是最常用的Linux文件系统之一,它是Linux 操作系统的默认文件系统。
ext文件系统有多个版本,包括ext2、ext3和ext4。
其中,ext4是最新版本,具有更好的性能和可靠性。
ext文件系统使用索引节点(inode)来管理文件和目录,支持文件和目录的权限控制、日志功能以及快速文件系统检查等特性。
由于其可靠性和稳定性,ext文件系统常被用于服务器和桌面应用。
2. XFS文件系统XFS文件系统是一种高性能的Linux文件系统,最早由SGI开发。
XFS文件系统采用了B+树来组织和管理文件和目录,具有较高的扩展性和可靠性。
它支持大容量存储、高并发访问和快速文件系统检查等特性,适用于大规模数据存储和高性能计算等场景。
XFS文件系统广泛应用于企业级服务器和大型数据库等领域。
3. btrfs文件系统btrfs文件系统是一种新型的Linux文件系统,它的设计目标是提供高性能、高可靠性和高可扩展性。
btrfs文件系统支持快照、压缩、在线扩容和数据校验等功能,能够有效地保护数据的完整性和安全性。
btrfs文件系统还支持RAID和数据镜像等高级特性,可以提供更好的数据冗余和故障恢复能力。
btrfs文件系统逐渐成为Linux发行版中的重要选择,但在生产环境中仍需谨慎使用。
4. ZFS文件系统ZFS文件系统是由Sun Microsystems开发的一种先进的文件系统,现在由Oracle维护。
ZFS文件系统采用了复制写(Copy-on-write)技术和存储池(Storage Pool)的概念,具有高度的可靠性和可扩展性。
它支持快照、压缩、数据校验、数据恢复以及自动存储池管理等功能。
Linux虚拟文件系统分析
21 0 0年 第 9期
钟柏松 等 :iu Ln x虚拟 文件 系统分析
g j i d; i d
ud t i
_
7 7
型, 模 型能够表 示所 有支 持 的文 件系 统。因此 , 该
VS F 使得用户可 以直接使用 Lnx的系统调用而无 i u 需考 虑具 体文 件系统 和 实际 物理 介质 。当然 , 要实 现 每个 具体 的文件 系统 , 须将其 物 理组 织结 构转 换 为 必
现该 行 为分 离 开来 。
收 稿 日期 :0 0 41 2 1- ・9 0
图 1 V S的分层结构 F
Ⅶ S的通 用 文 件 模 型
V S的主要 思想 在 于 引 入 了一 个 通 用 的 文件 模 F
作者简介 : I ( 9 7) 男 , t g 1 8 , 江西 九江 人 , 昌大学 信 息工 程学 院硕 士研 究生 , 究方 向 :  ̄ k 南 研 系统 结 构 , 工智 能 ; 人 张字 成 ( 9 2 ) 男 , 西宜春人 , 18 . , 江 硕士研究生 , 研究方 向: 系统结 构 , 工智 能 ; 明建 ( 9 0) 男 , 人 周 17 - , 江西 吉安人 , 副教授 , 研究方 向 :
( 昌 大 学信 .  ̄ 学 院 , 西 南 昌 3 03 ) 南 gz r _ 江 3 0 1
摘要 : 首先 简要地介 绍 Lnx系统 中虚拟 文件 系统( F ) iu V S 的分层抽 象 , 然后 详细分析 V S通 用模 型 中的四个对 象类型及 F
内核 中实现它们的数据结构 , 最后介绍它们之 间是如何联 系起 来的。通过 对其分析 , 读者加 深对 V S系统的理解 。 使 F 关键词 :iu ;虚拟文件 系统 ; 级块 ;索引节点 Ln x 超 中图分类号 :P 0 T31 文献标识码 : A d i 0 3 6 /. s.0627 .0 00 .2 o:1 .9 9 ji n 10 -4 5 2 1 .9 0 1 s
简述linux操作系统中的文件系统类型及其区分方法
简述linux操作系统中的文件系统类型及其区分方法Linux 操作系统支持多种文件系统类型,这些文件系统类型可以通过文件系统驱动程序来挂载。
常见的文件系统类型包括 ext2、ext3、ext4、xfs、swap 等。
下面对这些文件系统类型进行简要介绍:1. ext2/ext3/ext4:这是Linux中最常用的文件系统类型之一,支持文件压缩、日志记录等功能。
其中,ext2/ext3是早期版本的文件系统,而ext4则是ext3的升级版,支持更大的文件和更好的性能。
2. xfs:这是一种支持无损数据压缩和扩展文件系统大小的文件系统。
xfs 文件系统在 Linux 中常用于高端服务器和工作站上。
3. swap:这是一种虚拟内存文件系统,用于在系统内存不足时充当磁盘缓存。
swap 文件系统可以将磁盘空间用作内存缓存,提高系统性能。
4. 其他文件系统类型:除了以上常见的文件系统类型,Linux 还支持其他文件系统类型,如 reiserfs、jffs2 等。
reiserfs 是一种优秀的文件系统类型,支持文件压缩和索引功能,而 jffs2 则是一种基于 JFFS 文件系统类型的深度压缩文件系统。
要区分这些文件系统类型,可以通过命令行或者文件系统检测工具来实现。
例如,在 Linux 中,可以使用 fsck 命令来检查文件系统类型,也可以使用mount 命令来挂载文件系统。
此外,一些文件系统检测工具,如 parted、gdisk 等,也可以用于检测和转换文件系统类型。
Linux 系统自身可以通过文件名、文件属性等信息来识别文件系统类型。
例如,在 Linux 中,文件系统类型可以通过文件名中的“-”或者“.”等符号来表示。
例如,一个文件名为“/dev/sda1”的文件系统类型为 block 设备文件,而一个文件名为“/home/user/ Documents”的文件系统类型为符号链接文件。
此外,Linux 系统还可以通过文件系统驱动程序来挂载文件系统,从而识别文件系统类型。
Linux的Ext2文件系统详解
前述:Linux系统管理员很重要的任务之一就是管理好自己的磁盘文件系统,每个分区不可太大也不可以太小,太大会导致磁盘容量的浪费,太小会导致产生的文件无法存储的问题。
在Linux里面文件是由两部分数据组成,一部分是metadata,另一部分是data。
那么这些数据都存放在文件系统的什么地方呢?这就让我们必须得了解文件系统的Inode与Block 的基本原理了,而Linux最传统的磁盘文件系统使用的是Ext2,所以我们了解下它的内部原理。
第一部分:磁盘的组成和分区(基础)磁盘的机械部分:1、圆形的盘片(主要记录数据的部分)2、机械手臂与机械手臂上的磁头(可读写盘片上的数据)3、主轴马达,可以转动盘片,让机械手臂的磁头在盘片上读写数据磁盘的基本概念1、扇区是最小的物理存储单元(512bytes)2、将扇区组成一个园,那就是柱面,柱面是分区的最小单位3、第一个扇区最重要,里面有硬盘的主引导程序(MBR)占446bytes和分区表(partision tables)占64bytes。
4、目前流行的家用硬盘接口SATA和服务器硬盘接口SAS。
磁盘分区部分:1、主分区和扩展分区最多可以有4个(硬盘的限制)2、扩展分区最多只能有一个(操作系统限制)3、逻辑分区是由扩展分区分化出来的分区4、主分区和逻辑分区的内容可以被格式化,而扩展分区无法格式化第二部分:文件系统的基本特性我们都知道硬盘分区后都是需要格式化,之后操作系统才能使用该分区,为什么呢?这是因为各种操作系统的文件的属性和权限并不相同的,为了能够存放这些文件,因此将分区格式化,以成为操作系统能利用的系统格式。
文件系统通常会将两部分的数据分别放在不同的块,权限与属性放置到inode中,实际的数据放置到data block块中,另外还有一个超级块(superblock)会记录整个文件系统的整体信息,包括inode和block的总量、使用量、剩余量,以及文件系统的格式与信息。
LINUX虚拟文件系统分析_朱作付
文章编号:1009-2269(2003)03-0037-03LINUX 虚拟文件系统分析朱作付1,吕 强2(1.徐州工业职业技术学院,江苏徐州 221006;2.苏州大学,江苏苏州 215006)摘要:采用过程分析的方法,通过对VFS 系统的文件操作过程和文件访问过程的初步分析,总结了Linux 的VFS 文件系统在其工作方式及其结构上的一些优点,以便于更好地认识VFS 文件系统的特点,加深对VFS 系统的理解。
关 键 词:LI NUX ;虚拟文件系统(VFS );DE NTRY ;I NODE中图分类号:TP 316文献标识码:A1 Linux 的虚拟文件系统概述 Linux 是近年来发展起来的一种新型的操作系统,其最重要的特征之一就是支持多种文件系统,使其更加灵活,从而与许多其它的操作系统共存。
Linux 支持ext ,ext2,xia ,minix ,umsdos ,msdos ,vfat ,pr oc ,smb ,ncp ,hpfs ,affs 以及ufs 等多种文件系统。
为了实现这一目的,Linux 对所有的文件系统采用统一的文件界面,用户通过文件的操作界面来实现对不同文件系统的操作。
对于用户来说,我们不要去关心不同文件系统的具体操作过程,而只是对一个虚拟的文件操作界面来进行操作,这个操作界面就是Linux 的虚拟文件系统(VFS )[1]。
形象地说,Linux 的内核好象一个PC 机的母板,VFS 就是上面的一个插槽,具体的文件系统就是一块块的接口卡。
因此,每一个文件系统之间互不干扰,而只是调用相应的程序来实现其功能。
在Linux 的内核文件中,VFS 和具体的文件系统程序都放在Linux FS 中,其中每一种文件系统对应一个子目录,另外还有一些共用的VFS 程序。
在具体的实现上,每个文件系统都有自己的文件操作数据结构file -operations 。
所以,VFS 作为Linux 内核中的一个软件层,用于给用户空间的程序提供文件系统接口,同时也提供了内核中的一个抽象功能,允许不同的文件系统很好地共存。
第二章-linux文件系统PPT
在Linux系统中主要根据文件头信息来判断文件类型,Linux系统的文件类型
有:
•普通文件
文本文件内容可以直接读取,一般都是字母、 数字以及一些符号等。可以使用cat、vi命令直
•纯文本文件
接查看文件内容。
•目录文件
通常访问的文件,由ls –l命令显示出
•设备文件
来的属性中,第一个属性为 “-”
2.3 文件操作命令 显示文件内容命令 显示目录内容及更改目录命令 建立、删除文件命令 建立、删除目录命令 复制、移动命令 压缩备份命令 权限管理命令 Linux文件查找命令
Linux文件结构
•文件结构是文件存放在磁盘等存贮设备上的组织方法。主要体现在对文件和 目录的组织上。目录提供了管理文件的一个方便而有效的途径。 •Linux采用的是树型结构。最上层是根目录,其他的所有目录都是从根目录 出发而生成的。无论操作系统管理几个磁盘分区,这样的目录树只有一个。
Linux主要文件类型
选项:cat命令中的常用选项如下
选项 -n 或 – number
-b
-s
作用
由1开始对所有输出的行数编号
和-n 相似,只不过对于空白行不编号 当遇到有连续两行以上的空白行,就代换为
一行的空白行
显示文件内容命令
2. cat命令
例:查看/etc/network/interfaces文件内容,并对 所有输出行编号
建立、删除文件命令 例:在工作目录下,建立一个名为c-language的子目录
建立、删除文件命令
2. rmdir 命令
功能描述:删除空目录 语法:rmdir [选项] [目录名] 选项: -p :当子目录被删除后其父目录为空目录时,
也一同被删除
简述linux的文件系统结构
简述linux的文件系统结构
Linux的文件系统结构是一个层次结构,从根目录(/)开始,每个目录都可以包含文件和子目录。
下面是主要目录的简要说明:
·/bin - 包含系统中最基本的命令(例如cp、ls、mv、rm等)。
·/boot - 包含用于启动系统的文件,如内核、引导装载程序等。
·/dev - 包含设备文件,如磁盘、键盘、鼠标等硬件设备。
·/etc - 包含系统的配置文件。
·/home - 包含所有用户的主目录。
·/lib - 包含与系统运行有关的库文件,如动态链接库。
·/media - 包含可插入媒体(如CD-ROM、DVD、USB驱动器等)的挂载点。
·/mnt - 包含临时挂载的文件系统。
·/opt - 用于安装附加软件包。
·/proc - 动态映射到正在运行的进程,系统信息等。
·/root - 管理员的主目录。
·/sbin - 包含系统管理员使用的系统命令和实用程序。
·/tmp - 用于存储临时文件。
·/usr - 包含用户安装的应用程序和文件。
·/var - 用于存储程序数据和日志文件。
Linux Flash 文件系统剖析
Linux 内核使用内存技术设备(Memory Technology Device,MTD)接口,这是针对 flash 系统的通用接口。
MTD 可以自动检测 flash 设备总线的宽度以及实现总线宽度所需设备的数量。
Flash 文件系统Linux 可以使用多种 flash 文件系统。
下一小节将解释每种文件系统的设计和优点。
Journaling Flash File SystemJournaling Flash File System是针对 Linux 的最早 flash 文件系统之一。
JFFS 是一种专门为 NOR flash 设备设计的日志结构文件系统。
它非常独特,能够解决许多 flash 设备问题,但同时也导致一些新问题。
JFFS 将 flash 设备视为一种循环的块日志。
写入 flash 的数据被写到了空间的末尾,开始部分的块则被收回,而两者之间的空间是空闲的;当空间变少时,将执行垃圾收集。
垃圾收集器将有效块移动到日志的尾部,跳过无效或废弃块,并擦除它们(参见图 2)。
因此这种文件系统可以自动实现静态和动态平均读写。
这种架构的主要缺点是过于频繁地执行擦除操作(而没有使用最佳擦除策略),从而使设备迅速磨损。
图 2. 在垃圾收集之前和之后循环日志挂载 JFFS 时结构细节将读取到内存中,这将延缓挂载时间并消耗更多的内存。
Journaling Flash File System 2尽管 JFFS 在早期非常有用,但是它的平均读写算法容易缩短 NOR flash 设备的寿命。
因此重新设计了底层算法,去掉了循环日志。
JFFS2 算法专门为 NAND flash 设备设计,并且改善压缩性能。
在 JFFS2 中,flash 中的每个块都是单独处理的。
JFFS2 通过维护块列表来充分地对设备执行平均读写。
clean 列表表示设备中的块全部为有效节点。
dirty 列表中的块至少包含有一个废弃节点。
最后,free 列表包含曾经执行过擦除操作并且可以使用的块。
linux文件系统的组织结构
linux文件系统的组织结构Linux文件系统的组织结构采用树型结构,类似于Windows文件系统。
其主要的目录如下:1. 根目录(/): Linux文件系统的根目录,所有目录都是从根目录开始的。
2. bin目录(/bin): 存放系统的核心程序,包括各种系统命令和工具。
3. boot目录(/boot): 存放系统启动需要的文件,包括引导程序和内核。
4. dev目录(/dev): 存放设备文件,在Linux中一切设备都是文件,包括硬件设备、外部设备等。
5. etc目录(/etc): 存放系统的配置文件,包括密码文件、主机名等。
6. home目录(/home): 存放所有用户的home目录,包括个人设置、数据等。
7. lib目录(/lib): 存放系统的共享库文件,包括各种动态链接库。
8. media目录(/media): 用于挂载外部设备的目录,如U盘、CD/DVD等。
9. mnt目录(/mnt): 用于挂载文件系统的目录。
10. opt目录(/opt): 存放可选软件的安装目录。
11. proc目录(/proc): 存放系统内核信息和运行信息,如进程和内存使用情况。
12. root目录(/root): 默认的root用户的home目录。
13. sbin目录(/sbin): 存放系统管理员使用的系统命令。
14. srv目录(/srv): 存放服务器的数据文件。
15. sys目录(/sys): 存放设备驱动相关的信息。
16. tmp目录(/tmp): 存放各种临时文件,如进程间通信使用的文件、临时下载文件等。
17. usr目录(/usr): 存放系统软件和用户共享的文件。
18. var目录(/var): 存放系统的可变文件,如日志文件、邮件等。
以上是Linux文件系统的主要目录,其中一些目录又包含了更多子目录。
了解Linux文件系统的组织结构有助于用户更好地管理文件和文件夹。
Linux 文件系统概述
Linux 文件系统概述文件系统(file system)表示存储在计算机上的文件和目录的数据结构,也可以用于存储文件的分区或磁盘,操作系统通过文件系统可以方便地查寻和访问其中所包含的磁盘块。
在Linux系统中,每个分区都是一个文件系统,都有自己的目录层次结构。
Linux的最重要特征之一就是支持多种文件系统,这样它更加灵活,并可以和许多其它种操作系统共存。
1 文件系统的工作原理Linux系统中的每个文件都是通过分配文件块的方式把数据存储在存储设备中,而分配信息本身也存储在磁盘上。
不同的文件系统用不同的方法分配和读取文件块,例如DOS和Windows的FAT文件系统。
在Linux系统中,有两种常用的文件系统的分配策略:块分配(block allocation)和扩展分配(extent allocation)。
块分配当文件变大的时候每一次都为这个文件分配磁盘空间,而扩展分配则是当某个文件的磁盘空间不够的时候,一次性为它分配一连串连续的块。
1.块分配块分配机制提供了一个灵活而高效的文件块分配策略,在传统的Linux文件系统被广泛应用。
磁盘上的文件块根据需要分配给文件,这样可以减少存储空间的浪费。
例如,当一个文件慢慢变大的时候,就会造成文件中文件块的不连续。
使得读取一个文件的时候有可能要随机而不是连续地读取文件块。
这样的效率非常低,而且还增加了过多的磁盘寻道时间可以通过优化文件块的分配策略(尽可能为文件分配连续的块)来避免文件块的随机分配。
通过使用聪明的块分配策略,可以实现块的连续分配。
这样就可以减少磁盘的寻道时间。
每一次当文件扩展的时候,块分配的算法就要写入一些关于新分配的块所在位置的信息。
如果每一次文件扩展的时候只增加一个块,那么就需要很多额外的磁盘I/O用来写入文件块的结构信息。
文件块的结构信息也就是meta-data,meta-data总是一起同时写入存储设备的,它的这种机制显著地降低整个文件系统的性能。
Linux
/*空 闲 I 点 数 */ 节 /*第 一 个 数 据 块数 */
u s n d ln . is —d t —bo k; n i e o g S— rt— a a— l g f c
收 稿 时 间 :0 2—0 20 3—2 0
/*文 件 卷 I 点 数 */ 节
/*文 件 卷 逻 辑 块 总数 */
/ 为超级用户保 留的块数 */ *
/*空 闲块 数 */
u s n d ln . r e— l k — o n ; n i e g S— e —bo s— u t g o f c c
u s n d ln .fe —io e — o n ; n i e o g S—r e—n d s. u t g c
维普资讯
第3 卷 1
第4 期
贵 州 工 业 大 学 学报 (自然 科 学 版 )
J U N O U Z O N『 E STYO E O R  ̄ FG IH U U v R I FT 0 .G I Y 0
Vo. 1No 4 13 . A u u t2 0 g s. 0 2
bok 开 始 , 导 块 中包 含 有 可 执 行 代 码 。启 动 计 算 机 时 , 件 从 引 导 设 备 将 引 导 块 读 入 内存 , 而 执 行 其 l ) c 引 硬 转
代码 。引导块代码 开始操作 系统本身 的加载过程 。一旦 系统启动之后 , 引导块不再使用 。 超级块 ( u e— l k 中含有文件系统 的布局信息 , 主要 功能是给 出文件 系统不 同部分 的大小 。如 给 Spr b ) c o 其 定 块 大小 , 节 点 总数 , 组 内 I 点 数 , 闲 块 和 l 点 数 等 。在 Ln x启 动 时 , 设 备 中 的 超 级 块 被 读 入 I 每 节 空 节 iu 根 内存 中 , 放 在 Src x2 spr bok结 构 中。 存 tut t一 u e— l e c
Linux的文件系统类型概述
想要安装Linux的新手在分区这个环节可能会碰到这样的问题,明明硬盘还有好多G的剩余空间,却提示你因为空间不够而无法继续安装Linux。
这完全是因为你的电脑由于先前安装了Windows而全部使用了FAT或者是NTFS的文件系统类型。
而Linux使用的是ext的文件系统类型,因为你的硬盘没有给ext文件系统划分任何空间,所以它自然会提示你空间不够。
Linux的文件系统类型概述Linux的默认文件系统类型为ext3,Linux的文件系统是从Unix的发展而来的。
Unix文件系统的设计在当时有许多创新,其设计思想对于后来的许多操作系统都有着极为深远的影响。
这也是Unix对计算机技术的主要贡献之一。
Linux没有盘符这个概念,它就是一个树型的目录结构。
一棵大树从根部开始长可以长出许多枝条,枝条上可以再长枝条或者是叶子。
在这里,枝条就好比文件夹,叶子就是文件。
由于三级扩展文件系统类型(ext3)是一种高性能的文件系统类型,所以Linux不像Windows,几乎不需要用一段时间就进行碎片整理的工作,因为ext3很好地减少了磁盘碎片化。
作了以上基础的介绍后,大家可以了解到,一个好的文件系统对于管理好我们存储在电脑里的文件以及信息是多么的重要。
文件系统不只有一种,Linux与Windows使用的是两种工作原理不同的文件系统类型所以互不兼容,但只要你合理地对硬盘进行分区,Linux完全可以与Windows共存于一台电脑。
下面的内容是详细的对Linux的文件系统进行介绍,有兴趣的可以继续往下看。
Linux的文件系统目前Linux系统都提供了几个标准的文件系统,如根文件系统,/usr文件系统等。
值得一提的是,这些文件系统可以放在一个分区上,也可以放在多个分区上。
最好的例子就是,许多网站常常将/home独立放在一个分区,遇到系统崩溃时,用户的信息不会丢失。
下面就分别介绍这几个文件系统的功能及其主要目录。
1、根文件系统(/)根文件系统含有引导和运行Linux系统必需的文件。
第7章 Linux文件系统
Minix:最古老、最可靠的文件系统。 Xia:minix的修正版。 Ext:ext2的老版本。 Ext2:ext2诞生与1993年,当前最常用的 Linux文件系统。功能强大,方便安全。 Ext3:ext2+log是linux通用的文件系统, 是ext2的增强版本,它强化了系统的日志功 能。
图7-2主文件夹的快捷菜单 Linux基础与应用
选中其中相应菜单项可对文件、目录进行打开 、复制、重命名、删除、修改属性、创建链接等操 作。另外,选中某个文件或文件夹后也可以点击菜 单栏中的“编辑”弹出下拉菜单也可以完成上述操 作 。
2.查找文件 在GNOME桌面环境下查找文件,依次 单击“位置”→“查找文件”菜单项,打开 “搜 Linux基础与应用 索文件”窗口 ,见图7-3。
Linux基础与应用
3.访问权限的表示
字母表示 数字表示法 为了使用方便简捷,权限也可以 用数字表示。
Linux基础与应用
d rwxrwxrwx
第7章 Linux文件系统
7.1 Linux文件系统概述 7.2 桌面环境下文件、目录基本操作 7.3 文件、目录权限管理 7.4 Linux中的硬盘 7.5 挂载文件系统 7.6 文件的归档压缩 7.7 磁盘配额管理
Linux基础与应用
7.1 Linux文件系统概述
从资源管理角度来看,操作系统是 计算机中软、硬件资源管理者。其中软 件资源管理部分称为文件系统,主要 负责信息的存储、检索、更新、共享 和保护。
Linux基础与应用
7.1.1 Linux文件
文件是操作系统用来存储文件信息的基本结构, 它是操作系统在分区上保存信息的方法和数据结构 。 Linux系统中的文件和Windows系统中的文件一 样,也包括文件名和扩展名。若文件名的第1个字符 为“.”,表示该文件为隐藏文件。Linux系统中文件 名是区分大小写的,而Windows中文件名字是保留 大小写但不区分。 使用“ls –l”命令显示文件列表时,共显示9个部 分,其中第一部分表示文件的类型和权限,而第1个 字符代表文件的类型, 可以为p、d、l、s、c、b和-, 各文件类型分别如下:
linux课件 第4章 linux文件系统管理
第4章文件系统管理4.1.1 Linux文件系统概述文件系统对于任何一种操作系统来说都是非常关键的。
Linux中的文件系统是Linux下所有文件和目录的集合。
Linux系统中把CPU、内存之外所有其他设备都抽象为文件处理。
文件系统的优劣与否和操作系统的效率、稳定性及可靠性密切相关。
从系统角度看,文件系统实现了对文件存储空间的组织和分配,并规定了如何访问存储在设备上的数据。
文件系统在逻辑上是独立的实体,它可以被操作系统管理和使用。
Linux系统自身的文件系统称为ext2,它是Linux默认的文件系统。
通常把ext2及Linux 支持的文件系统称为逻辑文件系统。
系统中所有的设备,包括字符设备、块设备和网络设备,都按照某种方式由逻辑文件系统统一管理。
一般不同的逻辑文件系统具有不同的组织结构和文件操作函数,相互之间差别很大。
Linux的内核使用了虚拟文件系统VFS(Virtual File System)技术,即在传统的逻辑文件系统的基础上,增加了一个称为虚拟文件系统的接口层,如图4-1所示。
虚拟文件系统用于管理各种逻辑文件系统,屏蔽了它们之间的差异,为用户命令、函数调用和内核其他部分提供访问文件和设备的统一接口,使得不同的逻辑文件系统按照同样的模式呈现在使用者面前。
对于普通用户来讲,觉察不到逻辑文件系统之间的差异,可以使用同样的命令来操作不同逻辑文件系统所管理的文件。
图4-1 Linux文件系统结构示意图从用户角度看,文件系统也是操作系统中最重要的组成部分。
因为Linux系统中所有的程序、库文件、系统和用户文件都存放在文件系统中,文件系统要对这些数据文件进行组织管理。
Linux下的文件系统主要可分为三大块:一是上层的文件系统的系统调用,二是虚拟文件系统VFS,三是挂载到VFS中的各种实际文件系统,例如ext2,jffs等。
VFS是一种软件机制,称它为Linux的文件系统管理者更确切,与它相关的数据结构只存在于物理内存当中。
Linux Fuse文件系统分析
Filesystem in Userspace一、Introduction:With FUSE it is possible to implement a fully functional filesystem in a userspace program. Features include:∙Simple library API∙Simple installation (no need to patch or recompile the kernel)∙Secure implementation∙Userspace - kernel interface is very efficient∙Usable by non privileged users∙Runs on Linux kernels 2.4.X and 2.6.X∙Has proven very stable over timeFUSE was originally developed to support AVFS but it has since became a separate project. Now quite a few other projects are usingit. Implementing a filesystem is simple, a hello world filesystem is less than a 100 lines long. Here's a sample session:~/fuse/example$ mkdir /tmp/fuse~/fuse/example$ ./hello /tmp/fuse~/fuse/example$ ls -l /tmp/fusetotal 0-r--r--r-- 1 root root 13 Jan 1 1970 hello~/fuse/example$ cat /tmp/fuse/helloHello World!~/fuse/example$ fusermount -u /tmp/fuse~/fuse/example$二、InstallationSome projects include the whole FUSE package (for simpler installation). In other cases or just to try out the examples FUSE must be installed first. The installation is simple, after unpacking enter:> ./configure> make> make installIf this produces an error, please read on.The configure script will try to guess the location of the kernel source. In case this fails, it may be specified usingthe --with-kernel parameter. Building the kernel module needs a configured kernel source tree matching the running kernel. If you build your own kernel this is no problem. On the other hand if a precompiled kernel is used, the kernel headers used by the FUSE build process must first be prepared. There are two possibilities:1. A package containing the kernel headers for the kernel binary isavailable in the distribution (e.g. on Debian it's thekernel-headers-X.Y.Z package for kernel-image-X.Y.Z)2.The kernel source must be prepared:o Extract the kernel source to some directoryo Copy the running kernel's config (usually found in/boot/config-X.Y.Z) to .config at the top of the source tree o Run make prepare三、hello.c代码分析四、Trying it outAfter installation, you can try out the filesystems inthe example directory. To see what is happening try addingthe -d option. This is the output produced by running cat /tmp/fuse/hello in another shell:~/fuse/example> ./hello /tmp/fuse -dunique: 2, opcode: LOOKUP (1), ino: 1, insize: 26LOOKUP /helloINO: 2unique: 2, error: 0 (Success), outsize: 72unique: 3, opcode: OPEN (14), ino: 2, insize: 24unique: 3, error: 0 (Success), outsize: 8unique: 4, opcode: READ (15), ino: 2, insize: 32READ 4096 bytes from 0READ 4096 bytesunique: 4, error: 0 (Success), outsize: 4104unique: 0, opcode: RELEASE (18), ino: 2, insize: 24More operations can be tried out with the fusexmp example filesystem. This just mirrors the root directory similarly to mount --bind / /mountpoint. This is not very useful in itself, but can be used as template for creating a new filesystem.By default FUSE filesystems run multi-threaded. This can be verified by entering the mountpoint recursively inthe fusexmp filesystem. Multi-threaded operation can be disabled by adding the -s option.Some options can be passed to the FUSE kernel module and the library. See the output of fusexmp -h for the list of these options. 五、How does it work?The following figure shows the path of a filesystem call (e.g. stat) in the above hello world example:The FUSE kernel module and the FUSE library communicate via a special file descriptor which is obtained by opening /dev/fuse. This file can be opened multiple times, and the obtained file descriptor is passed to the mount syscall, to match up the descriptor with the mounted filesystem. 5.1. The fuse library.When your user mode program calls fuse_main() (lib/helper.c),fuse_main() parses the arguments passed to your user mode program, then calls fuse_mount() (lib/mount.c). fuse_mount() creates a UNIX domain socket pair, then forks and execs fusermount (util/fusermount.c) passing it one end of the socket in the FUSE_COMMFD_ENV environment variable. fusermount (util/fusermount.c) makes sure that the fuse module is loaded. fusermount then open /dev/fuse and send the file handle over aUNIX domain socket back to fuse_mount().fuse_mount() returns the filehandle for /dev/fuse to fuse_main().fuse_main() calls fuse_new() (lib/fuse.c) which allocates the struct fuse datastructure that stores and maintains a cached image of the filesystem stly, fuse_main() calls either fuse_loop() (lib/fuse.c) orfuse_loop_mt() (lib/fuse_mt.c) which both start to read the filesystemsystem calls from the /dev/fuse, call the usermode functions stored in struct fuse_operations datastructure before calling fuse_main().The results of those calls are then written back to the /dev/fuse file where they can be forwarded back to the system calls.5.2. The kernel module.The kernel module consists of two parts. First the proc filesystem component in kernel/dev.c -and second the filesystem system callskernel/file.c, kernel/inode.c, and kernel/dir.cAll the system calls in kernel/file.c, kernel/inode.c, and kernel/dir.c make calls to either request_send(), request_send_noreply(), orrequest_send_nonblock(). Most of the calls (all but 2) are to request_send(). request_send() adds the request to, "list of requests" structure (fc->pending), then waits for a response. request_send_noreply() andrequest_send_nonblock() are both similar in function to request_send() except that one is non-blocking, and the other does not respond with a reply. The proc filesystem component in kernel/dev.c responds to file io requests to the file /dev/fuse. fuse_dev_read() handles the file reads and returns commands from the "list of requests" structure to the calling program.fuse_dev_write() handles file writes and takes the data written and places them into the req->out datastructure where they can be returned to the system call through the "list of requests" structure and request_send().。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2007 年12 月03 日在文件系统方面,Linux® 可以算得上操作系统中的“瑞士军刀”。
Linux 支持许多种文件系统,从日志型文件系统到集群文件系统和加密文件系统。
对于使用标准的和比较奇特的文件系统以及开发文件系统来说,Linux 是极好的平台。
本文讨论Linux 内核中的虚拟文件系统(VFS,有时候称为虚拟文件系统交换器),然后介绍将文件系统连接在一起的主要结构。
基本的文件系统体系结构Linux 文件系统体系结构是一个对复杂系统进行抽象化的有趣例子。
通过使用一组通用的API 函数,Linux 可以在许多种存储设备上支持许多种文件系统。
例如,read 函数调用可以从指定的文件描述符读取一定数量的字节。
read 函数不了解文件系统的类型,比如ext3 或NFS。
它也不了解文件系统所在的存储媒体,比如AT Attachment Packet Interface(ATAPI)磁盘、Serial-Attached SCSI(SAS)磁盘或Serial Advanced Technology Attachment(SATA)磁盘。
但是,当通过调用read 函数读取一个文件时,数据会正常返回。
本文讲解这个机制的实现方法并介绍Linux 文件系统层的主要结构。
什么是文件系统?首先回答最常见的问题,“什么是文件系统”。
文件系统是对一个存储设备上的数据和元数据进行组织的机制。
由于定义如此宽泛,支持它的代码会很有意思。
正如前面提到的,有许多种文件系统和媒体。
由于存在这么多类型,可以预料到Linux 文件系统接口实现为分层的体系结构,从而将用户接口层、文件系统实现和操作存储设备的驱动程序分隔开。
挂装在 Linux 中将一个文件系统与一个存储设备关联起来的过程称为挂装(mount )。
使用 mount 命令将一个文件系统附着到当前文件系统层次结构中(根)。
在执行挂装时,要提供文件系统类型、文件系统和一个挂装点。
为了说明 Linux 文件系统层的功能(以及挂装的方法),我们在当前文件系统的一个文件中创建一个文件系统。
实现的方法是,首先用 dd 命令创建一个指定大小的文件(使用 /dev/zero 作为源进行文件复制)—— 换句话说,一个用零进行初始化的文件,见清单 1。
清单 1. 创建一个经过初始化的文件现在有了一个 10MB 的 file.img 文件。
使用 losetup 命令将一个循环设备与这个文件关联起来,让它看起来像一个块设备,而不是文件系统中的常规文件:这个文件现在作为一个块设备出现(由 /dev/loop0 表示)。
然后用 mke2fs 在这个设备上创建一个文件系统。
这个命令创建一个指定大小的新的 ext2文件系统,见清单 2。
清单2. 用循环设备创建ext2 文件系统使用mount 命令将循环设备(/dev/loop0)所表示的file.img 文件挂装到挂装点/mnt/point1。
注意,文件系统类型指定为ext2。
挂装之后,就可以将这个挂装点当作一个新的文件系统,比如使用ls 命令,见清单3。
清单3. 创建挂装点并通过循环设备挂装文件系统如清单4 所示,还可以继续这个过程:在刚才挂装的文件系统中创建一个新文件,将它与一个循环设备关联起来,再在上面创建另一个文件系统。
清单4. 在循环文件系统中创建一个新的循环文件系统通过这个简单的演示很容易体会到Linux 文件系统(和循环设备)是多么强大。
可以按照相同的方法在文件上用循环设备创建加密的文件系统。
可以在需要时使用循环设备临时挂装文件,这有助于保护数据。
文件系统体系结构既然已经看到了文件系统的构造方法,现在就看看Linux 文件系统层的体系结构。
本文从两个角度考察Linux 文件系统。
首先采用高层体系结构的角度。
然后进行深层次讨论,介绍实现文件系统层的主要结构。
高层体系结构尽管大多数文件系统代码在内核中(后面讨论的用户空间文件系统除外),但是图1 所示的体系结构显示了用户空间和内核中与文件系统相关的主要组件之间的关系。
图1. Linux 文件系统组件的体系结构用户空间包含一些应用程序(例如,文件系统的使用者)和GNU C 库(glibc),它们为文件系统调用(打开、读取、写和关闭)提供用户接口。
系统调用接口的作用就像是交换器,它将系统调用从用户空间发送到内核空间中的适当端点。
VFS 是底层文件系统的主要接口。
这个组件导出一组接口,然后将它们抽象到各个文件系统,各个文件系统的行为可能差异很大。
有两个针对文件系统对象的缓存(inode 和dentry)。
它们缓存最近使用过的文件系统对象。
每个文件系统实现(比如ext2、JFS 等等)导出一组通用接口,供VFS 使用。
缓冲区缓存会缓存文件系统和相关块设备之间的请求。
例如,对底层设备驱动程序的读写请求会通过缓冲区缓存来传递。
这就允许在其中缓存请求,减少访问物理设备的次数,加快访问速度。
以最近使用(LRU)列表的形式管理缓冲区缓存。
注意,可以使用sync 命令将缓冲区缓存中的请求发送到存储媒体(迫使所有未写的数据发送到设备驱动程序,进而发送到存储设备)。
个子系统的主要结构。
主要结构Linux 以一组通用对象的角度看待所有文件系统。
这些对象是超级块(superblock)、inode、dentry 和文件。
超级块在每个文件系统的根上,超级块描述和维护文件系统的状态。
文件系统中管理的每个对象(文件或目录)在Linux 中表示为一个inode。
inode 包含管理文件系统中的对象所需的所有元数据(包括可以在对象上执行的操作)。
另一组结构称为dentry,它们用来实现名称和inode 之间的映射,有一个目录缓存用来保存最近使用的dentry。
dentry 还维护目录和文件之间的关系,从而支持在文件系统中移动。
最后,VFS文件表示一个打开的文件(保存打开的文件的状态,比如写偏移量等等)。
虚拟文件系统层VFS 作为文件系统接口的根层。
VFS 记录当前支持的文件系统以及当前挂装的文件系统。
可以使用一组注册函数在Linux 中动态地添加或删除文件系统。
内核保存当前支持的文件系统的列表,可以通过/proc 文件系统在用户空间中查看这个列表。
这个虚拟文件还显示当前与这些文件系统相关联的设备。
在Linux 中添加新文件系统的方法是调用register_filesystem。
这个函数的参数定义一个文件系统结构(file_system_type)的引用,这个结构定义文件系统的名称、一组属性和两个超级块函数。
也可以注销文件系统。
在注册新的文件系统时,会把这个文件系统和它的相关信息添加到file_systems 列表中(见图2 和linux/include/linux/mount.h)。
这个列表定义可以支持的文件系统。
在命令行上输入cat/proc/filesystems,就可以查看这个列表。
图2. 向内核注册的文件系统VFS 中维护的另一个结构是挂装的文件系统(见图3)。
这个结构提供当前挂装的文件系统(见linux/include/linux/fs.h)。
它链接下面讨论的超级块结构。
图3. 挂装的文件系统列表超级块超级块结构表示一个文件系统。
它包含管理文件系统所需的信息,包括文件系统名称(比如ext2)、文件系统的大小和状态、块设备的引用和元数据信息(比如空闲列表等等)。
超级块通常存储在存储媒体上,但是如果超级块不存在,也可以实时创建它。
可以在 ./linux/include/linux/fs.h 中找到超级块结构(见图4)。
图4. 超级块结构和inode 操作超级块中的一个重要元素是超级块操作的定义。
这个结构定义一组用来管理这个文件系统中的inode 的函数。
例如,可以用alloc_inode 分配inode,用destroy_inode 删除inode。
可以用read_inode 和write_inode 读写inode,用sync_fs 执行文件系统同步。
可以在 ./linux/include/linux/fs.h 中找到super_operations 结构。
每个文件系统提供自己的inode 方法,这些方法实现操作并向VFS 层提供通用的抽象。
inode 和dentryinode 表示文件系统中的一个对象,它具有惟一标识符。
各个文件系统提供将文件名映射为惟一inode 标识符和inode 引用的方法。
图5 显示inode 结构的一部分以及两个相关结构。
请特别注意inode_operations 和file_operations。
这些结构表示可以在这个inode 上执行的操作。
inode_operations 定义直接在inode 上执行的操作,而file_operations 定义与文件和目录相关的方法(标准系统调用)。
图5. inode 结构和相关联的操作inode 和目录缓存分别保存最近使用的inode 和dentry。
注意,对于inode 缓存中的每个inode,在目录缓存中都有一个对应的dentry。
可以在 ./linux/include/linux/fs.h 中找到inode 和dentry 结构。
缓冲区缓存除了各个文件系统实现(可以在 ./linux/fs 中找到)之外,文件系统层的底部是缓冲区缓存。
这个组件跟踪来自文件系统实现和物理设备(通过设备驱动程序)的读写请求。
为了提高效率,Linux 对请求进行缓存,避免将所有请求发送到物理设备。
缓存中缓存最近使用的缓冲区(页面),这些缓冲区可以快速提供给各个文件系统。
有趣的文件系统本文没有讨论Linux 中可用的具体文件系统,但是值得在这里稍微提一下。
Linux 支持许多种文件系统,包括MINIX、MS-DOS 和ext2 等老式文件系统。
Linux 还支持ext3、JFS 和ReiserFS 等新的日志型文件系统。
另外,Linux 支持加密文件系统(比如CFS)和虚拟文件系统(比如/proc)。
最后一种值得注意的文件系统是Filesystem in Userspace(FUSE)。
这种文件系统可以将文件系统请求通过VFS 发送回用户空间。
所以,如果您有兴趣创建自己的文件系统,那么通过使用FUSE 进行开发是一种不错的方法。