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