【Linux】文件系统与软硬连接

在这里插入图片描述

欢迎来到Cefler的博客😁
🕌博客主页:折纸花满衣
🏠个人专栏:题目解析
🌎推荐文章:【LeetCode】winter vacation training

在这里插入图片描述


目录

  • 👉🏻 磁盘
    • HDD的物理存储结构
    • 磁盘的逻辑抽象结构
  • 👉🏻磁盘文件系统
    • 常见磁盘文件系统
    • 磁盘文件系统组成部分
    • 创建一个文件的具体过程
    • dentry
    • 挂载分区
  • 👉🏻硬连接和软连接
    • 区别和应用场景

👉🏻 磁盘

当你谈论磁盘时,通常指的是计算机存储设备中的硬盘驱动器(HDD)或固态驱动器(SSD)。它们都是用于存储和检索数据的重要组件。

硬盘驱动器(HDD):硬盘驱动器使用旋转的磁盘和移动的读写头来存储和访问数据。它由一个或多个磁性盘片组成,每个盘片上都有一个磁性涂层。读写头在盘片上移动,通过磁场读取或写入数据。硬盘驱动器的优点包括较大的存储容量和相对较低的成本

固态驱动器(SSD):固态驱动器使用闪存芯片来存储数据,而不需要任何移动部件。它类似于您在手机、平板电脑或USB闪存驱动器中使用的存储设备。固态驱动器的优点包括更快的数据访问速度、更高的数据传输速率和更好的耐用性。然而,与硬盘驱动器相比,它们通常具有较小的存储容量,并且价格相对较高。

无论是硬盘驱动器还是固态驱动器,它们都是计算机中重要的存储设备。它们用于存储操作系统、应用程序、文件和其他数据,并且对于计算机的整体性能至关重要。

HDD的物理存储结构

在这里插入图片描述
HDD(硬盘驱动器)是一种常见的存储设备,用于在计算机系统中保存和检索数据。它由以下几个主要硬件组成部分组成:

  1. 盘片(Platters):是HDD的主要部分,通常由金属或玻璃制成的圆盘形结构。数据存储在盘片的表面上,每个盘片都有两个表面。

  2. 磁头(Read/Write Heads):位于盘片的表面上,负责读取和写入数据。磁头可以感应盘片上的磁性颗粒,并将其转换为数字数据或将数字数据转换为磁性颗粒。

  3. 手臂(Actuator Arm):连接磁头的部分。手臂可在盘片上移动,将磁头定位到指定的磁道上以读取或写入数据。

  4. 主轴电机(Spindle Motor):驱动盘片旋转的电机。主轴电机使盘片以高速旋转,通常每分钟数千转。

  5. 逻辑板(Logic Board):位于HDD的电路板上,负责控制和管理HDD的操作。逻辑板上包含处理器、内存芯片和接口电路等组件。

  6. 运动控制器(Controller):连接逻辑板和手臂,负责控制手臂的移动,并确保磁头正确定位到指定的磁道上。

以上是HDD的主要硬件组成部分。它们密切协作以实现数据的读取和写入操作。

磁盘的逻辑抽象结构

在这里插入图片描述

👉🏻磁盘文件系统

常见磁盘文件系统

磁盘文件系统是一种用于在计算机硬盘驱动器上组织和管理文件和文件夹的方法。它定义了文件和目录的结构、命名规则、访问权限以及如何在物理介质上存储和检索数据。

