ext4의 중첩된 디렉터리 깊이 제한

ext4의 중첩된 디렉터리 깊이 제한

ext4 파일 시스템에서 중첩된 디렉터리의 최대 수에 제한이 있습니까? 예를 들어, 내가 아는 한 ISO-9660 파일 시스템은 7개 이상의 하위 디렉터리 수준을 가질 수 없습니다.

답변1

파일 시스템 설계 자체와 실험에는 본질적인 제한이 없습니다(감사합니다.이르카초)는 디렉토리가 순진하게 예상하는 것보다 더 깊게 중첩될 수 있음을 보여줍니다( PATH_MAXLinux의 경우 4096이지만 이는 시스템 호출에 전달되는 경로의 길이를 제한하고 상대 경로를 사용하여 해결할 수 있음).

구현의 일부에서는 주어진 파일 시스템 내의 전체 경로 길이가 절대 초과되지 않는다고 가정합니다 PATH_MAX.디렉토리 해시 함수바이트를 할당합니다 PATH_MAX.

유일한 디렉토리 관련 제한 사항은 다음과 같습니다.확인됨파일 시스템 구현에서는단일 경로 구성 요소의 길이, 255바이트로 제한되며 중첩 깊이에는 영향을 미치지 않습니다.

답변2

~에 따르면내선(4)매뉴얼 페이지, 섹션 정보dir_nlink

일반적으로 ext4에서는 inode에 대한 하드 링크를 65,000개 이하로 허용합니다. 이는 일반 파일 및 디렉터리에 적용됩니다. 즉, 디렉터리는 64,998개 이상의 하위 디렉터리를 가질 수 없습니다(모든 "." 및 ".." 항목과 상위 디렉터리에 있는 해당 디렉터리의 디렉터리 항목이 하드 링크로 계산되기 때문). 이 기능은 링크 수가 최대 수 제한을 초과할 수 있는 경우 ext4가 알 수 없는 디렉터리에 대한 하드 링크 수를 나타내기 위해 링크 수 1을 사용하도록 하여 이러한 제한을 해제합니다.

즉, dir_nlink기능이 활성화되면 제한이 없고, 그렇지 않으면 64k 하위 디렉터리입니다. 이 기능이 활성화되어 있는지 확인할 수 있습니다 sudo dumpe2fs /dev/sda1 | grep --color=always dir_nlink. 비활성화하여 전달할 수 있습니다 tune2fs.

다른 출처:

관련 정보