디렉터리 파일 크기가 증가하기 전에 디렉터리에 있는 파일 수

디렉터리 파일 크기가 증가하기 전에 디렉터리에 있는 파일 수

Linux 또는 보다 구체적으로 EXT4에서 카탈로그 파일의 초기 크기는 4kB입니다. 그러나 디렉토리에 충분한 파일이 저장되면 내부 "파일 목록"의 증가로 인해 디렉토리 파일의 크기가 증가합니다. 하지만 이를 위해서는 얼마나 많은 파일이 필요합니까? 이 질문에 답하는 리소스를 찾을 수 없습니다.

답변1

ext4 디렉토리 항목의 형식은 다음과 같습니다.커널에 기록됨. 두 가지 가능성이 있습니다.

  • 선형 디렉터리의 경우 각 항목은 8바이트와 함께 4바이트로 반올림된 파일 이름(0으로 끝남)을 차지합니다. 그래서N파일 항목은 8×를 차지합니다.N바이트에 각각 4로 반올림된 모든 파일 이름의 길이(0으로 끝나는 것을 포함). 디렉터리는 항상 디렉터리당 12바이트를 포함 .하고 ..차지합니다. 각 선형 디렉터리에는 12바이트 체크섬이 있을 수도 있습니다. 블록의 마지막 항목의 레코드 길이는 현재 블록의 나머지 공간을 포함하도록 확장되므로 디렉터리 항목은 두 개의 파일 시스템 블록에 걸쳐 있지 않습니다.
  • 해시 트리 디렉터리의 경우 각 디렉터리의 첫 번째 블록에는 40바이트 루트 항목( .및 에 대한 파일 항목 포함 ..)이 있고 각 후속 블록에는 18바이트 노드가 있습니다. 각 노드는 8바이트를 차지하며 파일 항목은 선형 디렉터리에서와 동일한 데이터 구조를 사용하여 선형 배열로 끝납니다. 따라서 디렉토리에서 소비하는 공간의 양을 계산하기가 더 어렵습니다. 각 파일은 8바이트에 이름 길이를 더한 값을 4바이트로 사용하고, 트리 구조에서는 첫 번째 블록에 대해 40바이트를 사용하고, 각 추가 블록에는 18바이트를 사용합니다. 바이트, 노드당 8바이트.

디렉토리 크기가 빠르게 증가하는 것을 보려면 파일 이름이 긴 파일로 채우십시오. 파일 이름은 최대 254바이트에 종료 0바이트를 더해 총 264바이트를 차지하므로 각 A 디렉토리 유형은 16바이트입니다. 각 디렉토리의 항목에는 4096바이트 이상이 필요합니다.

디렉터리가 선형인지 해시인지 확인하려면 해당 inode를 확인하세요.예를 들어사용 debugfs:

debugfs: show_inode_info /path/to/directory
Inode: 7329   Type: directory    Mode:  0755   Flags: 0x1000
Generation: 2283115506    Version: 0x00000001
...

디렉터리가 해시된 경우 플래그는 0x1000 집합으로 표시되고, 그렇지 않으면 설정되지 않습니다.

답변2

새 디렉토리:

mkdir newtemp

새 디렉터리 크기:

ls -l | grep newtemp
drwxr-xr-x 2 jsevans users 6 Jan 11 17:42 newtemp

터치하여 새로운 빈 파일을 만듭니다.

touch 1

치수를 다시 확인하세요.

ls -l | grep newtemp
drwxr-xr-x 2 jsevans users 15 Jan 11 17:42 newtemp

그래서 1개의 파일이 필요합니다.

질문에 대한 답변이 없다면 확인해 보세요.ls 명령에 대한 전체 문서매뉴얼 페이지에 따르면.

관련 정보