【问题标题】:why can't we store file names directly in inodes为什么我们不能将文件名直接存储在 inode 中
【发布时间】:2014-01-13 00:19:03
【问题描述】:

我真的不明白为什么在 UNIX 系统中他们不直接将文件名存储在 inode 中而是使用映射系统..这仅仅是因为 inode 的大小是定义的并且不能更改所以在长文件名的情况下我们无法存储它们? 或者,如果我们更改文件名,我们不必在 inode 中再做一次?

如果我错了或者是否有其他解释,请告诉我。 提前致谢

【问题讨论】:

  • 如果同一个文件had more than one name怎么办?
  • 你的意思是如果有多个文件链接到 inode ?如果是,那将是一个问题..
  • 那么你会在目录中存储什么?只是inode编号?那将不允许单个文件有多个名称。请记住,inode 包含有关文件的所有信息,除了文件名之外,目录定义了 inode 的名称。

标签: linux unix filesystems


【解决方案1】:

为什么不在inode中直接包含文件名,我想到的原因如下:

  1. 一个文件可能有多个名称,也就是硬链接
  2. 为了支持长文件名,比如至少 255 字节(在大多数 POSIX 系统上),inode 会很大,而且因为通常文件名不会那么长,所以浪费了很多空间。
  3. 如果将来我们想要/需要支持更长的文件名,我们需要更改 inode 的结构,这可能会导致向后兼容问题。

【讨论】:

    猜你喜欢
    • 2015-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多