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

Linux基础IO【深入理解文件系统

在高效存储 磁盘文件 这件事上,前辈们研究出了十分巧妙的管理手段及操作方法,而这些手段和方法共同构成了我们今天所谈的 文件系统 注: 本文主要介绍对象为机械硬盘存储模式及 EXT 文件系统 ----...-i 查看当前系统中的 分区数 及 详细信息 系统在分区后,需要对区块进行格式化 不同的文件系统在格式化时写入的数据是不同的,这里讨论的是 EXT 文件系统 磁盘分区后,分组、填写系统属性是...答案是 套娃,Data block 中存储其他 Data block 信息,此时称为多级索引,可以做到一个数据块中存储大量数据 注:本篇博客中的大部分图片来自 Linux基础IO、学习系统编程No.13...【文件系统】 && 学习系统编程No.14【动静态库】 以及互联网 ---- 总结 以上就是本次关于 Linux基础IO【深入理解文件系统】的全部内容了,本文理论偏多,重点在于机械硬盘结构及文件系统组成的理解...,尤其是 Blcok Group 的学习,这些知识能帮我们能好的理解整个文件系统,明白一个文件是如何被创建、被访问、被加载、被修改的全部过程,并且还能后续软硬链接的学习打下基础

15210

深入理解Linux文件系统文件系统挂载(上)

