我们先来看一下Linux下的磁盘分区:
磁盘中的分区:
swap:作为交换内存使用。
filesystem:文件系统分区,用于文件存储,文件系统分区可以有多个,各自有各自的文件系统
由此引入了文件系统这个概念:用于磁盘中文件管理的系统,称为Linux ext2文件系统。
磁盘文件系统图:
创建一个inode{包含文件的大小、权限信息、实践属性、数据地址、文件元信息}
文件系统的参数介绍:
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是否空闲可用。
inode节点表(data Bitmap):存放文件属性 如 文件大小,所有者,最近修改时间等
数据区:存放文件内容
有了上述的理解来看一下存储文件和查找文件流程:
存储文件流程:
通过超级块大小快速找到inode_bitmap和data_bitmap,通过位图快速找到空闲的inode节点以及数据块区域,存储文件数据,以及文件元信息到inode中,并且在inode中记录数据的存储块号,在文件所在的目录中记录这个文件的目录项—文件的inode节点号,文件名称。
查找文件的流程:
通过文件名所在父目录的目录项中找到文件名对应的目录项,找到文件对应的inode节点号,接着在文件系统中找到inode区域,通过inode节点号找到inode节点,进而找到文件的数据存储位置,获取文件数据。
以上解释可以知道,真正在磁盘上找文件找的是inode。
理解硬链接和软链接:
硬链接和软链接:都是针对 源文件创建的文件,通过这两种文件就可以实现访问源文件。
创建硬链接文件:ln src.txt src.hard
创建软链接文件:ln src.txt src.soft
区别:软链接文件是一个独立的文件,有自己inode节点,数据存储的是源文件路径,通过保存路径访问源文件。
硬链接文件与源文件没有什么不同,共用一个inode节点,通过同一个inode节点访问数据。
所以删除源文件,软链接文件会失效,硬链接文件不受影响。