一、什么是虚拟文件系统
虚拟文件系统(Virtual File System,VFS)是一种用于网络环境的分布式文件系统,它是允许操作系统使用不同的文件系统实现的接口。
VFS 对 Linux 每个文件系统的所有细节进行抽象,使得不同的文件系统在 Linux 内核以及系统中运行的其他进程看来都是相同的。严格说来,VFS 并不是一种实际的文件系统,它只存在于内存中,在系统启动时建立,在系统关闭时消亡。
它的作用是屏蔽各文件系统之间的差异,给用户、应用程序一个统一的接口。
二、 VFS定义的对象类型
超级块(super_block) | 每个文件系统都有一个超级块,它包含了文件系统的基本元数据信息,例如文件系统类型、大小、状态等,还包括其他与元数据相关的信息(元数据) |
索引节点(inode) | inode 是文件系统中的一个重要数据结构,用于存储文件或目录的元数据信息,比如文件的所有者、访问时间、文件类型、权限、大小等,同时还包含了block位置 |
文件对象(file) | 代表一个被进程打开并关联使用的文件,它包含了对应的 inode 指针、当前读写位置等信息 |
目录项(dentry) | 用于表示文件系统中的目录和文件,保存了文件(或目录)名称和具体的inode(索引节点)的对应关系 |
2.1 超级块
当inode剩余数为0时,磁盘就不可以再写入文件,同时block数量为0时也不可以。inode的数量比例和block数量比例不一致 ,一般inode的数量会少一点。(如果你的系统里面小文件过多,会造成你的inode耗尽 ,你的block还有)
查看文件系统用了多少inode 还剩多少inode
df -i
2.2 索引节点
查看文件系统的元信息
ext4文件 | xfs文件 |
---|---|
dumpe2fs | xfs_info |
查看文件的inode号
ls -i 文件名
查看inode的信息
stat 文件名
2.3 目录项
文件名 | inode |
---|
三、文件系统如何读到文件
1、根据文件名通过目录项知道它的inode号
2、通过inode号找到inode table里的inode
3、通过inode里的block指针,找到对应的数据块