一个文件的硬链接是否有限制?

一个文件的硬链接是否有限制?

一个文件的硬链接数量有限制吗?有指定吗?Linux 的安全限制是多少?其他 POSIX 系统又如何?

答案1

Posix 要求操作系统理解硬链接的概念,但并不要求硬链接实际上可以在任何特定情况下使用。您可以通过调用来了解特定位置允许有多少个硬链接(这可能因文件系统类型而异)pathconf(filename, _PC_LINK_MAX)。这最低限额( _POSIX_LINK_MAX) 是 8,但这毫无意义,因为link()无论如何,可以报告许多其他错误(权限被拒绝、磁盘已满……)。

stat结构将链接计数存储在类型字段中nlink_t,因此该字段的类型给出了您系统的上限。但很有可能你永远无法达到那么远:nlink_t在许多文件系统中通常有 32 位但只有 16 位(Linux 源代码中的快速 grep 显示 ext[234]、NTFS、UFS 和XFS 在内核数据结构中使用 16 位链接计数)。

答案2

这取决于文件系统。

ext2/3/4 限制为 65k 链接

ext4源第 643 行,struct ext4_inode->__le16 i_links_count

答案3

查看 Linux 内核源代码 (*include/linux/ext3_fs.h*) 中的 ext3 inode 结构磁盘格式,其中列出了 16 位数字的链接计数

struct ext3_inode {
    ... snip ...
    __le16  i_links_count;  /* Links count */

}

我猜这意味着 ext3 文件系统最多可以有 65535 个链接。

我还没有检查其他文件系统的值。

相关内容