首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Linux 虚拟文件系统

虚拟文件系统介绍 Linux使用了虚拟文件系统(VFS,Virtual Filesystem,下文统称“虚拟文件系统”),它不是磁盘文件的组织格式,而是抽象出来的文件树的集合,它通过标准接口动态的向其中增加或移除对应的目录...虚拟文件系统支持以下归类的三种类型的文件系统: 磁盘文件系统,存储在本地磁盘、U盘、CDROM等的文件系统,它包含各种不同的文件系统格式,比如Windows NTFS、VFAT,BSD的UFS,CD的CD-ROM...vfs.png 虚拟文件系统对象类型 虚拟文件系统,有四个主要对象类型: Superblock 表示特定加载的文件系统 Inode 表示特定的文件 Dentry 表示一个目录项,路径的一个组成部分...这个对象对应为文件系统超级块或者文件系统控制块,它存储在磁盘特定的扇区上。不是基于磁盘的文件系统临时生成超级块,并保存在内存中。 Inode 索引节点对象包含了内核在操作文件或目录时需要的全部信息。...在路径中, 包括普通文件在内,每一个部分都是目录项对象。 File 虚拟文件系统最后一个主要对象是文件对象,文件对象表示进程已打开的文件。

1.5K51

Linux虚拟文件系统初探

Linux内核使用工厂的设计模式抽象出实际文件系统统一接口,这个就是虚拟文件系统(VFS),根据应用程序调用虚拟文件系统接口,根据不同的文件系统类型(xfs/zfs/ext4)来调用实际文件系统的接口...VFS自身仅仅存在于内存,VFS自身定义了几个重要的数据结构:inode、dentry、super_block,通过这几个重要的结构将真实硬盘的文件系统抽象到内存,通过dentry、inode这几个对象来进行文件的读写操作...// linux 5.4.85/include/linux/fs.h 取出super_block核心字段 struct super_block { // 文件系统块大小 unsigned long...文件系统中的dentry就是反应这里的树状关系 在linux中每个文件都有一个dentry,这个dentry链接到上层目录的dentry.根目录有一个dentry结构,根目录中的文件和目录的dentry...对于一个文件查找一般先查找dentry cache中进行 // linux 5.4.85/include/linux/dcache.h 取出dentry核心字段 struct dentry { //

72220
您找到你想要的搜索结果了吗?
是的
没有找到

细说|Linux虚拟文件系统原理

虚拟文件系统简介 为了实现 一切对象皆是文件 这个目标,Linux 内核提供了一个中间层:虚拟文件系统(Virtual File System)。...如果大家使用过面向对象编程语言(如C++/Java等)的话,应该对 接口 这个概念并不陌生。而虚拟文件系统类似于面向对象中的接口,定义了一套标准的接口。...虚拟文件系统原理 上面的 Java 例子已经大概说明虚拟文件系统的原理,但由于 Linux 是使用 C 语言来编写的,而 C 语言并没有接口这个概念。...return f; } 总结 本文主要介绍了 虚拟文件系统 的基本原理,从分析中可以发现,虚拟文件系统使用了类似于面向对象编程语言中的接口概念。...正是有了 虚拟文件系统Linux 才能支持各种各样的文件系统

1.2K10

虚拟文件系统

这样的好处是,用户不用关心使用了什么文件系统,只需要使用统一的方式去处理文件即可。那么Linux是如何做到的呢?这就得益于 虚拟文件系统(Virtual File System,简称 VFS)。...虚拟文件系统 为不同的文件系统定义了一套规范,各个文件系统必须按照 虚拟文件系统的规范 编写才能接入到 虚拟文件系统中。...虚拟文件系统抽象数据结构 Linux奉行了Unix的理念:一切皆文件,比如一个目录是一个文件,一个设备也是一个文件等,因而文件系统Linux中占有非常重要的地位。...虚拟文件系统的实现 接下来我们分析一下虚拟文件系统的实现。...注册文件系统 Linux为了支持不同的文件系统而创造了虚拟文件系统虚拟文件系统更像一个规范(或者说接口),真实的文件系统需要实现虚拟文件系统的规范(接口)才能接入到Linux内核中。

1.5K30

Linux内核设备驱动之虚拟文件系统笔记整理

