正文开始!
这张图是基于我们上节课对文件系统的分区管理对应到Linux底层的实际实现的方法!
基于这张图我来带大家了解inode。
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:就是我们文件系统的顶层结构了!他表示的是整个分区的一共有多少个块,每个块组的使用情况…宏观的管理整个分区。
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 文件名
(本章完!)