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

深入理解Linux VFS和Page Cache

编者注:在分析完 Linux inode 基础概念 之后,让我们看下inode在内存中对应文件系统抽象VFS,然后分析下关于 磁盘操作 中Page Cache回写策略。...VFS(虚拟文件系统层) VFS是虚拟文件系统层(进程与文件系统之间抽象层),与它相关数据结构只存在于物理内存当中。...其目的是屏蔽下层具体文件系统操作差异,为上层操作提供一个统一接口,正是由于VFS存在,Linux中允许多个不同文件系统共存。...VFS中包含着向物理文件系统转换一系列数据结构,如VFS超级块、VFSInode、各种操作函数转换入口等。...LinuxVFS依靠四个主要数据结构来描述其结构信息,分别为超级块、索引结点、目录项和文件对象,这些数据结构大都会与磁盘上对应上。 超级块(Super Block):超级块对象表示一个文件系统。

3K21

解析LinuxVFS文件系统之文件系统注册(二)

文件系统注册 这里文件系统是指可能会被挂载到目录树中各个实际文件系统,所谓实际文件系统,即是指VFS实际操作最终要通过它们来完成而已,并不意味着它们一定要存在于某种特定存储设备上。...比如在笔者 Linux 机器下就注册有 "rootfs"、"proc"、"ext2"、"sockfs" 等十几种文件系统。...3.1 文件系统数据结构 在 Linux 源代码中,每种实际文件系统用以下数据结构表示(include/linux/fs.h): 1 struct file_system_type { 2...,之所以单独介绍 rootfs 文件系统注册过程,实在是因为该文件系统 VFS 关系太过密切,如果说 ext2/ext3 是 Linux 本土文件系统,那么 rootfs 文件系统则是 VFS 存在基础...),但是 rootfs 注册却是通过 init_rootfs() 这一初始化函数来完成,这意味着 rootfs 注册过程是 Linux 内核初始化阶段不可分割一部分。

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

解析LinuxVFS文件系统之文件系统来源与简介(一)

最近挂载了N多文件系统,大致了不同文件系统相应特性及挂载方式,却还是对Linux文件系统没有从源码方面去了解。不求甚解确实不好不好。...于是借鉴一些大牛博客及自己理解,总结了博客系列: 一、VFS是什么: VFSLinux一个虚拟文件文件系统,也称为虚拟文件系统交换层(Virtual Filesystem Switch),是一种软件机制...引入文件系统目的是:为了屏蔽各种文件系统差异 (1)VFS对实际文件系统进行抽象,采用统一文件系统向用户提供相应一组统一标准文件操作接口(open,read,close,select,poll...等); (2)通过系统调用到VFS到实际文件系统操作。...Reference: https://www.ibm.com/developerworks/cn/linux/l-vfs/ 在链接中,文章选用Linux2.4.20,我选择Linux3.4.2来分析源码

2.1K90

VFS- 内核是如何抽象文件系统

这个 wiki 上列出了很多 Linux 文件系统类型。...对于这些文件系统,Linux 做了一层抽象就是 VFS 虚拟文件系统,这个其实就是软件设计必然过程,对于不同实现规定统一接口,也就是定义与实现分离,如果想要自己实现一个文件系统的话只要实现一个满足...VFS文件系统就能加入到内核当中。...所以其实内核文件和我们普通理解文件其实有点不一样,这里文件更像是一个接口,只不过最初是从磁盘上文件衍生过来,最后抽象成了一种可以对接各种功能接口。 下面就开始剖析 VFS 主要内容。...dentry 和 inode 关系是多对一,即多个 dentry 可以指向同一个文件,这和 linux 当中文件链接有关。

1.7K30

linux上找到可用网络接口

