📝个人主页🌹:Eternity._
⏩收录专栏⏪:Linux “ 登神长阶 ”
🌹🌹期待您的关注 🌹🌹

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述


前言:在Linux操作系统的广阔世界中,文件管理无疑是基石之一,它支撑着整个系统的稳定运行与高效运作。无论是日常办公、软件开发、服务器管理还是大数据处理,都离不开对文件系统的深入理解和熟练操作。因此,掌握Linux基础IO中的文件管理技能,对于每一个Linux用户、系统管理员以及开发者而言,都是至关重要的

Linux的文件系统以其强大的灵活性、可扩展性和安全性而闻名于世。它不仅支持多种类型的文件系统,如经典的ext系列、高性能的xfs、以及面向未来的btrfs等,还提供了丰富的工具和命令,用于文件的创建、删除、查找、编辑以及磁盘空间的管理。这些工具和命令构成了Linux文件管理的基石,使得用户能够高效、灵活地处理各种文件操作任务

本文旨在为读者提供一个全面而深入的Linux基础IO中文件管理的学习指南。通过本文的学习,读者将能够掌握Linux文件系统的基本原理

让我们一同踏上这段学习之旅,探索Linux文件管理的奥秘吧!


📒1. 文件管理系统

Linux文件管理的概念涉及对Linux操作系统中存储的数据(即文件)进行组织、访问、保护、移动、备份和恢复的一系列操作和方法。Linux的文件系统是其核心组成部分之一,它提供了一种结构化的方式来存储和访问存储在硬盘上的数据

文件的管理:

  • 管理被打开的文件
  • 在磁盘中管理没有被打开的文件

管理没有被打开的文件的核心操作是:快速定位文件


文件 = 属性 + 内容

文件存放在磁盘中,方便OS/用户对文件进行管理

磁盘 <- -> 硬件层面 <- -> 物理存储结构
逻辑抽象 <- -> 逻辑存储结构 (OS管理磁盘)
OS + 文件系统 --> 软硬链接


📚2. 磁盘

磁盘是计算机系统中用于存储数据的重要部件,它通过磁头和盘面间的交流读取数据

在这里插入图片描述

盘面可以来存储数据,通过磁头来被读取

盘面俯视图:
在这里插入图片描述

图中的每一圈环状图形被称为磁道,磁道中每一块小扇形则被称为扇区,一个盘面可以有很多同心磁道,一圈磁道也可以有很多扇区

扇区是磁盘中的最小存储单元 — 512字节(部分4KB)


基本构成

  • 磁盘:硬盘中真正用来存储信息的部分,外观如圆盘,中间有孔供马达运转轴通过。硬盘的磁盘数量一般至少有一个,常见的尺寸有3.5英寸、2.5英寸等,不同尺寸的磁盘适用于不同的设备
  • 磁头:负责读写数据的部件,能够感应磁盘上的磁性变化,从而读取或写入数据。磁头的质量对硬盘性能有重要影响

在这里插入图片描述

往扇区写入数据,我们需要先判断写入磁盘面的那一面,在选择盘面的哪个磁道,最后确定在磁道的哪个扇区 -> 这就是CHS定位法


磁盘存储的逻辑抽象结构

磁带也是磁盘的一种,在磁带圈起来时,就类似一个盘面。将其拉直展开,可以抽象的分成由多个磁道构成的线性数组,可以在细化成由扇区为单位组成的数组

在这里插入图片描述
在这里插入图片描述
注意:操作系统也可以按照扇区为单位进行存取,也可以基于文件系统按照块为单位进行数据 存取

在这里插入图片描述

对磁盘的管理,就抽象的变成了对数组的管理


📜3. 文件管理

块组(Block Group)是文件系统中用于组织和管理磁盘空间的一种结构,尤其在像Ext4这样的文件系统中广泛使用。块组的主要目的是提高文件系统的性能、可靠性和管理效率

在这里插入图片描述
关于文件:

  • 在Linux中文件的内容和属性是分开存储的
  • 在块组中文件信息分为文件基本信息和对应文件的管理信息
  • inode在整个分区中具有唯一性,在Linux内核中,识别文件,和文件名无关,之和inode有关

🌞inode

inode是Unix/Linux系统中用于存储文件元信息的数据结构,中文译名为“索引节点”。它是文件系统中的一个核心组件,提供了对文件的快速定位和管理功能

那么到底什么是inode,我们通过Linux操作系统来看一下,我们先创建几个文件和目录,然后输入指令 ls -li

在这里插入图片描述
文件属性多了一串数字,而这些属性就是inode,保存文件属性也是通过inode保存的


inode的基本概念

  • 定义:inode是文件系统中的一种数据结构,用于存储文件的元信息,如文件名、文件大小、文件权限、文件所有者等。这些元信息对于文件系统的管理和操作至关重要
  • 功能:inode的主要功能是作为文件的索引,通过它可以快速定位到文件的数据块,从而实现文件的快速访问和管理

