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

Linux文件系统浅析

在学习 Linux 的时候,我们通常会看到这样一句话,Linux中一切皆文件,也就是说,不管是普通的文件和目录,还是包括块设备、管道、socket等,也都是交给文件系统去管理的。...Linux启动的时候,首先挂载的是根文件系统,之后可以自动或者手动挂载其他文件系统,这些文件系统要挂载到挂载点上,与虚拟文件系统和通用块设备层建立联系。...操作系统角度 文件系统的层次 在上述中,阐述挂载的时候说到一个概念,就是说 Linux在启动的时候,首先挂载的是根文件系统,然后再自动或者手动挂载其他文件系统,这也是Linux中支持不同文件系统的原因,...说到这里,就有必要提到Linux的虚拟文件系统了,再叙述它的概念之前,我们先以宏观的角度来看一下 Linux下的文件系统的一个结构: [image-20210606105240091] 由上图可以知道,...,都采用的是相同的 API 进行操作,所以 VFS 就做了一个抽象,提供了统一的 API 接口,使之可以对不同的文件系统采用同样的操作。

3.1K10

解析Linux中的VFS文件系统文件系统的注册(二)

文件系统的注册 这里的文件系统是指可能会被挂载到目录树中的各个实际文件系统,所谓实际文件系统,即是指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 存在的基础。

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

解析Linux中的VFS文件系统文件系统的来源与简介(一)

最近挂载了N多的文件系统,大致了不同文件系统的相应特性及挂载方式,却还是对Linux文件系统没有从源码方面去了解。不求甚解确实不好不好。...于是借鉴一些大牛的博客及自己的理解,总结了博客系列: 一、VFS是什么: VFSLinux中的一个虚拟文件文件系统,也称为虚拟文件系统交换层(Virtual Filesystem Switch),是一种软件机制...等); (2)通过系统调用到VFS到实际文件系统的操作。...二、文件系统种类: (1)基于磁盘的文件系统; (2)网络文件系统(NFS); (3)伪文件系统(sysfs、proc); VFS 目录树结构: ?...Reference: https://www.ibm.com/developerworks/cn/linux/l-vfs/ 在链接中,文章选用的是Linux2.4.20,我选择Linux3.4.2来分析源码

2.1K90

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

Linux 当中文件系统千奇百种,比较常见的有 EXT3、EXT4,还有基于内存的 ramfs、tmpfs 和基于网络的 nfs,和基于用户态的 fuse,当然 fuse 应该不能完全的文件系统,只能算是一个能把文件系统实现放到用户态的模块...这个 wiki 上列出了很多 Linux文件系统类型。...对于这些文件系统Linux 做了一层抽象就是 VFS 虚拟文件系统,这个其实就是软件设计必然的过程,对于不同的实现规定统一的接口,也就是定义与实现分离,如果想要自己实现一个文件系统的话只要实现一个满足...VFS 层的文件系统就能加入到内核当中。...这是文件系统本身这个结构在操作系统里的组织结构,接下来分析文件系统满足 VFS 要包含哪些内容。

1.7K30

快速了解虚拟文件系统VFS

前言 为什么 Linux 内核的文件系统类型那么多,都能挂载上呢?为什么系统里可以直接 mount 其他文件系统呢?...甚至能把 windows 下的文件夹挂载到 windows 上,为什么 Linux 的虚拟文件系统这么强大?这得益于它的数据结构设计得十分精妙。好像听过,Linux 有什么解决不了的?加一层。...VFS 是什么 虚拟文件系统,简称 VFS(Virtual Filesystem),是一个内核软件层。...VFS 的作用 概括地讲,VFS 有两个作用: 处理与 Unix 标准文件系统相关的所有系统调用 为各种文件系统提供一个通用的接口 VFS 支持的文件系统类型 以下列出以下常见的文件系统类型,本文暂时不对其进行详细分析...关键数据结构介绍 Linux VFS 抽象出 4 种类型的数据结构,实现将不同类型的文件系统挂载到目录结构中。

1.9K20

深入理解Linux VFS和Page Cache

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

2.9K21

Ext2文件系统布局,文件数据块寻址,VFS虚拟文件系统