1.开场白 环境: 处理器架构:arm64 内核源码:linux-5.11 ubuntu版本:20.04.1 代码阅读工具:vim+ctags+cscope 我们知道,Linux系统中我们经常将一个块设备上的文件系统挂载到某个目录下才能访问这个文件系统下的文件...挂载文件系统Linux内核到底为我们做了哪些事情?是否可以不将文件系统挂载到具体的目录下也能访问?下面,本文将详细讲解Linxu系统中,文件系统挂载的奥秘。...我们知道在Linux中通过虚拟文件系统层VFS统一所有具体的文件系统,提取所有具体文件系统的共性,屏蔽具体文件系统的差异。...如nfs文件系统 结构体定义源码路径:include/linux/fs.h +2226 2.2 super_block 超级块,用于描述块设备上的一个文件系统总体信息(如文件块大小,最大文件大小,文件系统魔数等...结构体定义源码路径:include/linux/fs.h +1414 2.3 mount 挂载描述符,用于建立超级块和挂载点等之间的联系,描述文件系统的一次挂载,一个块设备上的文件系统可以被挂载多次,每次挂载内存中有一个

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

深入理解Linux文件系统文件系统挂载(下)

4.3 lock_mount源码分析 lock_mount是最不好理解的函数,下面详细讲解: -> mp = lock_mount(mountpoint); //不只是加锁, 通过传来的 挂载点的 path...的dentry>) //include/linux/path.h 描述一个路径 struct path { struct vfsmount *mnt; struct...总结 Linux中,块设备上的文件系统只有挂载到内存的目录树中的一个目录下,用户进程才能访问,而挂载是创建数据结构关联块设备上的文件系统和挂载点,使得路径名查找的时候能够通过挂载点目录访问到挂载在其下的文件系统...当一个要挂载的目录是挂载点(之前已经有文件系统被挂载到这个目录),那么新挂载的文件系统将挂载到这个目录最后一次挂载的文件系统的根dentry,之前挂载的文件系统的文件都被隐藏(当子挂载被卸载,原来的文件系统的文件才可见...参考文档: 《存储技术原理分析 基于Linux2.6内核源代码》

1.5K20

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

(virtual filesystem) 下图显示了 Linux 操作系统中负责文件管理的基本组件。...目录树 综合来说,Linux 的 根文件系统(system’s root filessystem) 是内核启动mount的第一个文件系统。...Linux 使用 Write back 作为索引节点的数据一致性策略。...索引与数据 文件系统与文件、磁盘管理与文件、进程管理与文件,最核心的都是文件的索引,而不是文件的数据。把数据和索引分开是理解文件系统的关键。...从上面的模型可以很清楚的理解,因为目录已经没有索引到文件了,但是打开文件还有索引到文件,所以不能立刻释放磁盘空间。 为什么 lsof 可以找到已删除未释放的文件呢?

38310

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

虚拟文件系统(virtual filesystem) 下图显示了Linux操作系统中负责文件管理的基本组件。上半区域为用户模式,下半区域为内核模式。...目录树 综合来说,Linux 的 根文件系统(system's root filessystem) 是内核启动mount的第一个文件系统。...Linux 使用Write back作为索引节点的数据一致性策略。对于索引节点的数据,当文件被打开时,才会加载索引节点到内存;当不再被进程使用,则从内存踢出;如果中间有更新,则需要把数据写回磁盘。...总结 回头来看遇到的问题,其实可以从两个角度来理解: 索引与数据 文件系统与文件、磁盘管理与文件、进程管理与文件,最核心的都是文件的索引,而不是文件的数据。把数据和索引分开是理解文件系统的关键。 ?...从上面的模型可以很清楚的理解,因为目录已经没有索引到文件了,但是打开文件还有索引到文件,所以不能立刻释放磁盘空间。 为什么 lsof 可以找到已删除未释放的文件呢?

1.2K40

Linux理解文件系统——软硬链接

没有被打开的文件在磁盘上,所以磁盘上有大量的文件,这些文件要被静态管理起来,方便我们随时打开,而做这部分工作的我们称为文件系统。...比如磁盘的基本大小改变,OS的源码有必要跟着变 ---- 二、文件系统与inode 文件在磁盘中是如何存储:文件是在磁盘中的,而逻辑结构是线性结构。...我们采用分治的思想,来管理磁盘空间进行分区:大的磁盘空间->小空间,大事化小,给每个分区写入不同的文件系统。 Boot Block是启动块,存在每个分区的开头,备份文件与启动相关的。...Linux的文件=内容+属性,而Linux的文件内容是属性是分批存储的。保存文件属性的是inode,inode块的大小是固定的,为128字节。...如果在Linux中误删除一个文件,还是能恢复的,但是前提必须是inode和data block没有被占用,所以当误删除一个文件时,最好的办法就是什么都不做。

25840

深入理解 Linux 启动过程 | QEMU 启动 linux 内核和自制根文件系统

跟我一起来到故事开始的地方,深入 Linux 系统的启动流程,自己编译内核并制作根文件系统,并使用 QEMU 模拟启动。 前置知识# 昨天看到阮老师两篇文章 《计算机是如何启动的?》...和 《Linux 的启动流程》,对计算机的启动流程有了更加深入理解,正好最近在做国产申威处理器的虚拟化支持性调研,称此机会深入了解一下 Linux 系统的启动流程,并使用 QEMU 模拟这一流程。...看过文章后应该对启动流程有了大概认识,本文会介绍自制一个简单的根文件系统,即 initramfs (基于 ramfs 的临时文件系统,一种以 cpio 格式压缩后的 rootfs 文件系统),如果对这个概念不太理解...总结# 为了在 QEMU 中模拟 Linux 的启动流程,在网上找了许多教程,踩了很多坑,最后找到的 USTC 实验说明真是帮助很大,做完后对 Linux 启动流程有了更加深刻的理解,果然在计算机的世界里...,必须亲眼看到才能真正正确的理解

1.7K30

深入理解 Linux 文件系统:从根目录到用户主目录

深入理解 Linux 文件系统:从根目录到用户主目录 摘要 本文将深入介绍Linux文件系统的结构,从根目录到用户主目录的层级关系。我们将了解文件系统Linux系统中的核心地位以及其广泛应用。...本文的目的在于帮助读者深入理解Linux文件系统的结构和功能,并介绍如何从根目录到用户主目录进行层级导航。 2. Linux 文件系统概述 Linux文件系统是操作系统用于管理文件和目录的一种机制。...这些目录在Linux系统中起着不同的作用,每个目录都有其特定的用途。了解这些目录的功能有助于更好地理解Linux文件系统的结构和组织。 4....通过理解Linux文件系统的基本概念和根目录下的重要目录,以及用户主目录的结构和作用,读者可以更好地操作和管理Linux系统,并更深入地了解文件系统在系统运行和数据管理中的重要性。 5....结论 通过本文的学习,我们深入理解Linux文件系统从根目录到用户主目录的层级结构和重要性。作为系统管理者或用户,深入了解文件系统对于有效管理和维护Linux系统至关重要。

40010

深入理解linux文件

一、linux的文件存储 假如有一个用户在linux系统中编辑了一个文件,编辑完内容后,关闭编辑器时会问用户改如何命名这个文件,设置完名称之后会选择一个目录将该文件保存到指定目录下,在这个例子中包含了linux...三、链接文件介绍 ​ Linux中如果用户想把同一个文件保存在两个地方,或用两个不同的文件名保存,除了复制之外还有另外一种选择,就是链接,在linux系统中链接分为硬链接,软链接,空链接,递归链接等 链接命令...-n 把符号链接视为一般目录,显示为一般文件 -v 显示详细的处理过程 硬链接:允许一个文件拥有多个有效路径名,这样用户就可以建立硬链接到重要的文件,以防止“误删”源数据,不过硬链接只能在同一文件系统中的文件之间进行连接...这是概念上的描述,我们用一句话来将这两种链接进行总结: a、硬链接不能链目录,不能跨文件系统,软链接可以; b、源文件删除后软链接失效,硬链接依然可用; 我们通过下面的例子可以看到硬链接和软链接的创建方式以及基本对比

52020

深入理解Linux LA

前言 经常和Linux打交道的童鞋都知道,load averages是衡量机器负载的关键指标,但是这个指标是怎样定义出来的呢?...Linux不可中断任务 Linux中刚引入load averages时,和其他系统一样将其作为衡量CPU需求的指标,后来将其更改为不仅包含可运行任务,还包含处于不可中断状态的任务(TASKUNINTERRUPTIBLE...现代系统的不可中断 但是难道不会出现磁盘I/O不能解释Linux load averages过高的情况吗?...所以也许Linux的load averages已经按我们需要的方式工作了。 理解Linux的load averages 也许真正的问题在于“load averages”这个词和“I/O”一样含糊不清。...文件系统I/O?还是网络I/O。类似的,到底是哪种load averages呢?是CPU平均负载?还是系统平均负载?

1.4K40

Linux理解文件系统——文件的管理

二、文件系统与inode 1.文件在磁盘中是如何存储的? 文件在磁盘中,而磁盘的逻辑结构是线性结构。...为了方便管理,我们采用分治的思想,对磁盘空间进行分区:1个较大的磁盘空间 ——> 多个较小的磁盘空间,再给不同的分区写入不同的文件系统。...Linux的文件 = 内容 + 属性。Linux的文件内容和属性是分批存储的。文件属性保存在inode中,inode的大小是128字节,是固定的。一个文件有且仅有一个inode与之对应。...目录不能自定义建立硬链接 我们发现Linux不允许普通用户给目录建立硬链接。 这是为什么呢? 我们知道,Linux默认会给目录建立两个硬链接:'.'和'..'。...总结 以上就是今天要讲的内容,本文介绍了磁盘的三种结构、文件系统与inode以及软硬链接的相关概念。

20320

深入理解 Linux IO 系统

存储设备的 I/O 栈 由图可见,从系统调用的接口再往下,Linux 下的 IO 栈致大致有三个层次: 文件系统层,以 write 为例,内核拷贝了 write 参数指定的用户态数据到文件系统 Cache...结合这个图,想想 Linux 系统编程里用到的 Buffered IO、mmap、Direct IO,这些机制怎么和 Linux I/O 栈联系起来呢?...2.4 还要求是文件系统逻辑块的整数倍)。...所以想用好这些高级特性,除了深刻理解其背后的机制之外,也要在系统设计上下一番功夫。...文件的内容需要映射到实际的物理磁盘,这种映射关系由文件系统来完成;Buffer Cache 用于缓存存储设备块(比如磁盘扇区)的数据,而不关心是否有文件系统的存在(文件系统的元数据缓存在 Buffer

52610

Linux深入理解ls命令

ls 命令是 Linux 下最常用的命令。ls 命令就是 list 的缩写,缺省下 ls 用来打印出当前目录的清单。 如果 ls 指定其他目录,那么就会显示指定目录里的文件及文件夹清单。...通过 ls 命令不仅可以查看 Linux 文件夹包含的文件而且可以查看文件权限(包括目录、文件夹、文件权限)查看目录信息等等。 ls 命令在日常的 Linux 操作中用的很多! 1....对输出的文件不进行排序,-aU 选项生效,-lst 选项失效 -g 类似 -l, 但不列出所有者 -G, –no-group 不列出任何有关组的信息 -h, –human-readable 以容易理解的格式列出文件大小...version -v use -u -t 以文件修改时间排序 -u 配合 -lt: 显示访问时间而且依访问时间排序 配合 -l: 显示访问时间但根据名称排序 否则:根据访问时间排序 -U 不进行排序;依文件系统原有的次序列出项目...root root 4096 2011-11-01 tomcat6.0.32 -rwxr-xr-x 1 root root 81871260 09-17 18:15 jdk-6u16-linux-x64

10610

Linux深入理解cd命令

Linux系统中,cd命令是一个十分基础且常用的命令,用于改变当前工作目录。虽然它看似简单,但其实有许多有趣的细节和技巧。...在本文中,我们将深入探讨cd命令的各种用法和技巧,帮助你更好地理解和利用这个命令。 什么是cd命令 在Linux系统中,cd的英命令文全称是change directory,意思是“切换目录”。...[root@localhost usr]# 总结 cd命令是Linux系统中一个非常基础但又十分重要的命令,它允许用户在不同的目录之间进行切换。...通过本文的介绍,你应该对cd命令的基本用法、进阶用法和一些实用技巧有了更深入的了解。希望这些信息能够帮助你更好地利用cd命令,提高工作效率。

18810

深入理解Linux IO 系统

存储设备的 I/O 栈 由图可见,从系统调用的接口再往下,Linux 下的 IO 栈致大致有三个层次: 用: 文件系统层,以 write 为例,内核拷贝了 write 参数指定的用户态数据到文件系统...结合这个图,想想 Linux 系统编程里用到的 Buffered IO、mmap、Direct IO,这些机制怎么和 Linux I/O 栈联系起来呢?...2.4 还要求是文件系统逻辑块的整数倍)。...所以想用好这些高级特性,除了深刻理解其背后的机制之外,也要在系统设计上下一番功夫。...文件的内容需要映射到实际的物理磁盘,这种映射关系由文件系统来完成;Buffer Cache 用于缓存存储设备块(比如磁盘扇区)的数据,而不关心是否有文件系统的存在(文件系统的元数据缓存在 Buffer

66620
领券