文章目录

  • ​​前言​​
  • ​​一、文件​​
  • ​​创建新文件​​
  • ​​文件更多属性​​
  • ​​二、软硬连接​​
  • ​​创建软连接​​
  • ​​创建硬连接​​
  • ​​区别​​
  • ​​删除连接​​

前言


​正文开始!​

一、文件

[Linux]-----_inode与软硬连接_运维

这张图是基于我们上节课对文件系统的分区管理对应到Linux底层的实际实现的方法!

基于这张图我来带大家了解inode。

  1. 文件= 内容 + 属性----都是数据----都要存储—Linux采用的是将内容和属性数据分开存储的方案!
  2. 内容存储在block中,大小一般是4KB,属性数据存放在inode(就是磁盘上的另一份空间—一般128字节)中。文件内容可能是增多的,但文件的属性是稳定的,
  • Boot Block:包含分区表,告诉操作系统我们的软件在什么位置,与开机有关!
  • Data block:主要以块为单位,进行文件内容的保存!
  • inode table:以128字节为单位,进行inode属性的保存!并且inode属性里面有一个inode编号!一般而言,一个文件,一个inode。一个文件,一个inode号。
ll -i

[Linux]-----_inode与软硬连接_运维_02

  • Block Bitmap:(位图结构)假设有1000个bits,第几个比特位代表第几个文件,比特位的内容代表该文件是否被占用,1表示被占用,0表示没有被占用。
  • inode Bitmap:表示inode块是否被占用!他表征的是inode的使用情况!
  • Group Descriptor Table(GDT):有多少inode,其实的inode的编号,有多少个inode被使用,有多少block被使用,还剩多少,你的总group大小是多少…
  • Super Block:就是我们文件系统的顶层结构了!他表示的是整个分区的一共有多少个块,每个块组的使用情况…宏观的管理整个分区。

创建新文件

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

文件更多属性

stat 文件名

[Linux]-----_inode与软硬连接_文件名_03

二、软硬连接

[Linux]-----_inode与软硬连接_运维_04

创建软连接

ln -s myfile.txt myfile.txt.soft

[Linux]-----_inode与软硬连接_文件名_05

[Linux]-----_inode与软硬连接_linux_06


[Linux]-----_inode与软硬连接_文件名_07

所以软连接就相当于Linux下的快捷方式。
既然是一个独立文件,inode是独立的

那么软连接的文件内容是什么呢??

保存的是指向文件的所在路径!!!

创建硬连接

ln myfile.txt myfile.txt.hard

[Linux]-----_inode与软硬连接_服务器_08

因为硬链接后inode编号相同,所以硬连接就是单纯的在Linux指定的目录下,给指定的文件新增文件名和inode编号的映射关系!

[Linux]-----_inode与软硬连接_运维_09


创建硬连接后我们发现这里的数字变化了。所以我们可以证明这数字就代表这个inode编号的硬连接数。

什么是硬连接数呢?
inode编号,不就是一个"指针"的概念吗?本质就是该文件inode属性中的一个计数器,count,标识了有几个文件名和我的inode建立了映射关系!
简言之,就是有几个文件名指向我的inode(文件本身)!

硬连接的作用

[Linux]-----_inode与软硬连接_硬连接_10


有一个问题:为什么一个目录创建出来默认的硬连接数是2,一个普通文件创建出来的硬连接数是1呢??

因为普通文件的文件名本身就和自己的inode具有映射关系,而且只有一个!

[Linux]-----_inode与软硬连接_运维_11


所以默认一个空目录创建后自己的文件名和.产生了硬连接。

[Linux]-----_inode与软硬连接_文件名_12


我们还可以发现当前路径的…是mydir的上级目录。

所以硬连接可以进行路径间切换!

区别

软硬链接的区别:软连接是一个独立的文件,有自己独立的inode和inode编号。而硬连接不是一个独立的文件,他和目标文件使用的是同一个inode!

删除连接

unlink 文件名

[Linux]-----_inode与软硬连接_硬连接_13


(本章完!)