【Linux】磁盘结构 | 文件系统 | 软硬链接

这篇具有很好参考价值的文章主要介绍了【Linux】磁盘结构 | 文件系统 | 软硬链接。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

文件的状态有被打开和没有被打开,之前谈到一个文件被进行读写,就要打开加载到内存中,通过对应的系统调用,fd文件描述符的管理,write和read等函数的增删查改。并且借助缓冲区对文件属性和内容的修改。

大部分文件是没有被打开的(不需要访问),都在磁盘里保存的!对于没被进程打开的文件也要进行管理。在一个偌大的磁盘中,需要找到某份内容,就要进行核心工作------快速定位!

文件的管理工作包括:1、打开的文件进行管理  2、没被打开的文件在磁盘里管理

这一个管理工作就叫文件系统。本质就是文件的存储问题。

了解磁盘的物理结构

磁盘是计算机唯一的机械设备,早些年计算机用的激素机械硬盘,这几年逐步过渡到ssd。根据冯诺依曼体系,里cpu越员,速度就会越慢。磁盘的速度是慢于内存慢于ssd。

虽然磁盘的速度效率慢,但是它的造价便宜,内存容量大。所以企业一般是使用机械硬盘。

【Linux】磁盘结构 | 文件系统 | 软硬链接,linux,linux,服务器,文件,IO【Linux】磁盘结构 | 文件系统 | 软硬链接,linux,linux,服务器,文件,IO

磁盘的主要结构

包括盘片和磁头

【Linux】磁盘结构 | 文件系统 | 软硬链接,linux,linux,服务器,文件,IO

盘片:一片有俩面

磁头:一个磁头负责一片,用来读取修改1或0

简述这一个过程:
一个磁盘会有多个盘片堆叠。一个磁头负责一个盘片。盘片沿着指定方向高速旋转,磁头沿着半径方向转动,一秒钟内盘片可能转了上万次。因此在这样的高速旋转下,盘面的每一个小单元都能被识别到。

这里需要主要磁头和盘片不是贴在一起,而是非常接近。因此一个细微的抖动或者是灰尘都会影响磁盘的数据。

写入:计算机的世界上只有0和1,0和1是一种标志,就好比N和S级。在高速旋转中,磁头通过磁化将一个比特位的空间磁化为0或1的过程就是写入。


磁盘的存储结构

【Linux】磁盘结构 | 文件系统 | 软硬链接,linux,linux,服务器,文件,IO

这里对磁盘的盘片详细介绍。一个盘片可以等分分成多个扇形,每一个扇形就叫做扇区。

磁盘又可以做同心环,每俩个环之间包围的区域就叫做磁盘。

因此,研究盘片主要是研究扇区和磁道。一个磁道可以有多个扇区,一个扇区也可以有多个磁道。这是一个划分。

扇区就是磁盘的最小存储单元512字节,4kb.

磁头Head

磁道 Track

扇区 Sector


CHS定位法

【Linux】磁盘结构 | 文件系统 | 软硬链接,linux,linux,服务器,文件,IO

一个磁盘有许多块盘片,盘片上有扇区和磁道。如何在一个磁盘中找到指定位置的数据?

多个磁道堆叠,就好比一个空心的圆柱cylinder 。

寻找地址的方法:

  1. 选择哪一面: 本质是选择磁头
  2. 选择哪一个磁道 :因为确定了面,所以要确定磁道,就是确定哪一个柱面
  3. 选择在磁道上的哪一个扇区

这一个过程就是Head Cylinder Sector  CHS定位法 


存储的逻辑抽象

将磁盘的结构由圆盘抽象成线性

【Linux】磁盘结构 | 文件系统 | 软硬链接,linux,linux,服务器,文件,IO

类似于磁带,我们将圆盘拉直后,就是线性的存储介质

【Linux】磁盘结构 | 文件系统 | 软硬链接,linux,linux,服务器,文件,IO

这一个将磁盘的抽象线性化,得到的数组地址。就叫做LBA(逻辑块地址)

那么我们想要对磁盘写入只需要知道LBA地址,然后通过LBA与CHS的映射关系就能在磁盘上找到那一块空间。

举例
假设:LBA地址为1234,有俩片盘片,共4面,每面可以存储1000字节,每面磁道有10个,扇区有100个

1234 / 1000=1 在第一面上(从0开始计算)

234/10=23  第23个磁道上

234/100=2  第2个扇区上

因此就是得到HCS

这样,我们对磁盘的管理就转化为对扇区数组的管理

OS可以按照扇区为单位进行存取,也可以基于文件系统,按照文件块对文件系统数据存取。

总结:
对存储设备的管理,OS层面就是对数组的增删查改

文件系统

磁盘里的文件是庞大的,为了便于管理,通常会将抽象的线性LBA拆分成小部分,将每一小份管理好,借鉴经验,来管理整体。这是分治的思想。

假设磁盘有500G。可以通过分区来将一个磁盘分成几个小区。通常我们的笔记本就有一块磁盘,一块磁盘被分成C盘\D盘。假设我们将500G分成五个区,每个区域就是100G,在对100G划分成组,每一份就是2G。

