디렉토리 크기가 0 또는 4096인 이유는 무엇입니까? [복사]

디렉토리 크기가 0 또는 4096인 이유는 무엇입니까? [복사]
$ ls -l
total 28
drwxrwxrwx 1 t t 4096 May  8  2018  dir1
drwxrwxrwx 1 t t    0 Mar 12  2015  dir2
drwxrwxrwx 1 t t 4096 Jan 17  2014  dir3
drwxrwxrwx 1 t t 4096 Jun 12  2017  dir4
drwxrwxrwx 1 t t    0 Aug 24  2012  dir5

디렉토리 크기가 0 또는 4096인 이유는 무엇입니까?

디렉토리의 항목이 inode에 맞기 때문에 디렉토리의 크기가 0입니까?

디렉토리의 항목이 해당 inode에 맞지 않아 일부 데이터 블록이 필요하기 때문에 디렉토리의 크기가 0이 아닌 것이 아닌가요?

디렉토리의 0이 아닌 크기가 항상 4096인 이유는 무엇입니까?

감사해요.

내 관찰은 ext4 파일 시스템과 NTFS 파일 시스템에서 동일합니다. 이것은 두 파일 시스템 유형이 비슷한 방식으로 디렉토리를 구현한다는 것을 의미합니까?

답변1

일부 파일 시스템에는 매우 작은 디렉토리를 위한 inode 공간이 있습니다. 그러나 디렉토리가 해당 영역에 들어갈 만큼 충분히 커지면 운영 체제는 전체 파일 할당 단위를 할당합니다. 귀하의 경우에는 분명히 4096바이트입니다.

ext4에서는 inline_data ext4 옵션을 통해 활성화됩니다.

https://ext4.wiki.kernel.org/index.php/Ext4_Disk_Layout#Inline_Directories

답변2

약 4096

견적으로 이동테리 왕의 답변:

디렉토리는 파일 이름과 inode 번호의 배열을 포함하는 특수 파일입니다. 디렉토리가 생성되면 파일 시스템은 "파일 이름"(실제로는 디렉토리 이름)이 있는 디렉토리에 1개의 inode를 할당합니다. inode는 단일 데이터 블록(최소 오버헤드)을 가리키며 크기는 4096바이트입니다.

디렉토리는 4096보다 커질 수 있습니다.ext4 고유의 "버그" 중 하나파일 시스템에서 그다지 우선순위를 얻지 못한 점은 디렉터리 정보가 4096바이트를 초과한 후 파일을 삭제해도 그 수가 줄어들지 않는다는 점입니다. 아마도 가장 중요한 소식은 정보가 디렉토리에 할당되는 방식이 파일 시스템과 활성화/비활성화 옵션에 따라 달라진다는 것입니다(원천), 따라서 이 경우 특수 번호 4096은 ext4에만 해당되지만 다른 파일 시스템(예: UFS)에서는 다른 번호일 수 있습니다.

그러나 Terry가 디렉터리를 나타내는 inode에 대해 이야기하고 있다는 점에 유의하세요. 이 inode 자체는 상위 디렉터리의 디렉터리입니다. 초기 디렉토리 내용은 디렉토리 또는 링크 .이며..


약 0

ext4 파일 시스템은 기본적으로 (비어 있더라도) 4096바이트를 할당하는 디렉토리를 생성합니다. 그게 핵심이에요. ~에 따르면서버 장애그리고아치 리눅스 포럼디렉터리 크기가 0으로 표시되면 해당 디렉터리가 ext4가 아닌 파일 시스템에 있거나 이를 호스팅한다는 의미입니다.

가상 파일 시스템(실제로 물리적 디스크의 파일 시스템이 아니라 커널에 의해 노출되고 메모리에 포함된 인터페이스)의 경우에도 마찬가지입니다.

$ ls -ld /proc /sys 
dr-xr-xr-x 243 root root 0 Feb 24 13:57 /proc
dr-xr-xr-x  13 root root 0 Feb 26 14:42 /sys

관련 정보