VFS
i-node和FS
(例如EXT
)i-node之间有什么区别?
EXT
i-node是否可能是持久的(包含/指向数据块),但VFS
i-node是在读取/使用{{}之后在i-node缓存中创建的。 1}} i-node? p>
或者EXT
i节点只是VFS
i-node(它是相同的)的图像和那些系统中的i节点,它们不与i-一起工作节点(例如FS
)必须被模拟(如何?)以允许FAT, NTFS
与那些VFS
一起工作,就像它们支持i节点一样?
答案 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结构。
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