【Linux】磁盘结构 | 文件系统 | 软硬链接,linux,linux,服务器,文件,IO


inode

【Linux】磁盘结构 | 文件系统 | 软硬链接,linux,linux,服务器,文件,IO

每个区的起始位置都有一个Boot Block

Boot  Block是至关重要的 记录OS用于引导用户的操作与配置,记录分区的信息等。

每个区的划分就是组,下面对组详细研究

【Linux】磁盘结构 | 文件系统 | 软硬链接,linux,linux,服务器,文件,IO

一个组被划分成 super block(超级块)         group descriptor table(组织描述符)  block bitmap(块位图)        inode bitmap( i结点位图)          bata block(数据块)


i结点表


用来存储文件的属性,如大小,所有组,权限,修改时间等

inode表应该是一个定长的结构体

struct inode{
    大小,权限,所属组,ACM,inode编号等
    引用计数
    block[n]
}

每个inode结构体的大小是128字节,一般而言一个文件就有一个inode编号,一个组有多少个inode编号是可以计算的  一个组的大小是4KB 4KB=4096字节 就有inode=4096/128=32个


数据段

:存放文件内容

ionde结构体会记录编号 

通过数据块的映射关系就能快速找到需要的内容

其中

0-12为 1 级映射

13为间接映射

14为3 级映射

一级映射:1-》2    2-》3

间接映射   13-》20

三级映射  向四面八方(发散)寻找

【Linux】磁盘结构 | 文件系统 | 软硬链接,linux,linux,服务器,文件,IO


inode位图/块位图

来标识每一个bit的inode(数据块)是否空闲可用

用法同位图 0表示空闲/1表示存在


超级块(super block)

用来记录文件系统本身的基本信息。包括inode和数据块的总量,未使用的inode和block数目,挂载信息,最后一次检擦磁盘的时间。

文件=内容+属性 都是数据 并且内容和属性是分开存储的

要把多个文件的数据写入组中,就要先把管理组的信息写入。

一个磁盘被格式化后,就是重新写入管理者信息。要想使用分区,就要先进行挂载。

如果超级块被破坏,那么就不能正常使用磁盘。但是OS会对超级块拷贝几份到不同的组起始位置,以备意外的修改。


细节问题


文件的内容和属性是分开的,inode标识符是文件的唯一标志,文件名和inode是映射关系,Linux识别文件只认inode

描述文件的创建

根据文件名 映射到空闲的inode_bitmap 把0修改为1,找到对应inode表的结点,写入相应的属性。为其分配数据块,向数据块写入信息。再block_bitmap对应位置的0修改为1,建立inode 和 datablock的映射关系,最后返回inode

创建文件,一定是再某个路径底下!

通过inode编号->找到所处目录->根据文件的inode找到目录的data block->将文件名和inode编号映射关系写入目录数据块中。

文件的删除

在文件目录中找到 inode,再找到对应的block,在数据块里通过映射关系找到要删除文件的inode编号

再根据inode的编号找到block group(组) ,在俩个(inode和block)位图中,都将1修改为0。

最后在目录的数据块映射除,把文件名和inode映射关系解除。完成删除工作。

软硬链接

【Linux】磁盘结构 | 文件系统 | 软硬链接,linux,linux,服务器,文件,IO

在当前路径底下,有test.txt文件和dir目录


软链接

类似于window的快捷方式

通过指令 ln -s test.txt test.soft 将前的文件链接到后

【Linux】磁盘结构 | 文件系统 | 软硬链接,linux,linux,服务器,文件,IO

通过ls -il查看inode 得到源文件和软连接的文件的inode不同,不是同一份文件!

因此软链接是创建独立文件,有独立的inode

软链接的内容是指向目标文件的路径

如果删除了源文件,链接文件存在。但是不能存在或者执行

目录是无法进行软链接的


硬链接

【Linux】磁盘结构 | 文件系统 | 软硬链接,linux,linux,服务器,文件,IO

创建文件myfile.txt 通过硬链接指令 ln myfile.txt myfile.hard

通过ls -il指令 对比源文件myfile和硬链接文件myfile.hard得到这俩个文件是同一个inode编号,因此它们不是独立文件,是同一份文件。

还可以观察到 文件权限后的标识符是软硬链接数目

软链接不改变链接数目

硬链接改变链接数目

删除硬链接文件后,源文件的软硬链接数目减一

删除源文件后,硬链接的文件链接数目会减一

这里就涉及到了引用计数

硬链接的本质就是在目录下建立的文件名和inode的映射关系

被硬链接一次映射关系就会多1 ,引用计数会增加。

当文件名和inode的映射关系全部解除  ,计数从1减到0时。文件才会被删除。找到inode编号,修改inode位图和block位图

目录的链接数:

一个目录被创建出来,就有俩个链接数,链接文件为本身目录和当前目录下的 .

如果在目录下建立新目录,上一层目录的链接数也会增加

【Linux】磁盘结构 | 文件系统 | 软硬链接,linux,linux,服务器,文件,IO

目录硬链接会出现路径错误

