VFS和FS i节点的区别

时间:2014-06-04 15:47:01

标签: linux operating-system filesystems inode

VFS i-node和FS(例如EXT)i-node之间有什么区别?

EXT i-node是否可能是持久的(包含/指向数据块),但VFS i-node是在读取/使用{{}之后在i-node缓存中创建的。 1}} i-node?

或者EXT i节点只是VFS i-node(它是相同的)的图像和那些系统中的i节点,它们不与i-一起工作节点(例如FS)必须被模拟(如何?)以允许FAT, NTFS与那些VFS一起工作,就像它们支持i节点一样?

1 个答案:

答案 0 :(得分:4)

您似乎已经自己回答了问题:)

让我们考虑一下EXT4的情况:

文件系统inode以struct ext4_inode所描述的格式存储在磁盘上。 struct ext4_inode_info只是内存中的代表。 VFS inode也是一个内存中对象,它包含与文件系统类型无关的通用信息,因此可以被抽象。它是从inode缓存(使用slab分配器获得的内存池)中分配的.VFS struct inode嵌入在特定于文件系统的内存中的struct inode中。例如,struct ext4_inode_info有一个名为struct inode vfs_inode的成员。给定VFS inode,您可以使用内核代码中的标准container_of宏获取FS特定的inode。因此,任何FS在VFS移交通用inode结构时都可以获得它自己的inode结构。

查看使用__ext4_new_inode()

创建新inode时会发生什么

FAT通常将元数据(即inode信息)存储在目录条目上。所以Linux胖驱动程序只是reads它,填充内存中的必要字段。由于FAT中没有inode的概念,因此inode编号是一个随机数 - 对iunique()的调用是准确的。

VFS的一些好资源:

http://www.win.tue.nl/~aeb/linux/lk/lk-8.html

http://lxr.free-electrons.com/source/Documentation/filesystems/vfs.txt