디렉토리 크기는 어떻게 결정됩니까?


10

디렉토리 자체의 크기는 파일의 크기와 다릅니다.

디렉토리를 디렉토리 및 파일 목록으로 생각하므로 디렉토리 크기는 블록 크기 제한으로 인해 최소 4096 바이트로 파일 / 디렉토리 수와 관련되어야합니다.

그러나 내 시스템에는 4096 바이트의 잘 채워진 많은 디렉토리가 있으며, 거의 메가 바이트가 아닌 일부 디렉토리는 약 10 메가 바이트입니다. 왜 이런 일이 발생하는지 설명해 주시겠습니까?


1
자세한 내용은 askubuntu.com/a/404716/380067
kos

3
디렉토리의 항목 수뿐만 아니라 이름의 길이이기도합니다.
kasperd

답변:


13

사용 된 파일 시스템 및 특정 시점에 해당 디렉토리의 최대 엔티티 수에 따라 크기가 결정됩니다. 디렉토리에 예약 된 기본 크기가 소진되면 디렉토리에 더 많은 공간이 할당됩니다. 그러나 엔터티 수가 줄어들면 할당 된 공간이 자동으로 해제되지 않습니다. 따라서 디렉토리에 1 천만개의 엔티티가있는 경우 9,999,999 개의 디렉토리가 삭제 된 경우에도 동일한 크기로 유지됩니다. 이것은 이 유닉스 & 리눅스 포스트 와 같은 흥미로운 상황으로 이어진다 .

$ mkdir foo; touch foo/{1..100000}; stat -c %s foo
2179072
$ rm foo/*; stat -c %s foo
2179072

이것은 반드시 다른 파일 시스템에는 적용되지 않습니다. ext{2,3,4}파일 시스템이 영향을받습니다. NTFS는 그 정도는 적습니다. tmpfs그리고 btrfs는 그렇지 않습니다. ZFS는 다소 보수적이며 2두 번째 stat명령 에 대한 출력을 얻었습니다 .

관련 :


큰! 나는 그것이 어떻게 될 수 있는지 아직도 궁금했다.
kos

XFS는 영향을받지 않습니다! 추가
Edward Torvalds
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.