/******************** * 虚拟文件系统VFS ********************/ (1)VFS介绍 虚拟文件系统VFS作为内核的子系统,为用户空间程序提供了文件系统的相关接口...这些结构体在包含数据的同时也包含了操作这些数据的指针。 VFS中包括了四个主要的对象类型。...对于不基于磁盘的文件系统,比如基于内存的文件系统sysfs,linux会在使用现场创建超级块并将其保存到内存中。 超级块的结构体为super_block,定义在。...b.索引节点对象inode 索引节点对象包含了内核在操作文件或目录是需要的全部信息,如文件的访问控制权限,大小,拥有者,创建时间等。 系统把这些信息存储在一个单独的数据结构中,称为索引节点。...文件对象由file结构体表示,定义在中。file对象的操作函数结构体为file_operations,定义在中。

2.1K20

从 lsof 开始,深入理解Linux虚拟文件系统

要了解这些,就要先弄清楚并不容易,下面将从一些基本概念入手,一步步将这些梳理清楚: 什么是虚拟文件系统(VFS:virtual filesystem)? 什么是通用文件模型?...磁盘表达 目录树的构建 软链接 vs 硬链接 文件 & 磁盘管理 索引节点状态 文件 & 进程管理 操作:打开&删除 虚拟文件系统(virtual filesystem) 下图显示了 Linux 操作系统中负责文件管理的基本组件...图片 所有与文件相关的操作的入口都是虚拟文件系统(VFS),而非特定的额文件系统(如Ext3、ReiserFS和NFS)。VFS 提供了系统库和特定文件系统之间的接口。...目录树 综合来说,Linux 的 根文件系统(system’s root filessystem) 是内核启动mount的第一个文件系统。...那么,删除操作即可理解为: 删除命令(一个进程)使用 open 操作获得父目录文件对象 通过 iget 增加 目录文件的索引节点对象计数 读取目录文件数据 将目录文件数据转化为目录项对象 由于目录项包含文件的索引节点

38310

从 lsof 开始,深入理解 Linux 虚拟文件系统