以下是几种常见的磁盘文件系统:

  1. FAT(文件分配表):FAT是一种较早的文件系统,最早由微软引入。它使用文件分配表来跟踪文件在磁盘上的存储位置,并支持文件和目录的命名。FAT文件系统广泛应用于早期的Windows操作系统和可移动存储介质(如磁盘和闪存驱动器)。

  2. NTFS(新技术文件系统):NTFS是微软开发的一种高级文件系统,用于Windows NT系列操作系统(包括Windows XP、Windows 7、Windows 10等)。它提供了更高级的功能,如对大容量硬盘的支持、文件压缩、访问控制和日志记录等。

  3. ext4:ext4是Linux操作系统中广泛使用的文件系统,是对先前的ext3文件系统的改进。它提供了更高的性能和可靠性,并支持更大的文件和文件系统容量。

  4. HFS+(Mac OS 扩展):HFS+是苹果公司在早期Mac OS系统中使用的文件系统。它支持文件和目录的命名、访问权限以及对大容量存储介质的支持。

  5. APFS(Apple 文件系统):APFS是苹果公司在最新的macOS和iOS系统中引入的先进文件系统。它具有高级的数据完整性和安全性功能,并支持快照、加密和快速文件系统操作等。

这些是常见的磁盘文件系统,不同的操作系统和应用场景可能会选择不同的文件系统来满足其特定需求。

磁盘文件系统组成部分

磁盘文件系统通常由以下几个组成部分组成:

  1. 分区表(Partition Table):分区表是磁盘上的一个特殊区域,用于记录分区的信息。它定义了磁盘上各个分区的位置、大小和类型等信息。

  2. 引导扇区(Boot Sector):引导扇区位于分区表之前,是磁盘上的第一个扇区。它包含引导加载程序(Boot Loader),用于启动操作系统。引导扇区也包含了其他文件系统的元数据和相关配置信息。

  3. 文件分配表(File Allocation Table):文件分配表是一种常见的文件系统结构,例如FAT文件系统。它记录了文件在磁盘上的存储位置和状态信息,以及文件和目录的命名信息。

  4. 超级块(Superblock):超级块是文件系统的关键元数据结构之一。它包含了文件系统的整体信息,如文件系统类型大小块大小inode表的位置等。超级块在文件系统初始化时创建,并在运行时被读取以获取文件系统的元数据信息。

  5. Inode(Index Node):Inode是文件系统中的索引节点,用于存储文件和目录的元数据,如文件大小、权限、所有者等。每个文件和目录都对应一个唯一的Inode节点

  6. 数据块(Data Blocks):数据块是用于存储实际文件内容的区域。文件系统将文件内容分割成多个数据块,每个数据块通常有固定的大小(如4KB)。文件系统通过Inode节点中的指针将数据块链接在一起,以构建和管理文件的存储。

这些组成部分共同构成了磁盘文件系统的结构和功能,使得文件和目录可以被组织、存储和访问。不同的文件系统可能会有稍微不同的组成部分和实现方式,但大体上都包含了类似的概念和结构。

下面举Linux下的ext2文件系统图来深入了解
在这里插入图片描述

  • Block Group:ext2文件系统会根据分区的大小划分为数个Block Group。而每个Block Group都有着相
    同的结构组成。政府管理各区的例子
  • 超级块(Super Block):存放文件系统本身的结构信息。记录的信息主要有:bolck 和 inode的总量,
    未使用的block和inode的数量,一个block和inode的大小,最近一次挂载的时间,最近一次写入数据的
    时间,最近一次检验磁盘的时间等其他文件系统的相关信息。Super Block的信息被破坏,可以说整个
    文件系统结构就被破坏了

Super Block之所以在多个Block Group存在,就是为了防止一个Super Block的信息被破坏导致整个
文件系统结构就被破坏

  • GDT,Group Descriptor Table:块组描述符,描述块组属性信息
  • 块位图(Block Bitmap):Block Bitmap中记录着Data Block中哪个数据块已经被占用,哪个数据块没
    有被占用
  • inode位图(inode Bitmap):每个bit表示一个inode是否空闲可用。
  • i节点表:存放文件属性 如 文件大小,所有者,最近修改时间等
  • 数据区:存放文件内容

一个文件对应一个inode编号,linux中根据inode编号识别文件,与文件名无关。

