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

Linux文件系统浅析

Linux启动的时候,首先挂载的是根文件系统,之后可以自动或者手动挂载其他文件系统,这些文件系统要挂载到挂载点上,与虚拟文件系统和通用块设备层建立联系。...说到这里,就有必要提到Linux虚拟文件系统了,再叙述它的概念之前,我们先以宏观的角度来看一下 Linux下的文件系统的一个结构: [image-20210606105240091] 由上图可以知道,...整个文件系统体系分为了三个层面,用户层,内核层,硬件层,用户层是通过API通过系统调用调用的方式访问虚拟文件系统。...在内核层,我们可以看到虚拟文件系统下连接了各种类型的文件系统,其是对不同的文件系统的抽象,为上层应用提供了统一的 API 接口;上图内核层还有一层是各个文件系统之下的一层,这一层的作用是隐藏了不同硬件设备之间的细节...文件系统层:目前大多数Linux使用的是ex4,与此同时,btrfs也呼之欲出 虚拟文件系统:正如不同的存储设备具有不同的 IO 接口,那么不同的文件系统也具有不用的 API,内核想实现的是不管是什么文件系统

3.1K10

Linux 虚拟文件系统

虚拟文件系统介绍 Linux使用了虚拟文件系统(VFS,Virtual Filesystem,下文统称“虚拟文件系统”),它不是磁盘文件的组织格式,而是抽象出来的文件树的集合,它通过标准接口动态的向其中增加或移除对应的目录...虚拟文件系统支持以下归类的三种类型的文件系统: 磁盘文件系统,存储在本地磁盘、U盘、CDROM等的文件系统,它包含各种不同的文件系统格式,比如Windows NTFS、VFAT,BSD的UFS,CD的CD-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...对于一个文件查找一般先查找dentry cache中进行 // linux 5.4.85/include/linux/dcache.h 取出dentry核心字段 struct dentry { //...// linux 5.4.85/include/linux/fs.h 取出inode核心字段 struct inode { // 文件的权限信息 umode_t i_mode; // 操作文件的

    79920

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

    虚拟文件系统简介 为了实现 一切对象皆是文件 这个目标,Linux 内核提供了一个中间层:虚拟文件系统(Virtual File System)。...今天,我们就来介绍虚拟文件系统的原理与实现。 虚拟文件系统原理 在阐述虚拟文件系统的原理前,我们先来介绍一个 Java 例子。通过这个 Java 例子,我们能够更容易理解虚拟文件系统的原理。...虚拟文件系统原理 上面的 Java 例子已经大概说明虚拟文件系统的原理,但由于 Linux 是使用 C 语言来编写的,而 C 语言并没有接口这个概念。...调用过程如下: 2. file_operations结构 底层文件系统需要实现虚拟文件系统的接口,才能被虚拟文件系统使用。...正是有了 虚拟文件系统Linux 才能支持各种各样的文件系统

    1.3K10

    虚拟DOM】浅析 虚拟DOM

    虚拟DOM作为目前流行的DOM操作思想,被广泛用在react中,这套设计的确在用户体验上带来了显著提升。下面我们来浅析一下这个东西,一步步看下去,希望你能有所收获。...此时,你可以把这里的ulElement理解为VirtualDOM(虚拟DOM)。 虚拟DOM是什么?...下面我们具体讲解下虚拟DOM的核心实现思路。...最后,第三步是渲染新生成的差异化虚拟DOM。 渲染新生成的差异化虚拟DOM 经过差异化比较后,你能获取到发生改变之后的“差异化VirtualDOM",”差异化类型“和”差异化位置“。...总结一下,虚拟DOM最本质的区别是使用Javascript对象替代了DOM对象树,从而提升页面渲染性能。 参考:w3c

    14820

    浅析Linux中vsftpd服务配置(匿名,用户,虚拟用户)

    vsftpd 是一个 UNIX 类操作系统上运行的服务器的名字,它可以运行在诸如 Linux、BSD、Solaris、 HP-UNIX等系统上面,是一个完全免费的、开放源代码的ftp服务器软件,支持很多其他的...特点 非常高的安全性需求、带宽限制、良好的可伸缩性、可创建虚拟用户、支持IPv6、速率高 小巧轻快,安全易用。...ftp> put test1.txt ##在c盘中创建一个test1.txt然后上传到Linux中 200 PORT command successful....##此时是权限受限的 Linux中vsftpd服务配置(匿名,用户,虚拟用户) ?...##登录失败 三,建立虚拟用户账户使用ftp(文件在系统用户vuser家目录) 1,创建虚拟用户文件 [root@localhost vsftpd]# cd /etc/vsftpd/ ##切换到配置文件目录下

    5.2K20

    虚拟文件系统

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

    1.6K30

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

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

    41810

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

    mysql 11u REG 253,1 0 523587 /var/tmp/ibCjuqva (deleted) 那么,Linux...虚拟文件系统(virtual filesystem) 下图显示了Linux操作系统中负责文件管理的基本组件。上半区域为用户模式,下半区域为内核模式。...所有与文件相关的操作的入口都是虚拟文件系统(VFS),而非特定的额文件系统(如Ext3、ReiserFS和NFS)。VFS 提供了系统库和特定文件系统之间的接口。...目录树 综合来说,Linux 的 根文件系统(system's root filessystem) 是内核启动mount的第一个文件系统。...Linux 使用Write back作为索引节点的数据一致性策略。对于索引节点的数据,当文件被打开时,才会加载索引节点到内存;当不再被进程使用,则从内存踢出;如果中间有更新,则需要把数据写回磁盘。

    1.3K40

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

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

    2.1K20

    虚拟文件系统源码解析之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节点的操作函数集进行。

    73810

    linux文件系统

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

    10210

    Linux Namespace浅析

    目前Linux内核总共支持以下6种Namespace: IPC:隔离System V IPC和POSIX消息队列。 Network:隔离网络资源。 Mount:隔离文件系统挂载点。...namespace,如果其他进程想进入该namespace,open该虚拟文件获取到fd,然后传给setns函数的fd入参即可,注意虚拟文件type和nstype要对应上。...目前Linux内核总共支持以下6种Namespace,分别是IPC、Network、Mount、PID、UTS、User: IPC IPC也就是进程间通信,Linux下有多种进程间通信,比如socket...Mount Mount namesapce用户隔离文件系统挂载点,每个进程能看到的文件系统都记录在/proc/xx/mounts里。...在创建了一个新的Mount Namespace后,进程系统对文件系统挂载/卸载的动作就不会影响到其他Namespace。

    1.5K10

    xfs文件系统浅析 -- 恢复drop的表

    这时候就需要先从文件系统恢复数据文件了. mysql通常运行在linux服务器上, 通常是使用的xfs文件系统, 市面上也有不少该类工具, 有收费的, 也有免费的(比如testdisk,支持多种OS/FS...那就自己来解析xfs文件系统吧. linux的文档是非常完善的, 基本上不需要看源码(虽然也才5MB左右).XFS 文件系统linux上一切皆文件, 包括xfs文件系统, 也是特殊结构的文件. xfs文件系统由若干个...我们知道xfs文件系统由全局唯一的Inode号来区分文件....(inode可能会被重复使用的)参考: https://cdn.kernel.org/pub/linux/utils/fs/xfs/docs/xfs_filesystem_structure.pdfhttps...://github.com/torvalds/linux/blob/master/fs/xfshttps://github.com/ddcw/ibd2sql附源码python3编写的, 没做详细的验证#

    21840

    Linux文件系统

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

    12.6K00
    领券