【问题标题】:What is the data structure of the Inode number like?Inode 编号的数据结构是什么样的?
【发布时间】:2010-10-23 20:16:22
【问题描述】:

inode 号的定义让我大吃一惊:

inode 是传统 Unix 风格文件系统上的数据结构 如 UFS 或 ext3。一个 inode 存储关于一个常规的基本信息 文件、目录或其他文件系统对象。 Source

所以每个 inode 编号必须有一个逻辑顺序。你能直接从前面的数字得出什么结论吗?

4214970 0 drwx------  102 user  staff   3.4K Feb  2 22:34 new
5728909 0 drwx------    3 user  staff   102B Mar 25 22:11 new_new
5415906 0 drwx------   15 user  staff   510B Mar 19 02:28 stdout_TEST

如果没有,由于数据结构,你可以知道什么样的事情?

【问题讨论】:

    标签: data-structures filesystems inode


    【解决方案1】:

    inode 编号不是 inode。 :) 您可以将 inode 编号视为 inode 的主键。

    至于如何决定inode编号,取决于文件系统。一些文件系统甚至可能凭空产生 inode 编号(尤其是一些 FUSE 文件系统)。其他时候,它可能会直接映射到磁盘上的位置。不幸的事实是,这是一个有点过时的概念,而且现在许多现代文件系统都难以将其内部位置信息压缩成 32 位数字。

    在任何情况下,作为应用程序程序员,都应该将 inode 编号视为一个不透明的值,仅适用于相等比较(并且仅当您确定文件没有被删除时,因为 inode 编号可能会被重用。 ..)

    【讨论】:

    • 你是不是用“无中生有的inode numbers”这句话来指代“虚拟内存中的inode”?
    • 我的意思是inode号本身。对于某些文件系统,没有合理的方法来创建 inode 编号 - 例如,在 FTP 之上构建到 Windows 服务器的 FUSE 文件系统。这些文件系统确实需要使 inode numbers 起来 - 希望 保持它们的唯一性 - 因为它们没有必要的信息来使它们变得独一无二。同样,具有(可能)超过 2^32 个 inode 的虚拟文件系统将难以分配唯一的 inode 编号
    【解决方案2】:

    你能直接从前面的数字得出什么结论吗?

    不一定。索引节点被回收。

    如果没有,由于数据结构,你可以知道什么样的事情?

    检查包含适合特定文件系统的struct 定义的头文件(例如,/usr/include/linux/ext2_fs.h 用于 ext2 和 ext3)。

    【讨论】:

      猜你喜欢
      • 2019-04-09
      • 1970-01-01
      • 1970-01-01
      • 2013-12-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-30
      相关资源
      最近更新 更多