申明:文中有的图片是网上的以及马哥教育的图片.
内容是我自己写的,介意话,请联系博主,立刻删除。
ext2管理文件的方式:
将存储设备高级格式化其实就是创建文件系统。
创建好文件系统之后。
具体可以参考下图。
Boot Block
在整体的规划当中,文件系统最前面有一个启动扇区(boot sector),
这个启动扇区可以安装开机管理程序,这是个非常重要的设计,这样我们就能够将不同的开机管理程序安装到个别的文件系统最前端
而不用覆盖整个硬盘唯一的 MBR, 这样也才能够制作出多重引导的环境!
Block Group
Super block:Block和Inode的大小,Block和Inode的数量,Block和Inode的已使用和未使用数量,文件系统版本号,最近一次挂载时间等等
GDT:块组名,块组边界信息
Block Bitmap:blcok位图,可以快速查找block是否被占据
inode Bitmap:inode位图,可以快速查找inode是否被占据
inode Table:inode表
Data Blocks:数据块
可以参考下图
文件的搜索过程
目录并不是包含着文件的,而是各个文件索引的集合,目录中存放了inode号和一些元数据,包括,文件名,inode号,大小等
这里讲解下文件的搜索过程式怎么样的
以/etc/pps/aa 为列
1、文件系统能够自引用找到 / 在哪。
2、在 / 文件中,搜索文件名etc,从而得到etc的inode号
3、在inode表里找到/etc对应的inode,从而得到/etc在date区的block位置
4、在date区找到/etc的block后,因为/etc/是目录文件,可以得到pps的inode号
5、在inode表里找到pps对应的inode号,从而得到/etc/pps在date区的block位置
6、在date区找到/etc/pps的block后,因为pps是目录文件,可以得到aa的inode号
7、在inode表里找到aa对应的inode,从而得到aa的block位置
8、在date区找到/etc/pps/aa的数据,结束。
以下内容是上图的各个信息详解
inode的结构(参考图)
Diecct Blocks:1直接指向date
Indircct block:指向一个block,将block作为指针,指向date
Donble Indircct:同理两级指针
Triple Indircct:3级指针
inode的长度以及block的大小,限制了文件的大小
目录信息:
下图是目录文件中的结构.
inode
rec_len:总长度
name_len:文件名长度
file_type:文件类型
name:文件名,\0 是填充位
扩展知识:
日常的文件操作,在文件系统中实际的操作是:
文件删除:inode被标记为空闲,此inode指向的磁盘被标记为空闲
如果inode被引用了多次,且此次删除未使得其引用计数降低为0的话,这意味着文件被删除仅删除了一个访问路径
文件复制:创建一个新文件,并原文件中数据在新文件指向的磁盘快重新写一次。
文件移动:
在同一个分区移动:移动文件仅是改变了文件访问路径
跨分区移动:在新分区创建文件,把数据复制过去,删除原分区数据
软硬连接。(要理解此处内容,仔细参考上文中:文件的查看过程)
硬链接:建立一个链接文件,其inode号,其连接文件的inode号是一样的
软连接:建一个链接文件,新建一个inode号,其inode号指向原文件
从图中,以及上述内容可以看出硬链接和软连接的区别:
1:硬链接原文件和新文件的inode编号一致,而软连接不一样。
2:对原文件删除,会导致软连接不可用,而硬链接不受影响。
3:对原文件的修改,软、硬链接文件内容也一样的修改,因为都是指向同一个文件内容。
本文出自 “键心通明” 博客,请务必保留此出处http://loveyp.blog.51cto.com/4450676/1635977
原文:http://loveyp.blog.51cto.com/4450676/1635977