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

Mac*_*tka 27 filesystems hard-link

一个文件的硬链接数量有限制吗?是否在任何地方指定?Linux 的安全限制是什么?那么其他 POSIX 系统呢?

Gil*_*il' 19

Posix 要求操作系统理解硬链接的概念,但不要求硬链接实际上可以在任何特定情况下使用。您可以通过调用. 该下限()是8,不过这是相当无意义反正可以报告许多其他错误(拒绝授权,磁盘已满,...)。pathconf(filename, _PC_LINK_MAX)_POSIX_LINK_MAXlink()

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


she*_*lic 13

这是文件系统相关的。

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

ext4 源代码行 643,struct ext4_inode->__le16 i_links_count

  • 甚至更少(在同一个 ext4.h 中找到):/* 文件链接的最大数量 */ #define EXT4_LINK_MAX 65000 (4认同)

Ric*_*chm 11

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

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

}
Run Code Online (Sandbox Code Playgroud)

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

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