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


24

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

답변:


16

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

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


보충 : BTRFS는 8 비트 링크 수를 사용하는 것 같습니다.
Maciej Piechotka

이 블로그 게시물 에 따르면 @ 오히려 오히려 같은 디렉토리에있는 하드 링크의 경우 8 비트 링크 카운트이지만 총 32 비트 카운트 /
Gilles 'SO

11

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

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

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


1
실제 제한은 65534입니다. 마지막 카운터 항목은 rename () 시스템 호출에서 일시적으로 사용됩니다.
Joshua

4
더 적음 (같은 ext4.h에 있음) : / * 파일에 대한 최대 링크 수 * / #define EXT4_LINK_MAX 65000
PoltoS

10

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

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

}

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

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


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.