二、VFS 虚拟文件系统 Linux支持各种各样的文件系统格式,如 ext2、 ext3、 reiserfs、 FAT、 NTFS、 iso9660等等,不同的磁盘分区、光盘或其它存储设备都有不同的文件系统格式...Linux内核在各种不同的文件系统格式之上做了一个抽象层,使得文件、目录、读写访问等概念成为抽象层的概念,因此各种文件系统看起来用起来都一样,这个抽象层称为虚拟文件系统VFS,Virtual File...VFS 是应用程序和具体的文件系统之间的一个层。不过,在某些情况下,一个文件操作可能由VFS 本身去执行,无需调用下一层程序。...从某种意义上说,可以把VFS 看成“通用”文件系统,它在必要时依赖某种具体的文件系统。 ?...对于 ext2文件系统来说,在磁盘存储布局上也有 inode和超级块的概念,所以很容易和 VFS中的概念建立对应关系。

75220

Ext2文件系统布局,文件数据块寻址,VFS虚拟文件系统

注:本分类下文章大多整理自《深入分析linux内核源代码》一书,另有参考其他一些资料如《linux内核完全剖析》、《linux c 编程一站式学习》等,只是为了更好地理清系统编程和网络编程中的一些概念性问题...二、VFS 虚拟文件系统 Linux支持各种各样的文件系统格式,如 ext2、 ext3、 reiserfs、 FAT、 NTFS、 iso9660等等,不同的磁盘分区、光盘或其它存储设备都有不同的文件系统格式...Linux内核在各种不同的文件系统格式之上做了一个抽象层,使得文件、目录、读写访问等概念成为抽象层的概念,因此各种文件系统看起来用起来都一样,这个抽象层称为虚拟文件系统VFS,Virtual File...VFS 是应用程序和具体的文件系统之间的一个层。不过,在某些情况下,一个文件操作可能由VFS 本身去执行,无需调用下一层程序。...从某种意义上说,可以把VFS 看成“通用”文件系统,它在必要时依赖某种具体的文件系统。 ?

1.7K01

Linux Cgroup浅析

cgroups文件系统 Linux 使用了多种数据结构在内核中实现了 cgroups 的配置,关联了进程和 cgroups 节点,那么 Linux 又是如何让用户态的进程使用到 cgroups 的功能呢...Linux内核有一个很强大的模块叫 VFS (Virtual File System)。VFS 能够把具体文件系统的细节隐藏起来,给用户态进程提供一个统一的文件系统 API 接口。...cgroups 也是通过 VFS 把功能暴露给用户态的,cgroups 与 VFS 之间的衔接部分称之为 cgroups 文件系统。...通过cgroups适配VFS,用户可以使用VFS接口来操作cgroup功能。 VFS 是一个内核抽象层(通用文件模型),能够隐藏具体文件系统的实现细节,从而给用户态进程提供一套统一的 API 接口。...VFS 使用了一种通用文件系统的设计,具体的文件系统只要实现了 VFS 的设计接口,就能够注册到 VFS 中,从而使内核可以读写这种文件系统

2.1K20

linux文件系统

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

8.7K00

Linux Namespace浅析

目前Linux内核总共支持以下6种Namespace: IPC:隔离System V IPC和POSIX消息队列。 Network:隔离网络资源。 Mount:隔离文件系统挂载点。...Linux对Namespace的操作,主要是通过clone、setns和unshare这3个系统调用来完成的,clone创建新进程时,接收一个叫flags的参数,这些flag包括CLONE_NEWNS、...目前Linux内核总共支持以下6种Namespace,分别是IPC、Network、Mount、PID、UTS、User: IPC IPC也就是进程间通信,Linux下有多种进程间通信,比如socket...Mount Mount namesapce用户隔离文件系统挂载点,每个进程能看到的文件系统都记录在/proc/xx/mounts里。...在创建了一个新的Mount Namespace后,进程系统对文件系统挂载/卸载的动作就不会影响到其他Namespace。

1.4K10

Linux文件系统

