文章目录
- 前言
- 一、文件
- 创建新文件
- 文件更多属性
- 二、软硬连接
- 创建软连接
- 创建硬连接
- 区别
- 删除连接
前言
正文开始!
一、文件
这张图是基于我们上节课对文件系统的分区管理对应到Linux底层的实际实现的方法!
基于这张图我来带大家了解inode。
- 文件= 内容 + 属性----都是数据----都要存储—Linux采用的是将内容和属性数据分开存储的方案!
- 内容存储在block中,大小一般是4KB,属性数据存放在inode(就是磁盘上的另一份空间—一般128字节)中。文件内容可能是增多的,但文件的属性是稳定的,
- Boot Block:包含分区表,告诉操作系统我们的软件在什么位置,与开机有关!
- Data block:主要以块为单位,进行文件内容的保存!
- inode table:以128字节为单位,进行inode属性的保存!并且inode属性里面有一个inode编号!一般而言,一个文件,一个inode。一个文件,一个inode号。
ll -i
- 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 文件名
二、软硬连接
创建软连接
ln -s myfile.txt myfile.txt.soft
所以软连接就相当于Linux下的快捷方式。
既然是一个独立文件,inode是独立的
那么软连接的文件内容是什么呢??
保存的是指向文件的所在路径!!!
创建硬连接
ln myfile.txt myfile.txt.hard
因为硬链接后inode编号相同,所以硬连接就是单纯的在Linux指定的目录下,给指定的文件新增文件名和inode编号的映射关系!
创建硬连接后我们发现这里的数字变化了。所以我们可以证明这数字就代表这个inode编号的硬连接数。
什么是硬连接数呢?
inode编号,不就是一个"指针"的概念吗?本质就是该文件inode属性中的一个计数器,count,标识了有几个文件名和我的inode建立了映射关系!
简言之,就是有几个文件名指向我的inode(文件本身)!
硬连接的作用
有一个问题:为什么一个目录创建出来默认的硬连接数是2,一个普通文件创建出来的硬连接数是1呢??
因为普通文件的文件名本身就和自己的inode具有映射关系,而且只有一个!
所以默认一个空目录创建后自己的文件名和.产生了硬连接。
我们还可以发现当前路径的…是mydir的上级目录。
所以硬连接可以进行路径间切换!
区别
软硬链接的区别:软连接是一个独立的文件,有自己独立的inode和inode编号。而硬连接不是一个独立的文件,他和目标文件使用的是同一个inode!
删除连接
unlink 文件名
(本章完!)