组成:超级块、目录结构、描述文件属性的结构,文件系统相关 *** 作
sysfs:超级块,目录sys_dirent,,属性kset、kobject
vfs:超级块,目录dentry,属性inode
bdevfs:超级块,目录dentry,属性bdevfs_inode(嵌在block_device中)
超级块、空闲表、目录文件(文件控制块FCB)、普通文件、与文件系统有关的 *** 作(查找、读写等)
超级块——文件系统中第一个块被称为超级块。描述文件系统块大小、空闲表相关的属性(比如地址、每一项大小等)、根目录地址
空闲表——磁盘上空闲磁盘块
目录文件——存放文件名、文件属性、文件地址等信息
把目录文件拆分为两部分:与文件查找有关的部分(文件名、文件类型)、文件属性部分(inode、FAT)
顺序存储——把文件存放在连续的扇区上
链式存储——把文件存放在不连续的文件块上,每个文件快的结束端有存放有下一个文件块的地址
索引存储——把存放文件的所有块号集中放在一个索引结构上
优劣:顺序存储,读取速度更快,但容易浪费大量磁盘存储空间;链式存储,可以充分利用内存空间,但是不能随机访问文件内的任意部分,访问速度慢;索引存储,可以随机访问文件的任意部分,可以看作链式存储的优化方案。
linux磁盘文件系统采用ext2
组织方式:超级块、空闲块位图、只有目录名的目录文件、inode位图、inode(含文件属性、文件磁盘地址)、索引存储方式、ext_fIle_operations表、ext_file_inode_operations表
文件存储方式:索引存储。
硬链接目录共享一个inode。由于硬链接是直接将文件名与索引节点号(即inode号)链接,因此硬链接存在以下几个特点: 1、文件有相同的inode号及data block,这使得修改其中一个硬链接文件属性或文件数据时,其他硬链接文件都会发生相应修改;2、只能对已存在的文件进行创建;3、不能跨文件系统(即分区)进行创建;4、不能对目录文件进行创建;5、删除其中一个硬链接文件时,不会对其他硬链接文件产生影响。
软链接则是一个文件,文件内存储有目标文件的路径。创建软链接时,目标文件inode中的链接计数 i_nlink 不会增加。由于软链接有着自己的索引节点号(即inode号)以及用户数据块(data block),因此没有硬链接的诸多限制,它的特性如下:1、软链接有自己的文件属性、inode号和data block,但是编辑文件其实就是编辑源文件;2、可以对不存在的文件或目录进行创建;3、可以跨文件系统(即分区)进行创建,使用ln命令跨文件系统创建时,源文件必须是绝对路径,否则为死链接;4、可以对文件或目录文件进行创建;5、删除软链接并不影响源文件,但源文件被删除,则相关软链接文件变为死链接(dangling link),若源文件(原地址原文件名)重新被创建,则死链接恢复为正常软链接。
目的:封装好不同文件系统,向上提供统一的接口
组成:超级块superblock、目录项dentry、文件属性inode;文件系统类型file_system_type、描述文件系统安装在哪个父文件系统下vfsmount
如图在vfs中安装ext2和fat文件系统:即置i_ops、i_fops、d_ops为各个文件系统独有的 *** 作,超级块中的s_fs_info指向具体文件系统的超级块;vfsmount中描述有文件系统的安装点。
先把安装点记录在vfsmount中。根据file_system_type中的读超级块方法,读取super_block,再根据super_block中的构造inode方法,构造一inode并初始化;然后根据inode->i_ops构造dentry
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)