因为有了块位图和inode位图,操作系统对文件的管理就非常轻松了,我们想创建一个文件时,就在inode位图中查看哪个比特位为0(即未被使用),此时就可以将该位置比特位对应的i节点表中的inode编号赋这个文件。块位图也是同理,只是对文件内容的分配进行处理。

所以删文件只要改位图,这就解释为什么下载文件慢,而删除文件就非常快了,而且文件之所以能够恢复,就是因为我们只是更改了位图的状态,实际上在数据块中的数据没有清除。但是,如果我们不小心误删了文件,尽量不要进行文件操作,因为新的文件操作可能会将新的文件内容覆盖到我们原本删除的文件对应的数据块,如果数据块的内容被覆盖了,即使文件恢复了,也不是原来的模样了。

创建一个文件的具体过程

[root@localhost linux]# touch abc
[root@localhost linux]# ls -i abc
263466 abc

在这里插入图片描述

🧆 创建一个新文件主要有一下4个操作:

  1. 存储属性
    内核先找到一个空闲的i节点(这里是263466)。内核把文件信息记录到其中。
  2. 存储数据
    该文件需要存储在三个磁盘块,内核找到了三个空闲块:300,500,800。将内核缓冲区的第一块数据
    复制到300,下一块复制到500,以此类推。
  3. 记录分配情况
    文件内容按顺序300,500,800存放。内核在inode上的磁盘分布区记录了上述块列表。
  4. 添加文件名到目录
    新的文件名abc。linux如何在当前的目录中记录这个文件?内核将入口(263466,abc)添加到目录文
    件。文件名和inode之间的对应关系将文件名和文件的内容及属性连接起来。

dentry

dentry(Directory Entry)是Linux文件系统中的一个重要概念,它代表着目录项。每个目录都有一个或多个dentry,用于表示该目录下的文件和子目录

dentry是与路径名相关联的数据结构,它包含了文件或目录的元数据,如文件名、权限、所有者等。dentry还包含指向对应inode的指针,通过这个指针可以获取到文件的具体内容、大小等信息

dentry的主要作用是加速文件系统的操作。当用户打开、读取或写入一个文件时,操作系统需要根据路径名找到对应的inode来执行相应的操作。而dentry充当了一个缓存,当用户再次访问相同的文件时,可以直接从缓存中获取dentry,避免了频繁的磁盘访问,提高了文件系统的性能。

此外,dentry还具有层次化的结构,反映了目录的层级关系。每个dentry都有一个指向其父目录dentry的指针,从而构成了一个目录树。

总结起来,dentry是Linux文件系统中的目录项,通过缓存文件和目录的元数据,加速文件系统的操作,同时构建了目录的层级结构

挂载分区

在Linux系统中,挂载分区是将文件系统连接到文件系统树中的特定位置,以便可以访问其内容。当你插入一个新的磁盘或者创建一个新的分区时,需要将其挂载到文件系统树上的某个目录才能对其进行访问。

以下是在Linux系统中挂载分区的一般步骤:

  1. 创建挂载点:首先,你需要在文件系统中选择一个目录作为挂载点。这个目录将成为访问该分区内容的入口点。你可以选择一个已有的目录作为挂载点,也可以创建一个新的目录作为挂载点。

  2. 查看可用分区:使用命令lsblkfdisk -l查看当前系统上可用的分区和设备信息。确定要挂载的分区的设备名称,如/dev/sdb1

  3. 挂载分区:使用mount命令挂载分区。语法为:

sudo mount <device> <mount_point>

其中,<device>是待挂载的分区设备名称,<mount_point>是挂载点的路径。

  1. 访问分区:分区挂载成功后,你可以通过挂载点路径来访问分区中的文件和目录。可以使用cd命令进入挂载点,然后执行其他操作,如查看文件列表、拷贝文件等。

  2. 卸载分区:当你不再需要访问分区时,可以使用umount命令将其卸载。语法为:

sudo umount <mount_point>

其中,<mount_point>是挂载点的路径。

