Linux文件体系

[复制链接]
发表于 2026-2-10 19:35:27 | 显示全部楼层 |阅读模式
目次
前言
一.磁盘的结构
磁盘数据定位方法
CHS定位法
LBA寻址法
二.Linux文件体系
1.文件体系结构 
​编辑
2.inode
通过inode找到文件内容
3.重新明确文件
新建/删除文件
 目次文件
软硬链接


前言

        Linux文件体系是利用体系中用来构造和管理文件与目次的结构,  它提供了存储、检索、管理和掩护数据的方法,  在Linux下齐备皆文件,  明确文件体系以及文件能让我们对Linux的学习有很大资助
一.磁盘的结构


        磁头(Magnetic Head)是用于读取和写入磁性介质上数据的焦点组件。它利用电磁原理在磁性质料外貌纪录和检索数据, 磁盘高速旋转 ,  磁头来回摆动, 就能访问到磁盘上的全部数据

磁盘的每个盘面,都会被为多个等宽的同心圆环,如许一个圆环叫做磁道。而一个磁道又会被分别为很多个小扇形,每个扇形叫做一个扇区, 一个扇区的巨细通常是固定的,  在很长一段时间内,磁盘的巨细是512byte,  这种是传统的512字节扇区,  当代另有4KB扇区
磁盘数据定位方法

CHS定位法

CHS定位法曾经是硬盘上数据定位的尺度方法,通过柱面、磁头和扇区三者的组合来定位数据位置


  • C(Cylinder,柱面):指示数据位于哪一个柱面。
  • H(Head,磁头):指示数据位于该柱面的哪一个磁盘面(由哪个磁头访问)。
  • S(Sector,扇区):指示数据位于该磁盘面的哪个扇区。

  • 选择柱面:起首,硬盘的读写头会移动到指定的柱面。柱面由磁盘上的全部盘片的对应磁道构成。
  • 选择磁头:然后选择特定的磁头,以读取指定磁盘面上的数据。
  • 选择扇区:末了在选定的磁盘面上,磁头读取或写入指定的扇区。
LBA寻址法

LBA是当代大部门存储装备的尺度寻址方式,  通过一个简朴的整数来表现存储装备上的数据位置


  • 逻辑块(Logical Block):LBA将整个存储装备视为一个线性一连的块序列,每个块对应一个唯一的LBA编号。这些逻辑块的巨细通常是固定的,一个逻辑块通常对应一个扇区,在大多数情况下,逻辑块的巨细为512字节或4KB。
  • 线性寻址:LBA通过一个简朴的整数值(LBA号)来表现存储装备上的数据位置,而不涉及柱面、磁头和扇区的复杂多少结构。LBA号从0开始,不停到存储装备的最大块数减1。
当须要访问某个数据块时,利用体系或硬盘控制器会天生一个LBA号,该LBA号直接映射到存储装备上的物理位置。硬盘控制器将LBA号转换为装备内部的实际地点,然后访问相应的数据块
二.Linux文件体系

1.文件体系结构 

Linux Ext2文件体系结构




  • 超等块(Super Block):存放文件体系自己的结构信息。纪录的信息重要有:bolck 和 inode的总量, 未利用的block和inode的数目,一个block和inode的巨细,迩来一次挂载的时间,迩来一次写入数据的 时间,迩来一次查验磁盘的时间等其他文件体系的相干信息。Super Block的信息被粉碎,可以说整个文件体系结构就被粉碎了
  • GDT,Group Descriptor Table:块组形貌符,形貌块组属性信息,宏观形貌块组的利用情况
  • 块位图(Block Bitmap):Block Bitmap中纪录着Data Block中哪个数据块已经被占用,哪个数据块没 有被占用
  • inode位图(inode Bitmap):每个bit表现一个inode是否空闲可用。
  • inode Table:存放文件属性如文件巨细,全部者,迩来修改时间等
  • Data blocks:存放文件内容
2.inode

文件=内容和属性
        在Linux中文件的内容和属性是分开储存的,文件的属性储存在inodeTable中,内容存储在Data Block中,  struct inode 是 Linux 内核中用于形貌文件体系中每个文件的焦点数据结构,  内里包罗了文件的各个属性,  好比文件的inode编号,  文件的修改时间,  文件的权限,  文件的数据块等,  此中inode编号用来标识唯逐一个文件或目次,  文件属性中纪录的这个文件的内容存储的块下标,  通过这个就能直接找到文件的内容,
利用 ls -i 选项查察文件的inode

留意 :  文件名不是文件的属性,  不存在struct inode中
通过inode找到文件内容

  1. struct inode
  2. {
  3.     ...
  4.     int i_block[15];//记录文件内容存放的Data Block下标
  5.     ...
  6. }
复制代码
i_blick数组分为[0,11] [12] [13] [14]地域
        此中[0,11]为直接映射,  当文件数据过大,  这些块不敷,  [12]为一级映射,  所指向的块存储的是直接映射的块下标,  这些才是文件的内容,  [13]为二级映射同上,  所指向的是一级映射的块下标,  再从一级映射存储的块找,   [14]为多级映射,  同理
3.重新明确文件

现在我们有了文件体系的明确, 再来重新明确一些文件
新建/删除文件

        所谓新建文件,  就是再inode bitmap中找到一个没有被利用的inode,  初始化文件的属性,  分配block 块,  然后在当前目次文件创建新建的文件的文件名和inode编号的映射关系  
        所谓删除文件,  就是删除当前目次文件中文件名和inode的映射关系,  文件体系开释inode 和block
 目次文件

        目次也是一个文件,  目次文件也有自己的内容,  在目次文件会储存该目次下全部文件的文件名和inode编号的映射关系
        文件名存在于目次中,而不存在于文件自己。我们通过目次来访问文件名,本质是去目次文件中,通过文件名找到对应的inode编号,然后通过inode编号找到文件的属性,再通过属性中的i_block就能访问到文件内容。以是我们通过一个个目次文件就能访问到各种文件,  根目次的inode是确定的,  从根目次开始就可以依次找到全部文件

软硬链接

利用 ln -s [指向文件名][文件名] 来创建软毗连

直接利用 ln [指向文件名][文件名] 建立硬毗连

看起来好像这两个差不多,  都相称于快捷方式,  但它们本质有区别
通过查察它们的inode编号

我们可以发现,  软毗连创建了新文件,  而硬毗连并没有
实际上,  软毗连会创建一个新文件,  新文件的内容就是要毗连的文件路径,  通过这个路径就能找到该文件,  而硬毗连没有创建新的文件,  相称于引用计数,  只是多了一个新的文件名与该inode的映射关系,  由于inode编号在分区内有效,  以是硬毗连也只在分区内有效

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!qidao123.com:ToB企服之家,中国第一个企服评测及软件市场,开放入驻,技术点评得现金

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表