虚拟文件系统(virtual filesystem) 下图显示了Linux操作系统中负责文件管理的基本组件。上半区域为用户模式,下半区域为内核模式。...所有与文件相关的操作的入口都是虚拟文件系统(VFS),而非特定的额文件系统(如Ext3、ReiserFS和NFS)。VFS 提供了系统库和特定文件系统之间的接口。...通用文件模型由以下对象类型组成: 超级块对象(superblock object) 内存:文件系统安装时创建,存放文件系统的有关信息 磁盘:对应于存放在磁盘上的文件系统控制块(filesystem control...目录树 综合来说,Linux 的 根文件系统(system's root filessystem) 是内核启动mount的第一个文件系统。...那么,删除操作即可理解为: 1、删除命令(一个进程)使用open操作获得父目录文件对象 2、通过iget增加 目录文件的索引节点对象计数 3、读取目录文件数据 将目录文件数据转化为目录项对象 由于目录项包含文件的索引节点

1.2K40

Windows、Linux、Apple三大操作系统的主流文件系统包含哪些?

关于这两个片段的信息作为其组成部分存储在文件系统中。 除了用户的数据,文件系统包含自己的 参数 (如块大小)、 文件描述符 (包括其大小、位置、片段等)、 名称 和 目录层次结构。...Linux文件系统 [202203231609015.png] 开源 Linux 旨在实现、测试和使用不同类型的文件系统。...Linux 最流行的格式包括: Ext Ext2、Ext3、Ext4 只是 “本机” Linux Ext 文件系统的不同版本。这种类型属于积极的发展和改进。...一个文件对象可以 从多个位置链接,甚至可以从同一个目录以不同的名称相乘。这可能导致文件删除或逻辑损坏后文件名恢复的严重甚至无法克服的困难。...VMFS – VMware 公司为其 VMware ESX Server 开发的“虚拟文件系统”。 G****FS – Red Hat Linux“全球文件系统”。

2K20

虚拟文件系统源码解析之open(基于linux1.2.13)

我们看看open在虚拟文件系统中大致的执行过程。不会分析具体的过程。主要分析一下虚拟文件系统的实现原理。...(inode->i_op) f->f_op = inode->i_op->default_file_ops; if (f->f_op && f->f_op->open) { // 调用底层文件系统的...在虚拟文件系统中,超级块、inode、目录、文件都是一个抽象的概念,具体的操作函数由各个文件系统实现。所以我们首先找到一个结构体,然后根据实际的操作值调用具体文件系统的操作函数就行。...return dir->i_op->lookup(dir,name,len,result); 以ext文件系统为例。看看lookup的实现。...一般文件系统没有实现open函数。所以直接返回inode,建立fd到file到inode的关系即可。后面对文件的操作也是通过inode节点的操作函数集进行。

70210

linux文件系统

Linux是一个基于Unix的操作系统,具有强大的文件系统功能。Linux文件系统是在硬盘上组织和存储数据的一种结构,通过文件系统可以管理文件、目录、权限等信息。...在Linux中,文件系统被组织成一个树形结构,称为文件系统层次结构(Filesystem Hierarchy Standard,FHS),该标准规定了Linux操作系统中各级目录的名称和用途,使得Linux...根目录 根目录(/)是Linux文件系统中的最顶层目录,所有其他的目录和文件都是从根目录开始构建的。在根目录下可以存放各种文件和目录,如用户目录、系统文件、配置文件等。.../proc /proc目录是Linux系统中一个特殊的目录,用于提供进程和系统信息的虚拟文件系统。.../mnt /mnt目录是Linux系统中用于挂载文件系统的目录,通过挂载可以将其他文件系统的内容挂载到/mnt目录下,使得这些文件系统可以被访问。

8.7K00

Linux文件系统

Super Block:超级块对象,保存的是整个文件系统的信息。 如果想清空哪个盘里面的所有数据内容,其实就相当于重写文件系统。一个磁盘,第一步是分区,第二部就是格式化,也就是写入文件系统。...inode与数据块 文件 = 内容 + 属性 Linux中,文件的属性和内容是分批存储的。 保存文件属性的叫inode块:具体大小跟文件系统的版本有关,我的是ext3,128字节。...inode是固定大小,一个文件对应一个inode(硬链接除外,下面会说),里面包含了一个文件几乎所有的属性。注意,文件名并不在里面! inode为了区分彼此,每一个都有自己的ID。...静态库在程序进入内存之前就被拷贝进了我们的程序内部,进入内存,在虚拟地址空间中也是在代码区里面,这样是很浪费空间的。...如果有很多个进程,那么内存当中也只需要加载这一个库就够了,因为每个进程操作系统都会帮助我们去映射对应库再虚拟地址空间的位置。

12.6K00

Linux文件系统

Linux文件系统Linux系统中所有的设备都统称为文件,所以同样必须要去学习下linux文件系统到底是何物??? 进入系统后我们使用命令ls -ll 就可以查看根目录下所有文件的信息 ?...二进制文件:linux中可执行文件(命令) ? 数据格式文件(一种特殊的文件 data) ? 2、d目录文件 ls -ld 可以显示所有目录文件 3、b块设备文件 ?...二:文件的扩展名 同样linux系统中的文件也有扩展名,不过意义不大,只是为了区分不同的文件 linux中常见的扩展名类型有以下几种: 1、.tar .tar.gz .tgz .zip 这类表示压缩文件...Inode:索引节点,linux中存储设备或分区被格式化为文件系统后,一般都会分成二个部分,第一部分就是inode,第二部分为block,inode存储的是文件的属性信息,我们可以使用ls -i查看Inode

9.7K40

linux文件系统

透明的文件名和路径:在 Linux 文件系统中,文件名和路径是透明的,不需要使用特殊的命令或语法来访问它们。文件名是一个字符串,可以包含字母、数字、特殊字符等。路径是一组目录名,使用斜杠(/)分隔。...虚拟文件系统Linux 文件系统使用虚拟文件系统(VFS)层,将不同类型的文件系统抽象为一个通用的文件系统接口,使得用户可以以相同的方式访问不同的文件系统。...以下是 Linux 文件系统层次结构中的一些重要目录:/bin:包含一些常用的命令和二进制文件,如ls、cp、rm等。/boot:包含 Linux 内核和启动时需要用到的文件。.../lib:包含系统库文件,是程序运行所必需的。/mnt:用于挂载外部存储设备,如U盘、光驱等。/opt:用于安装第三方软件,如Java、MySQL等。/proc:包含内核和进程信息的虚拟文件系统。.../var:包含系统和应用程序的变量文件,如日志文件、缓存文件等。Linux 文件系统层次结构的设计使得不同的文件和目录可以被组织成一个树形结构,从而方便用户和程序员查找和管理文件。

8.6K40

linux文件系统

Linux 文件系统 操作系统中,用来管理和存储文件信息的软件机构称为文件管理系统,简称文件系统。...HFS(+) 苹果电脑上的文件系统Linux里的文件系统 不同于Windows系统有盘符的概念(C盘、D盘等),Linux里只有一个盘符,是从 " / " 开始的,只有它是没有上级目录的。...目录 说明 / 系统的根目录 /bin 包含了一些二进制文件,即可执行文件。我们在命令行里执行的指令,例如 ls,rm,cp,mv等,其实都是执行的这个目录里的二进制文件。.../media Linux系统自动识别的一些设备,比如U盘、光驱等,当识别后,linux会把识别的设备挂载到这个目录下。...比如你安装一个ORACLE数据库就可以把它放到这个目录下 /proc 虚拟目录,它是系统内存的映射,可以通过直接访问这个目录来获取系统信息。

7.3K30

DragonOS虚拟文件系统概述

本文已基于GPLv2协议发布在https://docs.dragonos.org/zh_CN/latest/kernel/filesystem/vfs/overview.html 简介   DragonOS的虚拟文件系统是内核中的一层适配器...dentry对象包含了指向inode的指针。   ...一般来说,每个dentry都应当包含指向其inode的指针。inode是VFS提供的对文件对象的抽象。inode中的信息是从具体文件系统中读取而来,也可以被刷回具体的文件系统之中。...每个文件对象都会绑定文件的dentry和文件操作方法结构体,还有文件对象的私有信息。   文件描述符对象中还包含了诸如权限控制、当前访问位置信息等内容,以便VFS对文件进行操作。   ...请注意,传递给create()函数的dest_dEntry参数不应包含一个inode,也就是说,inode对象应当被具体文件系统所创建。

41920

揭开虚拟文件系统的云雾之多文件系统是如何运作的(基于linux1.2.13)

由之前的分析中我们知道,挂载根文件系统后,系统里存在根文件系统的超级块和一个根节点inode。并设置了init进程的工作目录和当前目录为根节点。...分析多文件系统的运作。看看虚拟文件系统在抹平各个文件系统的差异后,又是如何决定使用哪个文件系统的。...我们去看iget的实现,这是实现跨文件系统的关键。看到这个我们就知道操作系统是如何协调多个文件系统运作的了。...在看这个函数之前,我们要先看一个东西,那就是在根文件系统中挂载其他文件系统的实现。在根文件系统中挂载其他文件系统是通过sys_mount函数实现的。这个函数调用了do_mount函数实现挂载。...挂载文件系统主要有三个参数 需要挂载的设备 挂载点 文件系统类型 下面看看sys_mount的主要代码。

58010

​聊聊内核虚拟文件系统

什么是虚拟文件系统?...linux会实现多种基于磁盘的文件系统,比如ext4/xfs等,为了支持不同的磁盘文件系统,且多个磁盘文件系统互相访问,Linux内核在用户进程和磁盘文件系统系统之间引入一个臭小抽象层,这个就是虚拟文件系统...虚拟文件(vfs)系统有什么作用? vfs一方面用来提供操作文件、目录以及其他对象的统一方法;另外一方面,它必须能够与各种给出具体磁盘文件系统的实现达成妥协。 文件系统分为哪些类型?...目前文件系统基本可以分为三类,第一类是基于磁盘的文件系统,例如xfs.第二类是内核虚拟文件系统,是一种使用应用程序与用户进程通信的方法,内核的proc文件系统就是典型实现;第三种是网络文件系统,计算机通过网络连接到本地计算机...const struct dentry_operations *d_op; // dentry对象所属文件系统超级块的实例 struct super_block *d_sb; // 实际文件系统的私有数据

72010

Linux 文件系统详解

大多数 Linux 发行版都会向你显示与你在上图中看到的相同或非常类似的结构。 这意味着,即使你现在感到困惑,掌握这一点,你将掌握大部分(如果不是全部的话)全世界的 Linux 文件系统。.../proc /proc,就像 /dev 是一个虚拟目录。它包含有关你的计算机的信息,例如关于你的 CPU 和你的 Linux 系统正在运行的内核的信息。.../sys /sys 是另一个类似 /proc 和 /dev 的虚拟目录,它还包含连接到计算机的设备的信息。 在某些情况下,你还可以操纵这些设备。...今天,它有点用词不当,因为还有许多其他目录也包含频繁更改的数据,特别是我们上面看到的虚拟目录。 不管怎样,/var 目录包含了放在 /var/log 子目录的日志文件之类。...总结 尽管 Linux 发行版之间存在细微差别,但它们的文件系统的布局非常相似。 你可以这么说:一旦你了解一个,你就会都了解了。 了解文件系统的最好方法就是探索它。

7.3K31
领券