在这里插入图片描述

  • i节点表:存放文件属性 如 文件大小,所有者,最近修改时间等
  • Block Group:ext2文件系统会根据分区的大小划分为数个Block Group。而每个Block Group都有着相同的结构组成。政府管理各区的例子
  • GDT,Group Descriptor Table:块组描述符,描述块组属性信息
  • 块位图(Block Bitmap):Block Bitmap中记录着Data Block中哪个数据块已经被占用,哪个数据块没有被占用

比特位的位置表示block编号,来判断对用位置block是否被使用

  • inode位图(inode Bitmap):每个bit表示一个inode是否空闲可用

在这里插入图片描述

  • 数据区:存放文件内容

在这里插入图片描述

  • 超级块(Super Block):存放文件系统本身的结构信息。记录的信息主要有:bolck 和inode的总量,未使用的block和inode的数量,一个block和inode的大小,最近一次挂载的时间,最近一次写入数据的时间,最近一次检验磁盘的时间等其他文件系统的相关信息,Super Block的信息被破坏,可以说整个文件系统结构就被破坏了

在这里插入图片描述
创建一个新文件主要有一下4个操作:

    1. 存储属性
      内核先找到一个空闲的i节点(这里是263466)。内核把文件信息记录到其中
    1. 存储数据
      该文件需要存储在三个磁盘块,内核找到了三个空闲块:300,500,800。将内核缓冲区的第一块数据复制到300,下一块复制到500,以此类推
    1. 记录分配情况
      文件内容按顺序300,500,800存放。内核在inode上的磁盘分布区记录了上述块列表
    1. 添加文件名到目录

新的文件名abc。linux如何在当前的目录中记录这个文件?内核将入口(263466,abc)添加到目录文件。文件名和inode之间的对应关系将文件名和文件的内容及属性连接起来


⭐如何理解目录

  • 目录内部直接保存文件的文件名和映射关系
  • 修改文件的本质就是修改文件的映射关系
  • 在Linux中,文件名不属于文件属性

挂载:mount

mount命令的基本语法为mount [选项] [-t 文件系统类型] 设备文件名 挂载点。该命令用于将文件系统挂载到指定的目录上

磁盘空间管理:df

df命令:用于显示文件系统的磁盘空间占用情况。例如,df -h以易读的格式显示磁盘使用情况

df -h

在这里插入图片描述


📝4. 软链接与硬链接

在Linux文件系统中,链接(Link)是一种将文件名与实际文件数据关联的机制。链接主要分为两种类型:硬链接(Hard Link)和软链接(Symbolic Link),也称为符号链接


软链接

软链接是一个特殊的文件,内容是指向另一个文件或目录的路径。软链接类似于Windows系统中的快捷方式

指令:使用ln -s命令创建软链接,命令格式为ln -s 原文件或目录 软链接文件或目录

在这里插入图片描述

硬链接

硬链接是指多个文件名指向同一个文件的数据块,表示一组映射关系,即它们共享相同的inode编号。硬链接相当于为同一文件创建了别名

inode内部有引用计数,表示有几个文件名映射关系
在这里插入图片描述

指令:使用ln命令创建硬链接,命令格式为ln 原文件 硬链接文件

在这里插入图片描述

软链接是一个独立的文件,硬链接不是,因为硬链接没有独立的inode编号

硬链接与软链接的区别

硬链接软链接
存在形式文件副本的形式存在,但不占用实际空间以路径的形式存在
跨文件系统不可以可以
对目录的链接不允许可以
inode编号与原文件共享相同的inode编号有自己的inode编号,但数据块包含目标文件的路径名
删除操作删除其中一个文件名,不会影响另一个文件名的访问删除原文件或目录后,软链接变为悬空链接,无法访问目标
同步性对硬链接或原文件的任何修改都会同时反映在另一个文件上修改软链接、硬链接和源文件,访问三者都是同步变化的(但软链接指向的内容可能因原文件删除而失效)

在建立硬链接时,我们不允许对目录进行链接,因为硬链接的inode与原文件共享,这样我们在查找文件的时候,可能会造成环形路径,而无法结束


acm

下面解释一下文件的三个时间:

  • Access 最后访问时间
  • Modify 文件内容最后修改时间
  • Change 属性最后修改时间

📖5. 总结

在探索Linux基础IO(输入输出)中的文件管理的旅程即将告一段落之际,我们不禁要感慨这一领域所蕴含的深厚底蕴与无限可能。文件管理,作为Linux操作系统的核心功能之一,不仅仅是简单地创建、删除、移动文件那么直接,它更是系统资源管理、数据安全、乃至高效编程的基石

我们也窥见了Linux文件系统中硬链接与软链接(符号链接)的奥秘,它们以不同的方式指向文件系统中的对象,为文件共享与快捷方式提供了强大的机制。而对于更高级的文件系统特性,如挂载点、文件系统类型(如ext4)及其特性,我们也有了初步的认识,这些知识对于管理大规模数据、优化存储性能至关重要

希望每一位学习者保持好奇心和求知欲,继续深入探索Linux的广阔天地!
在这里插入图片描述
希望本文能够为你提供有益的参考和启示,让我们一起在编程的道路上不断前行!
谢谢大家支持本篇到这里就结束了,祝大家天天开心!

在这里插入图片描述

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