请注意,执行挂载和卸载操作时通常需要具有超级用户(root)权限,因此需要使用sudo命令或以root身份执行。

挂载分区是将磁盘、分区与文件系统连接起来,使其可用于存储和访问文件。通过正确挂载分区,你可以轻松管理和利用系统中的不同存储设备。

👉🏻硬连接和软连接

在Linux系统中,硬连接(Hard Link)和软连接(Symbolic Link,也称为符号链接或软链接)是两种不同的文件链接方式。

硬连接

  • 硬连接是通过在文件系统中创建一个指向同一inode的新目录项来实现的。换句话说,硬连接是多个文件名指向相同的物理数据块。

硬连接就是在指定目录内的映射关系:文件名<->inode
一个文件真正被删除时:没有文件名<->inode映射关系了,inode内部有引用计数,知道有几个文件名映射关系

  • 硬连接与原始文件之间没有任何区别,它们都指向相同的数据块。因此,删除其中一个硬链接并不会影响其他硬链接或原始文件。
  • 硬链接只能在同一文件系统内创建,不能跨文件系统创建。
  • 修改硬链接或原始文件的内容都会反映在其他连接上。

软连接

  • 软连接是一个指向目标文件或目录的特殊文件。
  • 软连接文件本身包含了目标文件的路径信息。当访问软连接时,系统将追踪到目标文件或目录。
  • 软连接类似于Windows系统中的快捷方式
  • 删除原始文件或目录后,软连接仍然存在,但无法访问到有效的目标。
  • 软连接可以跨文件系统创建。

总结:
硬连接和软连接都允许你创建一个文件名指向另一个文件的链接,但它们的实现方式和行为有所不同。硬连接是多个文件名指向相同的物理数据块,而软连接是一个特殊的文件,指向目标文件或目录的路径。根据具体需求,可以选择使用硬连接或软连接来满足不同的链接需求。

区别和应用场景

硬连接和软连接之间存在的区别和用途如下:

  1. 文件系统中的链接方式不同:

    • 硬连接是通过在文件系统中创建一个指向同一inode的新目录项来实现的,它们与原始文件共享相同的物理数据块。
    • 软连接是一个特殊的文件,其中包含了目标文件的路径信息。
  2. 跨文件系统的支持:

    • 硬连接只能在同一文件系统内创建,不能跨文件系统创建。
    • 软连接可以跨文件系统创建。
  3. 对目标文件或目录的处理:

    • 删除目标文件或目录后,硬连接仍然存在,并且可以继续访问。因为硬连接与原始文件没有关联,只是共享相同的数据块。
    • 删除目标文件或目录后,软连接将无法访问有效的目标。软连接只是指向目标文件或目录的路径,当目标不存在时,软连接失去了有效性。
  4. 修改链接和目标的影响:

    • 修改硬链接或原始文件的内容都会反映在其他链接上,因为它们共享相同的数据块。
    • 修改软连接不会影响目标文件或目录,因为软连接只是指向目标的路径

应用场景:

  • 硬连接通常用于创建文件的备份,或者在不同的位置使用相同的文件内容,以节省存储空间。
  • 软连接常用于创建快捷方式或提供方便访问的链接,可以跨越文件系统,并且在目标文件被替换时仍然有效。

需要注意的是,软连接的性能相对较低,因为它需要解析路径。而硬连接没有这个开销,因为它们直接指向相同的数据块。因此,在选择使用硬连接或软连接时,应根据具体需求和情况做出适当的选择。


如上便是本期的所有内容了,如果喜欢并觉得有帮助的话,希望可以博个点赞+收藏+关注🌹🌹🌹❤️ 🧡 💛,学海无涯苦作舟,愿与君一起共勉成长

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/329288.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

252:vue+openlayers 绘制锥形渐变填充色的圆形

第252个 点击查看专栏目录 本示例的目的是介绍如何在vue+openlayer中绘制带有锥形渐变填充色的圆形。 直接复制下面的 vue+openlayers源代码,操作2分钟即可运行实现效果 文章目录 示例效果配置方式示例源代码(共131行)相关API参考专栏目标示例效果 </

