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

Linux 虚拟文件系统

虚拟文件系统介绍 Linux使用了虚拟文件系统(VFS,Virtual Filesystem,下文统称“虚拟文件系统”),它不是磁盘文件组织格式,而是抽象出来文件树集合,它通过标准接口动态向其中增加或移除对应目录...虚拟文件系统支持以下归类三种类型文件系统: 磁盘文件系统,存储在本地磁盘、U盘、CDROM等文件系统,它包含各种不同文件系统格式,比如Windows NTFS、VFAT,BSDUFS,CDCD-ROM...等 网络文件系统,它们存储在网络中其他主机上,通过网络进行访问,例如 NFS 特殊文件系统,内存映射、例如/proc 案例如以下截图,Linux进程通过Sytem Calls(系统调用)将数据经过...vfs.png 虚拟文件系统对象类型 虚拟文件系统,有四个主要对象类型: Superblock 表示特定加载文件系统 Inode 表示特定文件 Dentry 表示一个目录项,路径一个组成部分...File 虚拟文件系统最后一个主要对象是文件对象,文件对象表示进程已打开文件。如果我们站在用户空间角度考虑虚拟文件系统 ,文件对象会首先进入我们视野。

1.6K51

Linux虚拟文件系统初探

Linux内核使用工厂设计模式抽象出实际文件系统统一接口,这个就是虚拟文件系统(VFS),根据应用程序调用虚拟文件系统接口,根据不同文件系统类型(xfs/zfs/ext4)来调用实际文件系统接口...超级块内容需要读取具体文件系统在磁盘上超级块获得,因此超级块是具体文件系统超级块内存抽象,所以如果磁盘上超级块坏了,文件系统就坏了。...// linux 5.4.85/include/linux/fs.h 取出super_block核心字段 struct super_block { // 文件系统块大小 unsigned long...文件系统dentry就是反应这里树状关系 在linux中每个文件都有一个dentry,这个dentry链接到上层目录dentry.根目录有一个dentry结构,根目录中文件和目录dentry...// linux 5.4.85/include/linux/fs.h 取出inode核心字段 struct inode { // 文件权限信息 umode_t i_mode; // 操作文件

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

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

虚拟文件系统简介 为了实现 一切对象皆是文件 这个目标,Linux 内核提供了一个中间层:虚拟文件系统(Virtual File System)。...而虚拟文件系统类似于面向对象中接口,定义了一套标准接口。开发者只需要实现这套接口,即可以使用操作文件接口来操作对象。如下图所示: 上图中蓝色部分就是虚拟文件系统所在位置。...今天,我们就来介绍虚拟文件系统原理与实现。 虚拟文件系统原理 在阐述虚拟文件系统原理前,我们先来介绍一个 Java 例子。通过这个 Java 例子,我们能够更容易理解虚拟文件系统原理。...虚拟文件系统原理 上面的 Java 例子已经大概说明虚拟文件系统原理,但由于 Linux 是使用 C 语言来编写,而 C 语言并没有接口这个概念。...正是有了 虚拟文件系统Linux 才能支持各种各样文件系统

1.3K10

虚拟文件系统

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

1.5K30

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

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

61010

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

/******************** * 虚拟文件系统VFS ********************/ (1)VFS介绍 虚拟文件系统VFS作为内核子系统,为用户空间程序提供了文件系统相关接口...VFS使得用户可以直接使用open()等系统调用而无需考虑具体文件系统和实际物理介质。 VFS提供了一个通用文件系统模型,该模型囊括了我们所能想到文件系统常用功能和行为。...对于不基于磁盘文件系统,比如基于内存文件系统sysfs,linux会在使用现场创建超级块并将其保存到内存中。 超级块结构体为super_block,定义在。...dentry结构体定义在中,对应目录项操作函数结构体dentry_operations也定义在中。...文件对象由file结构体表示,定义在中。file对象操作函数结构体为file_operations,定义在中。

2.1K20

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

