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


Answers:


16

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位链接计数。


作为补充:BTRFS似乎使用8位链接计数。
Maciej Piechotka'1

@Rather,根据8位链接数在同一目录硬链接,但在总共32位计数,这篇博客 /
吉尔“SO-停止作恶”

11

这取决于文件系统。

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

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


1
实际的限制是65534。最后一个计数器条目用于rename()系统调用中的瞬态。
约书亚

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

10

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

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

}

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

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


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.