[unix] 한 파일에 대한 하드 링크 제한이 있습니까?

하나의 파일에 대한 하드 링크 수에는 제한이 있습니까? 어디서나 지정되어 있습니까? Linux에 대한 안전 제한은 무엇입니까? 그리고 다른 POSIX 시스템은 어떻습니까?



답변

Posix는 운영 체제가 하드 링크의 개념을 이해해야하지만 특정 상황에서 하드 링크를 실제로 사용할 수는 없습니다. 을 호출하여 특정 위치에서 허용되는 하드 링크 수 (파일 시스템 유형에 따라 다름)를 확인할 수 있습니다 . 최소 제한 ( ) 8이지만,이 같이 오히려 의미가 어쨌든 많은 오류를보고 할 수 있습니다 (권한 디스크 전체, 거부, …).pathconf(filename, _PC_LINK_MAX)_POSIX_LINK_MAXlink()

stat구조를 저장 링크 타입의 필드에 계산 nlink_t이 필드의 유형이 시스템에 상한을 제공하므로,. 그러나 nlink_t많은 파일 시스템에서 32 비트 이지만 16 비트 만 있는 것이 일반적입니다 (리눅스 소스의 빠른 grep은 ext [234], NTFS, UFS 및 XFS는 커널 데이터 구조에서 16 비트 링크 수를 사용합니다.


답변

이것은 파일 시스템에 따라 다릅니다.

ext2 / 3 / 4 제한은 65k 링크입니다

ext4 소스 라인 643, struct ext4_inode->__le16 i_links_count


답변

링크를 16 비트 숫자로 나열하는 리눅스 커널 소스 (* include / linux / ext3_fs.h *)에서 ext3 inode 구조 디스크 형식을 살펴보면

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

}

그것은 ext3 파일 시스템이 최대 65535 개의 링크를 가질 수 있음을 의미한다고 생각합니다.

다른 파일 시스템의 값을 확인하지 않았습니다.


답변