软硬链接就在为了不切换路径,而能够打开的快捷方式文章来源地址https://www.toymoban.com/news/detail-807848.html

到了这里,关于【Linux】磁盘结构 | 文件系统 | 软硬链接的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Linux】-文件系统的详解以及软硬链接

    💖作者:小树苗渴望变成参天大树🎈 🎉作者宣言:认真写好每一篇博客💤 🎊作者gitee:gitee✨ 💞作者专栏:C语言,数据结构初阶,Linux,C++ 动态规划算法🎄 如 果 你 喜 欢 作 者 的 文 章 ,就 给 作 者 点 点 关 注 吧! 今天我们开始讲解文件系统,上一篇我们通过文件操作,

    2024年02月04日
    浏览(27)
  • 【Linux】什么是文件系统及inode?如何创建软硬链接?软硬链接有什么作用?

    了解一下文件系统: Linux ext2文件系统,上图为磁盘文件系统图(内核内存映像肯定有所不同),磁盘是典型的块设备,硬盘分区被 划分为一个个的block。一个block的大小是由格式化的时候确定的,并且不可以更改。例如mke2fs的-b选项可以设 定block大小为1024、2048或4096字节。而

    2024年02月11日
    浏览(36)
  • 【Linux】基础 IO(文件系统 & inode & 软硬链接)-- 详解

    1、前言 我们一直都在说打开的文件,磁盘中包含了上百万个文件,肯定不可能都是以打开的方式存在。其实文件包含打开的文件和普通的未打开的文件,下面重点谈谈未打开的文件。 我们知道打开的文件是通过操作系统被进程打开,一旦打开,操作系统就要维护多个文件,

    2024年03月21日
    浏览(35)
  • 【Linux】基础IO——文件系统|软硬链接|动静态库

    基于上篇博客所写到的文件各种操作都是基于被打开文件所进行操作的,那么如果一个文件没有被打开它存在哪里呢?这个答案毫无疑问肯定是存在于磁盘上的。那么,对于一个没有打开的文件(也就是磁盘文件)我们应该如何理解呢? 这里我们所要讲的磁盘是机械硬盘、即

    2024年02月04日
    浏览(33)
  • 【Linux】文件系统中inode与软硬链接以及读写权限问题

    我们接下来以磁盘举例: 文件=文件内容+文件属性 Linux中文件内容与属性是分开存储的。 文件内容:在数据块中存着 文件属性:在inode中存着 Block Group:ext2文件系统会根据分区的大小划分为数个Block Group。而每个Block Group都有着相同的结构组成。政府管理各区的例子 超级块(

    2024年02月05日
    浏览(60)
  • 【探索Linux】—— 强大的命令行工具 P.13(文件系统 | 软硬链接 | 动态库和静态库)

    在计算机科学领域中,Linux 系统一直以来都是备受推崇的操作系统之一。其中,文件系统、软硬链接、动态库和静态库是 Linux 系统中非常重要的概念,在实际应用中扮演着不可或缺的角色。 在上一篇文章中,我们了解了 Linux 系统中文件描述符、重定向以及基础 IO 操作的相关

    2024年02月04日
    浏览(37)
  • [Linux]理解文件系统!动静态库详细制作使用!(缓冲区、inode、软硬链接、动静态库)

            hello,大家好,这里是bang___bang_,今天来谈谈的文件系统知识,包含有缓冲区、inode、软硬链接、动静态库。本篇旨在分享记录知识,如有需要,希望能有所帮助。 目录 1️⃣缓冲区 🍙缓冲区的意义 🍙常见缓冲区刷新策略 🍙缓冲区位置猜想 🍥现象猜测 🍥现象解

    2024年02月13日
    浏览(31)
  • linux系统删除文件之后服务器磁盘空间未释放处理

    一、通过rm 删除文件之后磁盘空间未释放,这是有进程仍在占用被删除的文件,要想真正的删除,只需要停止或重启进程,就会自动释放磁盘空间 二、应用进程很重要不能重启或停止,可以使用以下方法: 1.查看占用删除文件的进程号 使用lsof命令 lsof命令不存在,安装命令

    2024年02月06日
    浏览(49)
  • 【Linux对磁盘进行清理、重建、配置文件系统和挂载,进行系统存储管理调整存储结构】

    继上一篇 【Linux上创建一个LVM卷组,将多个物理卷添加到卷组中使用】 创建一个卷组,并将多个物理卷添加到该卷组中。 在卷组上创建一个逻辑卷,并进行文件系统格式化。 将逻辑卷挂载到指定目录并自动挂载。 扩展逻辑卷的大小,并调整文件系统以适应扩容后的存储空间

    2024年01月22日
    浏览(31)
  • 【linux】文件系统+软硬连接+动静态库

    自我名言 : 只有努力,才能追逐梦想,只有努力,才不会欺骗自己。 喜欢的点赞,收藏,关注一下把! 文件分为:被打开的文件和没被打开的文件,前面两篇博文主要讲解的是进程与被打开文件的关系。今天这篇博客讲的是没被打开的文件如何在磁盘上存放,文件系统如何

    2024年02月07日
    浏览(25)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包