1.参考存储技术原理分析2.正文1.前言Minix是Linux最早的文件系统。Minix文件系统的磁盘布局由6部分组成:bootblock,superblock,i-nodebitmap,Logicalblockbitmap,inode,logicalblock引导块:在文件系统的开头,通常是一个扇区,里面存放着引导程序,用于读取和启动操作系统;superblock:用于存放文件系统在磁盘设备上的结构信息,表示各部分的大小;i-node位图:用来描述磁盘上每个i-node的使用情况,除了第一位,i-node位图中的每一位代表磁盘上每个i-node区域中的一个i-node,所以i节点位图的第1位表示磁盘i节点区域中的第一个i节点。当一个i-node被使用时,i-node位图中对应的位被置位,因为当所有的磁盘i-node都被使用时,寻找空闲i-node的函数会返回0,所以最低位i节点位图的(bit0)是空闲的,在创建文件系统的时候,会预先设置为1,即编号为0的i节点没有被使用,i节点编号从1,编号1保留给根目录对应的i-node。i节点:反映文件逻辑块的元数据位图:描述磁盘上每个逻辑块的用途,除第一个位(bit0)外,逻辑块位图上的每个位依次代表磁盘因此,bit1逻辑块位图的第一个逻辑块表示磁盘上逻辑区域中的第一个逻辑块。当一个逻辑块被使用时,逻辑块位图中对应的位被置位,因为当所有磁盘逻辑块都被使用时,寻找空闲逻辑块的函数将返回0,所以逻辑块的最低位(bit0)没有使用blockbitmap,在创建文件系统1的时候会提前设置。在这种设计下,没有使用编号为0的逻辑块,逻辑块号从1开始逻辑块:保存文件的数据,每个文件只有一个i节点,但可以有0个、1个或多个逻辑块,i节点最重要的作用是作为寻址文件数据的起点,所以文件的逻辑块号数据需要保存在i-node中。2、文件系统对象Linux文件系统对象之间的关系可以概括为文件系统类型、超级块、inode、dentry、vfsmount之间的关系2.1文件系统类型文件系统类型规定了某一类文件系统的行为.存在的主要目的是构造此类文件系统的一个实例,或者称为超级块实例。Linux支持多个文件系统,每个文件系统对应一个文件系统类型file_system_type结构2.2VFS超级块超级块是整个文件系统的元数据容器。对于基于磁盘的文件系统,超级块(superblockonthedisk)是存储在磁盘设备上固定位置的一个或多个块。当在磁盘上加载文件系统时,磁盘上的超级块被读入内存,内存中的超级块由内存构成。其中一部分被各种文件系统共享,被抽取出来,称为VFS超级块,意思是VFS超级块的结构是super_block2.3inode2.4dentrydentry翻译成目录项,但跟不是一个概念文件系统中的目录项,VFS的dentry和具体的文件系统如下图,dentry属于所有的文件系统对象,包括目录、普通文件、符号链接、块设备文件、字符设备文件等.,反映内核中文件系统树中的文件系统对象2.5Filesystemmountvfsmount,文件系统挂载,在Linux系统中,文件系统需要挂载后才能使用,vfsmount对象反映了一个挂载的文件系统实例,Linux内核代码可以通过vfsmount访问这个文件系统实例,但是如果要被用户空间访问,就需要挂载到全局文件系统树上形成子树,vfsmount对象成为一个“连接器”用于将每个本地文件系统链接到全局文件系统树“3.挂载文件系统4.路径搜索5.打开文件6.读取文件7.写入文件8.刷新文件9.块设备文件10.文件系统编程方式
