【Linux】十分钟理解软硬链接

1.磁盘的物理结构

  1. 盘片:一片两面,有一摞盘片。
  2. 磁头:一面一个磁头,一个磁头负责一面的读取(磁头是一起动的)。
  3. 马达:控制盘片的旋转和磁头的往复运动

2.磁盘的物理存储结构

  1. 扇区:磁盘中存储的基本单元,512字节 or 4KB字节。一般的磁盘,所有扇区都是512字节。
  2. 磁道:相同半径上的所有所有扇区构成一个磁道。
  3. CHS定位法:(1)利用磁头确定在哪个面(2)定位磁道(3)根据扇区编号在磁道上定位扇区
  4. 注意:每个扇区的大小是相等的(最新的可能不相等),每个磁道扇区数目相同。

但是CHS是硬件上定位地址的方法,软件需要使用其它定位方式,并和硬件做好解耦工作。

3.文件系统

  • 盘片是一个圆形,怎样将物理结构和数据结构结合起来呢?
    我们可以把盘片想象成磁带一样的结构,这样就能把他想象成线型结构。

  • 一个盘由很多块结构组成,为了方便管理,将块又划分成若干区结构(相当于Windows分盘),再将区分成组
    在这里插入图片描述

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

在这里插入图片描述

  • Block Group:ext2文件系统会根据分区的大小划分为数个Block Group。而每个Block Group都有着相
    同的结构组成。政府管理各区的例子
  • 超级块(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是否空闲可用。
  • i节点表:存放文件属性 如 文件大小,所有者,最近修改时间等
  • 数据区:存放文件内容

在这里插入图片描述

创建新文件需要以下四个操作:

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

4.硬链接

4.1

硬链接形成的文件和源文件的inode数字相同,因此可以看成是原文件的别名。
硬链接只是建立了新文件名和

在这里插入图片描述

有两个硬链接链接数就是3,删掉一个就变成二。硬链接数本质是引用计数。

我们在删除文件时干了两件事情:1.在目录中将对应的记录删除,2.将硬连接数-1,如果为0,则将对应
的磁盘释放。

4.2

当我们了解了硬链接,我们就可以解释之前学过的点和点点了
在这里插入图片描述
其实一个点就是当前目录的硬链接,目录也是文件,因此一个点的硬链接数为2
两个点事是上级目录的硬链接,上级目录只包含一个目录,因此就是自己的一个点加包含目录的两个点还有自己的目录名。

不允许用户给目录建立硬链接,防止产生环路路径。

5.软链接

软链接形成的文件和源文件的inode数字不同,因此是一个独立的文件,新文件中保存的是原文件的路径。

软链接有什么用呢?
——可以当做快捷方式

在这里插入图片描述
可以看到我们想要在test2中使用test3中的文件mytest,这时候只需要建立软链接就可以了。
同样是可以直接运行的。

6.三种时间

在这里插入图片描述

change——属性修改时间
modify——内容修改时间
改内容属性也会变化,modify和change可能一起改
access——查看的时间(不一定每次查看时间都更新,因为频率高)

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
链接和硬链接Linux中常用的两种链接方式。在Linux中,链接是一种特殊的文件类型,用于将一个文件引用到另一个文件。链接的目的是为了简化操作和节省存储空间。 链接,也称为符号链接,是一种特殊的文件类型,它包含指向另一个文件的路径。链接类似于Windows中的快捷方式,当你打开链接时,它会将你重定向到该文件的实际位置。链接可以跨越不同的文件系统,但是如果链接的文件被删除或移动了,链接将变得无效。 硬链接是通过在文件系统上创建一个与原始文件链接的新的指向相同文件的链接来实现的。硬链接是实际的文件,可以与原始文件同时存在于文件系统中,它们共享相同的inode和数据块。如果你改变了其中的一个文件,另一个文件也会被影响,因为它们共享相同的数据块。硬链接只能在同一文件系统上创建。 在理解硬链接之前,我们首先要理解inode的概念。 inode是存储在文件系统中的一个数据结构,它包含文件的元数据,如所有者,时间戳以及文件的权限等信息。当你创建一个新文件时,系统为该文件分配一个唯一的inode号码。硬链接和源文件具有相同的inode号码。每个目录项都包含一个inode编号,该编号指向该目录中的文件或目录,因此可以通过inode编号找到该文件。 当您创建一个硬链接时,您实际上只是将另一个目录项添加到现有文件的inode上。因此,该文件具有多个名称,但实际上只有一个副本。另一方面,链接只是在已有文件的路径上创建了一个新的文件,它不具有相同的inode号码。 总之,链接和硬链接都是用于将一个文件链接到另一个文件的方法。链接是指向另一个文件的路径,硬链接是实际的文件节点。理解它们之间的差异很重要,因为它们的用途、特性及其所涉及的工作方式都各不相同。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

诺伯里-

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值