Linux 中查找可用网络接口 我们可以通过几种方式找到可用网卡。在本指南中,我们将讨论列出 Linux 中网络接口 10 种方法。 1....使用 ifconfig 命令列出网络接口 使用ifconfig命令查找网络接口详细信息最常用方法。我相信一些 Linux 用户可能仍在使用它。...并连接无线网卡(见UP字样) 这两个命令 (ifconfig和ip) 足以在你 Linux 系统上找到可用网卡。 但是,在 Linux 上列出网络接口方法很少。 3....使用 hwinfo 显示网络接口列表 Hwinfo 是一个命令行应用程序,用于查看 Linux 系统中硬件信息。它探测 Linux 系统中存在硬件并显示每个硬件设备详细信息。...到目前为止,我们看到是在 Linux 中查找可用网络接口各种方法。

2.1K20

mini usb接口图片_linux查看接口速率

配天线ipx1代大接口(没有更换天线) ---- 【开始更换】 由于华硕这款旧笔记本无线网卡接口是miniPCI,天线是ipx1代大接口,所以如果要更换AX200的话,需要用到转接卡(NGFF M...接口转好了,AX200也固定了,然后接到笔记本上就行了。如果对于一般电脑接口可能没有问题,但是华硕X450V不能这样,还需要剪掉中间螺孔位置。...1.2、华硕X450V特殊剪裁 华硕X450V无线网卡接口位置空间很小,容纳不下这么长转接卡,而且接口下面位置还有一个SD卡插口,整个空间看起来只有miniPCI卡那么大,如果直接装上转接卡和AX200...需要注意是,找好多余天线位置,接了转接线肯定会很长,塞在周边空位置,注意顺着转接线接口方向布置天线。...2.1、天线主副区别 两个接口网卡都有Main和Aux接口区别,主天线和副天线要区分开来,具体怎么区分不太好说,最好根据更换前网卡接法确定主天线和副天线。

9.4K10

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

/******************** * 虚拟文件系统VFS ********************/ (1)VFS介绍 虚拟文件系统VFS作为内核子系统,为用户空间程序提供了文件系统相关接口...通过这个抽象层,就可以实现利用通用接口对所有类新文件系统进行操作。...a.调用模型 write(): 用户空间 –> sys_write(): VFS –> 文件系统写方法: 文件系统 –> 物理介质 (2)VFS采用主要对象 VFS采用了面向对象思路,采用一组数据结构来代表通用文件对象...对于不基于磁盘文件系统,比如基于内存文件系统sysfs,linux会在使用现场创建超级块并将其保存到内存中。 超级块结构体为super_block,定义在。...文件对象由file结构体表示,定义在中。file对象操作函数结构体为file_operations,定义在中。

2.1K20

Linux Cgroup浅析

cgroups是Linux下控制一个(或一组)进程资源限制机制,全称是control groups,可以对cpu、内存等资源做精细化控制,比如目前很多Docker在Linux下就是基于cgroups...Linux内核有一个很强大模块叫 VFS (Virtual File System)。VFS 能够把具体文件系统细节隐藏起来,给用户态进程提供一个统一文件系统 API 接口。...通过cgroups适配VFS,用户可以使用VFS接口来操作cgroup功能。 VFS 是一个内核抽象层(通用文件模型),能够隐藏具体文件系统实现细节,从而给用户态进程提供一套统一 API 接口。...VFS 使用了一种通用文件系统设计,具体文件系统只要实现了 VFS 设计接口,就能够注册到 VFS 中,从而使内核可以读写这种文件系统。...这很像面向对象设计中抽象类与子类之间关系,抽象类负责对外接口设计,子类负责具体实现。其实,VFS本身就是用 c 语言实现一套面向对象接口

2.1K20

Linux内核整体架构

而为了兼容,操作系统或者内核,要以相同表现形式,同时支持多种类型文件系统,这就延伸出了虚拟文件系统(VFS概念。...VFS功能就是管理各种各样文件系统,屏蔽它们差异,以统一方式,为用户程序提供访问文件接口。...我们对硬件设备访问控制,也可以归纳为读取或者写入数据,因而可以用统一文件操作接口访问。Linux内核就是这样做,除了传统磁盘文件系统之外,它还抽象出了设备文件系统、内存文件系统等等。...这些逻辑,都是由VFS子系统实现。 VFS子系统包括6个子模块(见下图),它们功能如下: 1. Device Drivers,设备驱动,用于控制所有的外部设备及控制器。...Network Device Drivers,网络设备驱动,和VFS子系统中设备驱动是一样。 2. Device Independent Interface,和VFS子系统中是一样

85650

文件系统考古4:如何支持多个文件系统

具体而言,他希望设计一个能够提供以下功能架构: 一个可以支持多个实现通用接口; 支持 BSD FFS,以及两个远程文件系统 NFS 和 RFS,还有特定非 Unix 文件系统,如MS-DOS; 接口定义操作需要是原子性...两个抽象概念 Steven 研究了文件系统各种操作,决定将他们抽象为两个概念: vfs,虚拟文件系统,代表文件系统 vnode,虚拟 inode,代表文件 vfs,虚拟文件系统,它提供统一接口,使操作系统可以以一致方式访问不同文件系统...新增系统调用 为了使系统高效地运行,需要添加一些新系统调用来完善接口。...在 Linux 系统中 通过查看 Linux 内核源代码,我们可以找到 Kleiman 设计总体结构,尽管 Linux 内核复杂性和丰富性掩盖了其中大部分内容。...Linux 内核拥有丰富文件系统类型,并且还添加了许多在 40 年前 BSD 中不存在功能。

22730

深入理解Linux Kernel内核整体架构(图文详解)

而为了兼容,操作系统或者内核,要以相同表现形式,同时支持多种类型文件系统,这就延伸出了虚拟文件系统(VFS概念。...VFS功能就是管理各种各样文件系统,屏蔽它们差异,以统一方式,为用户程序提供访问文件接口。...我们对硬件设备访问控制,也可以归纳为读取或者写入数据,因而可以用统一文件操作接口访问。Linux内核就是这样做,除了传统磁盘文件系统之外,它还抽象出了设备文件系统、内存文件系统等等。...这些逻辑,都是由VFS子系统实现。 VFS子系统包括6个子模块(见下图),它们功能如下: 1. Device Drivers,设备驱动,用于控制所有的外部设备及控制器。...Network Device Drivers,网络设备驱动,和VFS子系统中设备驱动是一样。 2. Device Independent Interface,和VFS子系统中是一样。 3.

2.2K20

read 文件一个字节实际会发生多大磁盘IO?

系统调用将内核中其它组件功能进行封装,然后通过接口形式暴露给用户进程来访问。 对于我们读取文件需求,系统调用需要依赖 VFS 内核组件。...1.3 VFS 虚拟文件系统 VFS 思想就是在 Linux 上抽象一个通用文件系统模型,对我们开发人员或者是用户提供一组通用接口,让我们不用 care 具体文件系统实现。...VFS 提供核心数据结构有四个,它们定义在内核源代码 include/linux/fs.h 和 include/linux/dcache.h 中。...因为每一个分区都可以单独进行格式化,所以一台 Linux 机器下可以同时使用多个不同文件系统。 文件系统里提供对 VFS 具体实现。除了数据结构,每个文件系统还会定义自己实际操作函数。...通过对设备进行抽象后,不管是磁盘还是机械硬盘,对于文件系统都可以使用相同接口对逻辑数据块进行读写操作。 对下层。I/O 请求添加到设备 I/O 请求队列。

89130

【译】Linux概念架构理解摘要一、Linux内核在整个计算机系统中位置二、内核作用三、Linux内核整体架构四、高度模块化设计系统,利于分工合作。五、系统中数据结构六、子系统架构七、结论

通过一组定义合适基本上不变接口(POSIX标准),将用户应用程序和Linux内核解耦,使得用户进程不会受到内核变化影响。 (3)....虚拟文件系统封装物理设备和逻辑文件系统细节,并且允许用户进程使用统一接口访问文件。 除了传统文件系统目标,VFS也负责装载新可执行文件。...最后,系统调用接口允许用户进程调用来存取数据。不像前面的子系统,VFS没有提供给用户注册不明确调用机制,所以没有从VFS到用户进程控制流。 4....不仅如此,虚拟文件系统通过网络子系统实现网络文件系统(NFS)——这形成了VFS和网络子系统指甲数据流和控制流。 七、结论 1、Linux内核是整个Linux系统中一层。...可扩展性一:Linux架构通过一项数据抽象技术使得这些子系统成为可扩展——每个具体硬件设备驱动都实现为单独模块,该模块支持内核提供统一接口

1.1K41

linux系统组成及结构

这个接口依赖于体系结构,甚至在相同处理器家族内也是如此。SCI 实际上是一个非常有用函数调用多路复用和多路分解服务。在 ./linux/kernel 中您可以找到 SCI 实现,并在 ....虚拟文件系统(VirtualFileSystem,VFS):隐藏了各种硬件具体细节,把文件系统操作和不同文件系统具体实现细节分离了开来,为所有的设备提供了统一接口VFS提供了多达数十种不同文件系统...虚拟文件系统(VFS)是 Linux 内核中非常有用一个方面,因为它为文件系统提供了一个通用接口抽象。VFS 在 SCI 和内核所支持文件系统之间提供了一个交换层。...在 VFS 下面是文件系统抽象,它定义了上层函数实现方式。它们是给定文件系统(超过 50 个)插件。文件系统源代码可以在 ./linux/fs 中找到。   ...2 . linux shell shell是系统用户界面,提供了用户与内核进行交互操作一种接口。它接收用户输入命令并把它送入内核去执行,是一个命令解释器。

1.6K20

Linux 下修改网卡接口

Linux下修改网卡接口名 by:授客 (测试环境:CentOS-6.0-x86_64-bin-DVD1.iso+Vmware) 作用 可以用于解决类似如下Device not found问题:...修改网卡接口名之前相关信息如下 # ifconfig eth0 eth0 Link encap:Ethernet HWaddr 00:0C:29:F3:8B:8A inet addr:172.25.75.4...步骤1.修改网卡接口配置文件 #把eth0对应配置文件ifcfg-eth0重命名为ifcfg-eth1--如要设置网卡接口名为ethN,则重命名为ifcfg-ethN # cd /etc/sysconfig.../network-scripts/ # mv ifcfg-eth0 ifcfg-eth1 说明:如果网卡接口名为ethN,则对应配置文件为ifcfg-ethN #修改ifcfg-eth1配置文件,把...,则此处为NAME="ethN" 注意: 1.如果存在多条仅NAME值不一样记录,则删除多余记录,仅保留一条记录 2.如果有对网卡MAC地址进行修改过,即网卡mac地址并非原始mac地址,则推荐步骤

5.7K10

Linux采用双网卡bond、起子接口方式

什么是bond 网卡bond是通过多张网卡绑定为一个逻辑网卡,实现本地网卡冗余,带宽扩容和负载均衡,在生产场景中是一种常用技术。...适用场景 服务器两张网卡需要做bond,并且bond后网卡需配置不同网段地址,用于走不同流量,这个时候就可以采用起子接口方式。.../network-scripts/ifcfg-bond0.401 # 加载模块并重启主机 modprobe 8021q reboot 关键点 交换机侧如果起eth-trunk,那么服务器侧则必须起子接口...”DEVICE=bond0.401“中VLAN号一定要和需要透传VLAN号保持一致 配置子接口后一定要重启服务器才能生效!!!...总结: 以上就是这篇文章全部内容了,希望本文内容对大家学习或者工作具有一定参考学习价值,如果有疑问大家可以留言交流,谢谢大家对网站事(zalou.cn)支持。

2.7K20
领券