inode 编号是否保证(例如通过标准)在重新启动、重新安装或什至在被所有进程关闭然后再次打开后都相同?例如。它可以在打开文件时自动生成,而不是存储在文件系统上。应用程序可以依赖它吗?文件系统实现是否需要保证特定的语义?

最佳答案

inode 不是每个文件系统的通用概念。 Ext 文件系统和 Linux VFSinode 视为存储文件信息的数据结构。但是,例如, FAT32NTFS 不知道 inode 是什么,因为它们根本不使用该概念。

话虽如此,我将尝试回答您的问题:



取决于,如果文件系统是 Ext 类型,那么 inode 编号存储在 i_ino 内的 struct inode 文件中,这是 写入磁盘 ,所以是的,在这种情况下,如果文件相同(不是其他文件相同name) 那么 inode 号保证是相同的。

否则,如果文件系统不是 Ext ,则 inode 编号由文件系统驱动程序定义的 inode operations 生成,因为他们没有 inode 是什么概念,他们必须模仿所有 inode 的内部字段以符合使用 VFS,所以这个数字在重新启动后可能会有所不同, 即使在关闭并再次打开文件之后也可能是 (理论上)。



是的!非 Ext 文件系统的驱动程序( FAT32NTFS )在访问其文件之一时生成 inode 结构。



不是很安全,应用程序依赖于更易读的文件路径。必须通过其 inode 查找文件将意味着遍历分区(很多)中的所有 inodes。通过解析文件的路径,搜索得到优化,它只检查目录中的文件。



我不太明白这个问题,但我认为是的,文件系统是非常复杂的结构,他们需要很好地确定它需要什么数据类型以及它们的含义是什么。

例如: Ext 定义了 blockinodedentry 以及这些数据结构上的函数列表。

希望这可以帮助!

关于linux - 重启后的 inode 编号,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21122497/

10-09 17:47
查看更多