基于Pixhawk和ROS搭建自主无人车(三):ROS通信篇

参考 ArduPilot Development超维空间科技 基于Pixhawk和ROS搭建自主无人车&#xff08;文章链接汇总&#xff09; 1. 硬件接线一览 2. 安装 Mavros 2.1 简介 Mavros 是一个用于与无人机通信的 ROS 功能包&#xff0c;它借助 MAVLink 协议来与 PX4 Autopilot 进行通信&#x…

Vue加载序列帧动图

解读方法 使用<img :src"currentFrame" alt"加载中" /> 加载图片动态更改src的值使用 requestAnimationFrame 定时更新在需要的页面调用封装的组件 <LoadToast v-if"showLoading" /> 封装组件 <template><div class"…

C++力扣题目47--全排列II

47.全排列 II 力扣题目链接(opens new window) 给定一个可包含重复数字的序列 nums &#xff0c;按任意顺序 返回所有不重复的全排列。 示例 1&#xff1a; 输入&#xff1a;nums [1,1,2]输出&#xff1a; [[1,1,2], [1,2,1], [2,1,1]] 示例 2&#xff1a; 输入&#xf…

视觉检测系统:工厂生产零部件的智能检测

在工厂的生产加工过程中&#xff0c;工业视觉检测系统被广泛应用&#xff0c;并且起着重要的作用。它能够对不同的零部件进行多功能的视觉检测&#xff0c;包括尺寸和外观的缺陷。随着制造业市场竞争越来越激烈&#xff0c;对产品质检效率的要求不断提高&#xff0c;传统的人工…

部署YUM仓库及NFS共享存储

引言&#xff1a; 学习YUM 软件仓库&#xff0c;可以完成安装、卸载、自动升级 rpm 软件包等任务&#xff0c;能够自动 查找并解决 rpm 包之间的依赖关系&#xff0c;而无须管理员逐个、手工地去安装每个 rpm 包&#xff0c;使管理员在维护大量 Linux 服务器时更加轻松自如。特…

洗地机如何选择?一篇教会你挑到好用的洗地机

要说当下哪款清洁设备最好用&#xff0c;当数洗地机!洗地机单个操作中能够同时完成扫地和拖地&#xff0c;不仅清洁效果高&#xff0c;还节省力气&#xff0c;甚至处理墙角垃圾灰尘也无需我们蹲下来摩擦地板。好的配置加上性能真的是能帮助我们更快、更有效清洁地面&#xff0c…

【嘉立创EDA-PCB设计指南】2.详解BOM表+C0603封装绘制流程+元件封装其它注意点总结+原理图转到PCB流程

前言&#xff1a;本文详解BOM表C0603封装绘制流程元件封装其它注意点总结原理图转到PCB流程。最终会实现如下图所示的PCB初态。对于封装绘制的流程是一样的&#xff0c;所以只在第2章节对C0603进行详细的封装流程描述&#xff0c;对该PCB的其它元件在第3章节-元件封装的其它注意…

线上研讨会 | 智能供应链计划与高级排程APS助力转型变革

行业背景 近年来&#xff0c;市场环境的快速变化对我国产业链和供应链的要求不断提升&#xff0c; “十四五”规划纲要提到要提升产业链供应链现代化水平。数字化供应链是促进产业链供应链稳定&#xff0c;畅通国民经济循环的重要一环。亟须探寻数字化供应链的核心要义和发展路…

栈(顺序存储、链式存储)

栈的定义 栈&#xff08;Stack&#xff09;是只允许在一端进行插入或删除操作的线性表 栈的操作特性是后进先出LIFO&#xff08;Last In First Out&#xff09; 顺序存储 链式存储

核对表:基本数据类型CHECKLIST:Fundmental Data