虚拟文件系统(virtual filesystem) 下图显示了Linux操作系统中负责文件管理基本组件。上半区域为用户模式,下半区域为内核模式。...所有与文件相关操作入口都是虚拟文件系统(VFS),而非特定文件系统(如Ext3、ReiserFS和NFS)。VFS 提供了系统库和特定文件系统之间接口。...目录树 综合来说,Linux 文件系统(system's root filessystem) 是内核启动mount第一个文件系统。...其他文件系统,则后续通过脚本或命令作为子文件系统安装在已安装文件系统目录上,最终形成整个目录树。...索引节点数据又由两部分组成:内存数据和磁盘数据。Linux 使用Write back作为索引节点数据一致性策略。

1.3K40

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

要了解这些,就要先弄清楚并不容易,下面将从一些基本概念入手,一步步将这些梳理清楚: 什么是虚拟文件系统(VFS:virtual filesystem)? 什么是通用文件模型?...磁盘表达 目录树构建 软链接 vs 硬链接 文件 & 磁盘管理 索引节点状态 文件 & 进程管理 操作:打开&删除 虚拟文件系统(virtual filesystem) 下图显示了 Linux 操作系统中负责文件管理基本组件...图片 所有与文件相关操作入口都是虚拟文件系统(VFS),而非特定文件系统(如Ext3、ReiserFS和NFS)。VFS 提供了系统库和特定文件系统之间接口。...目录树 综合来说,Linux 文件系统(system’s root filessystem) 是内核启动mount第一个文件系统。...图片 索引节点数据又由两部分组成:内存数据和磁盘数据。Linux 使用 Write back 作为索引节点数据一致性策略。

41110

Linux文件系统实现

比如cat可以打开文件,读取数据,最后在终端显示: $cat test.txt 对于Linux程序员来说,了解文件系统底层组织方式,是深入进行系统编程所必备。...即使是普通Linux用户,也可以根据相关内容,设计出更好系统维护方案。 存储设备分区 文件系统最终目的是把大量数据有组织放入持久性(persistant)存储设备中,比如硬盘和磁盘。...在硬盘上实现这一分级结构关键,是使用inode来虚拟普通文件和目录文件对象。 在Linux文件管理中,我们知道,一个文件除了自身数据之外,还有一个附属信息,即文件元数据(metadata)。...要注意是进程fork之后情况,子进程将只复制文件描述符数组,而和父进程共享内核维护文件表格和inode。此时要特别小心程序编写。 总结 这里概括性总结了Linux文件系统。...Linux以inode方式,让数据形成文件。 了解Linux文件系统,是深入了解操作系Linux原理重要一步。

1.7K60

Linuxproc文件系统

proc,用户空间和内核空间能够通过该接口通信, 与普通文件不同是。这些虚拟文件内容都是动态创建。 proc文件系统是一个伪文件系统,它仅仅存在内存其中,而不占用外存空间。...它以文件系统方式为訪问系统内核数据操作提供接口。用户和应用程序 能够通过 proc得到系统信息。并能够改变内核某些參数。 proc 文件系统能够被用于收集实用关于系统和执行中内核信息。...对此文件系统訪问同一般文件同样。...内核运行上下文转换次数 cat /proc/stat|grep ctxt|awk'{print $2}’ 6.系统创建进程数 cat /proc/stat|grep processes|awk...'{print $2}’ 7.当前可用内存数量 cat /proc/meminfo|grep MemFree 版权声明:本文博客原创文章。

2.8K10

Linux文件系统(3)

本章学习目标: 掌握Linux下文件目录属性 掌握Linux权限管理 掌握如何切换用户身份及权限委派 3.1文件系统简介 文件系统(File system)泛指储存在计算机上文件和目录。...3.2 linux支持文件系统类型 目前比较流行操作系统是Windows和Linux。Windows常用分区格式有三种,分别是FAT16、FAT32、NTFS格式。...3.2.2 Linux文件系统介绍 一、Ext2 Ext2是GNU/Linux系统中标准文件系统。...三、Linux swap 它是Linux中一种专门用于交换分区swap文件系统Linux是使用这一整个分区作为交换空间。一般这个swap格式交换分区是主内存2倍。...Red Hat Linux根据文件系统层次标准(FHS)将文件组织成目录: / 根目录。所有其他目录都在文件系统层次根目录之下。换句话说,它们是子目录。

3K30

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

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

72910

linux文件系统

目录 c语言文件操作: linux文件系统调用: open: 标志位传参: 虚拟文件系统: write: close: 跨平台性: c语言文件操作: 先来简单回顾一下c语言文件操作,...linux文件系统调用: 在linux中,我们还可以使用系统调用来对文件进行修改,我们来认识几个系统调用接口: open: 我们先在linux下查一下这个函数系统调用手册...虚拟文件系统: 回到open函数,可以注意到之前代码,open函数有一个返回值,这个返回值是这个文件文件标识符,一个进程,可能会打开很多文件,当一个文件被打开会创建一个struct files来描述这个文件...这套文件系统被称为虚拟文件系统 。 所以我们操作系统在对文件进行操作时,只认文件描述符fd!!! write: 这里传fd作用,想必不需要我多讲了,这个函数功能应该很明了了。...主要是为了提高代码可移植性,跨平台性,在linux系统调用是open,可能在windows里面的系统调用又不一样,所以c语言不得不这么做,而且c语言fopen等函数里面一定封装了linux系统调用

9410

linux文件系统

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

8.8K00

Linux文件系统

(如何管理磁盘文件) 5.1 了解文件系统 有了上面的线性大地址,我们就可以开始构建出文件系统了。...文件在磁盘中存储,本质是储存文件内容与文件属性数据。在每个分区内部分组,然后写入文件系统管理数据,称之为格式化!!! Linux 文件系统特定: 文件属性 与 文件内容 分开存储。...接下来我们来研究文件系统: 每个组里有这些部分: Block Group(占据空间最大一部分):每个Block Group都有着相同结构组成。...inode 表 : 存放文件属性 如 文件大小,所有者,最近修改时间等 Linux中文件属性是大小固定集合体(一般固定128字节) 不包含文件名,但是都有inode_number,通过inode号来标识一个文件...而Linux系统会进行路径缓存,来方便我们寻找工作。 我们一般使用云服务器会有一个虚拟磁盘vda,系统中会有许多分区。

9510

Linux文件系统实现

比如cat可以打开文件,读取数据,最后在终端显示: $cat test.txt 对于Linux程序员来说,了解文件系统底层组织方式,是深入进行系统编程所必备。...即使是普通Linux用户,也可以根据相关内容,设计出更好系统维护方案。 存储设备分区 文件系统最终目的是把大量数据有组织放入持久性(persistant)存储设备中,比如硬盘和磁盘。...在硬盘上实现这一分级结构关键,是使用inode来虚拟普通文件和目录文件对象。 在Linux文件管理中,我们知道,一个文件除了自身数据之外,还有一个附属信息,即文件元数据(metadata)。...要注意是进程fork之后情况,子进程将只复制文件描述符数组,而和父进程共享内核维护文件表格和inode。此时要特别小心程序编写。 总结 这里概括性总结了Linux文件系统。...Linux以inode方式,让数据形成文件。 了解Linux文件系统,是深入了解操作系Linux原理重要一步。

2.7K50

常见linux文件系统

文件系统: 它们不是世界上最激动人心技术,但是仍然很重要。本文我们将细数那些流行 Linux 文件系统 - 它们是什么,它们能够做什么,以及它们目标用户。...BtrFSB 树(B-tree)文件系统 (也被当做是 butterFS,黄油文件系统) 是 Oracle 为 Linux 研发一款文件系统。它是一个全新文件系统,而且正处于主要开发阶段。...Linux 社区认为其有时候使用上还有些不稳定。BtrFS 核心原则是围绕着写时复制copy-on-write原则展开。写时复制基本上意味着在写入数据完成前,这份数据每一比特都有单独一份副本。...目标用户:BtrFS 开发者们许诺过,该文件系统是当前其他文件系统新一代替代者。非常正确,虽然目前其处于开发中。...结论Linux 上有许多可用文件系统。每个文件系统都有其特定用途,以便于特定用户解决不同问题。本文焦点集中在 Linux 平台上文件系统主流选择。毫无疑问,其它场景下还有一些别的选择。

1.8K40

linux 文件系统 (3)

接下来我们就在分区上创建文件系统linux 下用 mkfs 来创建文件系统          用法 : mkfs  -t  文件系统类型  设备名称    创建 ext3 文件系统 ?  ...创建 FAT32 文件系统Linux 把  FAT32 识别为 vfat ) ? 下面重点讲一下 专门管理 ext 系列文件  mke2fs .   ...(详情请自行  man  mke2fs)    mke2fs  命令常用选项如下所示: -t : 用来指定文件系统类型,可以是 ext2 , ext3 ,也可以是 ext4 。                      ...创建一个 ext3 文件系统 ,块大小为 4096,并且预留给超级用户块数百分比为 3 ? 接下来说一下  blkid  命令这个命令可以查看设备相关属性。   ...fsck : 检查并修复 linux  文件系统类型     -t  :   FILESYSTEM     -a :    自动修复(不询问自动完成修复) e2fsck :  专门修复 ext2 ext3

1.8K10

Linux文件系统

文件系统 磁盘 磁盘物理结构 磁盘储存结构 磁盘逻辑结构 文件系统 分治 inode与数据块 软硬链接 什么是软硬连接 文件与引用计数 文件三大时间 动静态库 什么是库 库使用 静态库...如果想清空哪个盘里面的所有数据内容,其实就相当于重写文件系统。一个磁盘,第一步是分区,第二部就是格式化,也就是写入文件系统文件系统信息有分区使用状态,分区每个组状态和信息。...inode与数据块 文件 = 内容 + 属性 Linux中,文件属性和内容是分批存储。 保存文件属性叫inode块:具体大小跟文件系统版本有关,我是ext3,128字节。...未来这部分代码通过相对确定地址位置来进行访问。 静态库在程序进入内存之前就被拷贝进了我们程序内部,进入内存,在虚拟地址空间中也是在代码区里面,这样是很浪费空间。...如果有很多个进程,那么内存当中也只需要加载这一个库就够了,因为每个进程操作系统都会帮助我们去映射对应库再虚拟地址空间位置。

12.6K00
领券