文件系统当中会涵盖很多文件元数据,就是属性数据,对应的是inode里面的字段,指令ls显示出来的画面全都是属性。所以你显示文件的时候,他会把当前目录里面的内容拿出来,文件名和inode的映射关系,找到inode,再根据inode编号找到inode属性,然后挑出要显示的属性打印出来就行。
这个分区里面分了很多块组,组里面的内容就是SB、GDT这些,这个是LinuxExt2文件系统,因为Ext2较简单,是磁盘文件系统图,上面分区里的信息可能会整体或局部性的将属性字段在操作系统启动时,会预加载诸如Super block块组、常用的块组描述符、位图、inode表,他全都给你干到内存,只有数据块data blocks是需要的时候在拿,所以在内存里做对应的数据读取操作就很快。磁盘是典型的块设备,磁盘分区被划分为一个个块组,一个块的大小是格式化的时候写文件系统的时候是确定的,并且不可以更改。例如用mke2fs的-b选项可以设定block块大小为1024、2048或4096,一般文件系统建议全都是4096,启动块(Boot Block)的大小是确定的。
Block Group块组:ext2文件系统会根据分区的大小划分为整个Block Group,而每个Block Group都有着相同的结构组成。
超级块Super Block:存放文件系统本身的结构信息,比如block和inode的总量、未使用的block和inode的总量、一个block和inode的大小、最近一次写入数据的时间,最近一次检验磁盘的时间等其他文件系统相关的信息,Super Block的信息被破坏,可以说整个文件系统就被破坏了,所以在很多块组里这个Super Block字段会重复出现,从而实现备份。
系统挂掉时有一个现象,当你开机的时候可能会弹出“系统检测到你的系统有故障是否要尝试恢复”你点击是,过分钟就给你恢复出来了,实际上可能是你的超级块有问题,它在进行数据恢复。
GDT,Group Descriptor Table:块组描述符,描述块组属性信息。
块位图(Block Bitmap):Block Bitmap中记录着Data Block中哪个数据块已经被占用,哪个数据块没有被占用
inode位图(inode Bitmap):每个bit表示一个inode是否空闲可用。
i节点表:存放文件属性 如 文件大小,所有者,最近修改时间等
数据区:存放文件内容
简述读取文件过程
ls file -i(查看file文件inode编号),假设编号是123,当前所处的目录会包含inode和文件名的映射关系,所以找到文件名就找到inode编号,在inode表里面找到inode,它里面有和数据块对应的映射关系,比如10 20 30,就会去对应的数据区里的对应数字10 20 30去找,最后属性的内容就全找到了。