核对表&#xff1a;基本数据类型CHECKLIST:Fundmental Data 数值概论 代码中避免使用神秘数值吗&#xff1f; 代码考虑了除零错误吗&#xff1f; 类型转换很明显吗&#xff1f; 如果在一条语句中存在两个不同类型的变量&#xff0c;那么这条语句会像你期望的那样求值吗&#x…

3、深入解析Redis Cluster集群运维与核心原理

在今天的大规模分布式系统中&#xff0c;Redis Cluster已经成为了许多企业选择的分布式缓存方案之一。了解Redis Cluster的运维及核心原理对于确保系统的高可用性和性能至关重要。本文将深入探讨Redis Cluster集群的运维细节和核心原理&#xff0c;以帮助读者更好地理解和优化R…

MT1155-1163总结

1. 首先&#xff0c;单位矩阵是主对角线全为1&#xff0c;其余位置为0的矩阵 主对角线如图&#xff08;虽然好丑&#xff09; 方法一&#xff1a;用一维数组表示&#xff0c;在a[0],a[4],a[8]位置上为一&#xff0c;其余为0 方法二&#xff1a;定义二维数组&#xff0c;在a[…

阿里云服务器怎么样?阿里云服务器优势、价格及常见问题

阿里云服务器ECS英文全程Elastic Compute Service&#xff0c;云服务器ECS是一种安全可靠、弹性可伸缩的云计算服务&#xff0c;阿里云提供多种云服务器ECS实例规格&#xff0c;如ECS经济型e实例、通用算力型u1、ECS计算型c7、通用型g7、GPU实例等&#xff0c;阿里云服务器网al…

uniapp 简易自定义日历

注&#xff1a;此日历是根据接口返回的日期自动对应星期的&#xff0c;返回的数据中也包含星期&#xff0c;其实就是一个div自定义&#xff0c;可根据自己需求更改&#xff1b; 1、组件代码 gy-calendar-self.vue <template><view class"calendar"><…

[Linux 进程(四)] 再谈环境变量,程序地址空间初识

文章目录 1、前言2、环境变量2.1 main函数第三个参数 -- 环境参数表2.2 本地环境变量和env中的环境变量2.3 配置文件与环境变量的全局性2.4 内建命令与常规命令2.5 环境变量相关的命令 3、程序地址空间 1、前言 上一篇我们讲了环境变量&#xff0c;如果有不明白的先读一下上一…

黑马程序员——html css基础——day01——HTML基础

目录&#xff1a; 今日课程介绍 核心技术点标签语法HTML骨架标签的关系注释标题标签段落标签换行和水平线文本格式化标签图像标签 图像属性属性语法路径 相对路径绝对路径超链接标签音频视频综合案例一个人简介综合案例二Vue简介 1.今日课程介绍 今日目标&#xff1a;掌握标…

连接超时的问题

连接超时的问题 通用第三方工具连接超时 connect timeout 方案一&#xff1a; /etc/ssh/sshd_config node1上操作&#xff0c;图是错的 方案二&#xff1a; windows上Hosts文件域名解析有问题 比如&#xff1a; 192.168.xx.100 node1 192.168.xx.161 node1 两个都解析成node…

Peter算法小课堂—并查集

我们先来看太戈编程467题 攀亲戚 题目描述&#xff1a; 最近你发现自己和古代一个皇帝长得很像&#xff1a;都有两个鼻子一个眼睛&#xff0c;你想知道这皇帝是不是你的远方亲戚&#xff0c;你是不是皇亲国戚。目前你能掌握的信息有m条&#xff0c;关于n个人&#xff1a;第i条…

论文翻译: Vision-Language Foundation Models as Effective Robot Imitators

Vision-Language Foundation Models as Effective Robot Imitators 使用视觉-语言基础模型对机器人进行有效的模仿 文章目录 Vision-Language Foundation Models as Effective Robot Imitators使用视觉-语言基础模型对机器人进行有效的模仿ABSTRACT摘要1 INTRODUCTION1 引言2 …