【Linux基础IO】从零到一:文件管理系统深度探索

发布于:2024-10-10 ⋅ 阅读:(60) ⋅ 点赞:(0)

📝个人主页🌹: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的广阔天地!
在这里插入图片描述
希望本文能够为你提供有益的参考和启示,让我们一起在编程的道路上不断前行!
谢谢大家支持本篇到这里就结束了,祝大家天天开心!

在这里插入图片描述


网站公告

今日签到

点亮在社区的每一天
去签到