文件系统 磁盘 磁盘的物理结构 磁盘的储存结构 磁盘的逻辑结构 文件系统 分治 inode与数据块 软硬链接 什么是软硬连接 文件与引用计数 文件的三大时间 动静态库 什么是库 库的使用 静态库...文件系统 分治 虽然对应的磁盘访问基本单位是512字节,但是依旧很小。 所以操作系统定制的进行多个扇区的读取->1KB,2KB,4KB(现在基本都是4KB)为基本单位。...Super Block:超级块对象,保存的是整个文件系统的信息。 如果想清空哪个盘里面的所有数据内容,其实就相当于重写文件系统。一个磁盘,第一步是分区,第二部就是格式化,也就是写入文件系统。...文件系统的信息有分区的使用状态,分区的每个组的状态和信息。 既然这么重要,为何放在这里呢?其实在大部分文件系统中,块组前几个开头就是Super Block,这就相当于备份。...inode与数据块 文件 = 内容 + 属性 Linux中,文件的属性和内容是分批存储的。 保存文件属性的叫inode块:具体大小跟文件系统的版本有关,我的是ext3,128字节。

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 操作系统中的重要组成部分,它是文件和目录的组织方式,为用户提供了一个良好的管理和访问文件的方式。...Linux 文件系统具有以下特点:一切皆文件:在 Linux 文件系统中,一切都被视为文件,包括硬件设备、目录、文件、管道等等。这种一切皆文件的思想使得 Linux 文件系统非常灵活。...虚拟文件系统Linux 文件系统使用虚拟文件系统VFS)层,将不同类型的文件系统抽象为一个通用的文件系统接口,使得用户可以以相同的方式访问不同的文件系统。...Linux 文件系统格式Linux 文件系统可以使用多种格式来存储数据,包括 ext2、ext3、ext4、ReiserFS、XFS等。...以下是一些常见的 Linux 文件系统格式:ext2:是 Linux 文件系统的最早版本,它是一个简单的文件系统,不支持日志和数据恢复功能。

8.6K40

linux文件系统

Linux 文件系统 操作系统中,用来管理和存储文件信息的软件机构称为文件管理系统,简称文件系统。...RAW RAW文件系统是一种磁盘未经处理或者未格式化产生的文件系统。...一般来说有这几种可能造成正常文件系统变成RAW文件系统: 没有格式化 格式化中途取消 硬盘出现坏道 硬盘出现不可预知的错误 EXT EXT是扩展文件系统,目前最新的版本是5.0....HFS(+) 苹果电脑上的文件系统Linux里的文件系统 不同于Windows系统有盘符的概念(C盘、D盘等),Linux里只有一个盘符,是从 " / " 开始的,只有它是没有上级目录的。.../media Linux系统自动识别的一些设备,比如U盘、光驱等,当识别后,linux会把识别的设备挂载到这个目录下。

7.3K30

Linux 文件系统详解

早在 1996 年,在真正理解文件系统的结构之前,我就学会了如何在我崭新的 Linux 上安装软件。这是一个问题,但对程序来说不是大问题,因为即使我不知道实际的可执行文件在哪里,它们也会神奇地工作。...如果你已经使用你的系统有一段时间了,这可能需要一段时间,因为即使你自己还没有生成很多文件,Linux 系统及其应用程序总是在记录、缓存和存储各种临时文件。文件系统中的条目数量会快速增长。...大多数 Linux 发行版都会向你显示与你在上图中看到的相同或非常类似的结构。 这意味着,即使你现在感到困惑,掌握这一点,你将掌握大部分(如果不是全部的话)全世界的 Linux 文件系统。...总结 尽管 Linux 发行版之间存在细微差别,但它们的文件系统的布局非常相似。 你可以这么说:一旦你了解一个,你就会都了解了。 了解文件系统的最好方法就是探索它。...很快你就会发现 Linux 文件系统及其布局的确很有意义,并且你会直观地知道在哪里可以找到应用程序,文档和其他资源。

7.3K31

Linux文件系统结构

1、文件目录结构 /:是Linux系统的根目录 /bin:存放用户经常使用的命令 /boot:启动加载程序的静态文件 /dev:设备文件目录,不能单独分区 /etc:系统配置文件目录 /home:普通用户的家目录...被抛弃的临时文件目录 /var:动态数据文件目录;日志文件log,数据库,缓存目录等 /lib:存放程序的库文件 /lib64:存放64位程序库文件 /media:移动媒体的挂载点 /mnt:临时挂载的文件系统的挂载点.../opt:存放第三方软件服务 /proc:伪文件系统,内核映射文件,不能单独分区 /srv: 用来存储本机提供的服务或数据 /sys:伪文件系统,跟硬件设备相关的属性映射文件,不能单独分区 注意: /...etc,/bin,/sbin,lib目录存放的是系统启动就需要用到的程序,这些目录不能挂载额外的分区,必须在跟文件系统的分区上 /usr/bin、/usr/sbin、/usr/lib提供操作系统核心功能

7.3K40
领券