虚拟文件系统,首先是内核子系统,在底层文件系统接口上建立的一个抽象层,以便兼容各种文件系统,针对用户对物理介质的操作首先通过VFS、具体文件系统,最后到物理介质
文件系统其实是特殊的数据分层存储结构,包含文件、目录和相关控制信息(超级块),文件系统的传统抽象概念:
-
文件:有序字符串,目录也是文件
-
目录项:路径的每个组成部分
-
索引节点:文件的元数据(访问控制权限、大小、拥有者等)
-
安装点:在全局层次结构中被称作命名空间
VFS的对象类型:
-
超级块对象:代表一个具体的已安装文件系统,struct super_block
-
索引节点对象:代表一个具体文件,内核在操作文件或目录时需要的全部信息,struct inode,针对具体文件系统不同,索引节点存放形式可能是磁盘inode、文件、数据库
-
目录项对象:代表一个目录项,是路径的一个组成部分,struct dentry 为了方便查找操作,没有对应的磁盘数据结构,三种状态(被使用、未被使用、负状态),VFS遍历路径名中所有元素再逐个解析成目录项对象非常费时,所以内核使用目录项缓存(dcache),同时也提供对索引节点的缓存(icache)
-
文件对象:代表由进程打开的文件,已打开文件在内存中的表示,没有对应的磁盘数据结构,
-
file_system_type:描述各种特定文件系统类型
-
vfsmount:描述一个安装文件系统的实例,清理文件系统和所有其他安装点间的关系是最复杂的,所以使用vfsmount来跟踪这些关联信息
VFS中与进程相关的数据结构:
-
file_struct:所有与单个进程相关的信息
-
fs_struct:文件系统和进程的相关信息
-
namespace:唯一的文件系统层次结构
阅读(1882) | 评论(0) | 转发(0) |