inode 编号是否保证(例如通过标准)在重新启动、重新安装或什至在被所有进程关闭然后再次打开后都相同?例如。它可以在打开文件时自动生成,而不是存储在文件系统上。应用程序可以依赖它吗?文件系统实现是否需要保证特定的语义?
最佳答案
inode
不是每个文件系统的通用概念。 Ext
文件系统和 Linux VFS
将 inode
视为存储文件信息的数据结构。但是,例如, FAT32
或 NTFS
不知道 inode
是什么,因为它们根本不使用该概念。
话虽如此,我将尝试回答您的问题:
取决于,如果文件系统是 Ext
类型,那么 inode
编号存储在 i_ino
内的 struct inode
文件中,这是 写入磁盘 ,所以是的,在这种情况下,如果文件相同(不是其他文件相同name) 那么 inode
号保证是相同的。
否则,如果文件系统不是 Ext
,则 inode
编号由文件系统驱动程序定义的 inode operations
生成,因为他们没有 inode
是什么概念,他们必须模仿所有 inode
的内部字段以符合使用 VFS,所以这个数字在重新启动后可能会有所不同, 即使在关闭并再次打开文件之后也可能是 (理论上)。
是的!非 Ext
文件系统的驱动程序( FAT32
、 NTFS
)在访问其文件之一时生成 inode
结构。
不是很安全,应用程序依赖于更易读的文件路径。必须通过其 inode
查找文件将意味着遍历分区(很多)中的所有 inodes
。通过解析文件的路径,搜索得到优化,它只检查目录中的文件。
我不太明白这个问题,但我认为是的,文件系统是非常复杂的结构,他们需要很好地确定它需要什么数据类型以及它们的含义是什么。
例如: Ext
定义了 block
、 inode
和 dentry
以及这些数据结构上的函数列表。
希望这可以帮助!
关于linux - 重启后的 inode 编号,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21122497/