ls -l
명령의 출력에서 디렉토리의 크기는 무엇을 의미합니까?
디렉토리의 메타 정보를 저장하는 데 사용되는 디스크의 공간 크기입니다 (예 :이 디렉토리에 속하는 파일 테이블). 즉 1024 인 경우 디스크의 1024 바이트 가이 목적으로 사용됩니다 (항상 전체 블록을 할당 함).
ls -l
로 인쇄 된 "디렉토리 크기"는 (모든 파일 유형과 마찬가지로) statbuf.st_size
의 stat()
호출에 의해보고 된 값입니다.
이 st_size
의 의미는 파일 시스템 유형에 따라 다릅니다. 파일 시스템 유형을 알고 그 개념을 이해하지 않으면 st_size
의 값에서 아무것도 추론 할 수 없습니다.
현재 일반적으로 이름이 v7-fs
인 역사적인 UNIX 파일 시스템에서 디렉토리는 16 비트 inode 번호와 14 바이트의 파일 이름을 포함하는 16 바이트 항목으로 반복되었습니다. 디렉토리의 "크기"는 read(2)
작업과 관련하여 의미가 있었고 항상있는 그대로 커지거나 유지되었습니다. .
및 ..
항목은 현재 및 디렉토리에 대해 레벨을 수동으로 하드 링크하여 작성됩니다. 제정신 빈 처녀 디렉토리의 링크 수는 2입니다.
1989 년 이후 (SVr4) ufs
라는 BSD-4.2 파일 시스템에서 디렉토리는 안정적인 것으로 부여되지 않은 형식을 사용하는 일련의 가변 길이 레코드이므로 사용자 공간 명령을 읽을 수 없습니다. 이 형식. 보고 된 "size"는 v7-fs에서와 같이 바이트 단위의 크기이며, 일반적으로 크기가 커지거나 그대로 유지되지만, 최신 버전의 파일 시스템은 일부 조건에서 크기를 줄일 수 있지만 항상 그런 것은 아닙니다. 빈 디렉토리에 대해보고 된 링크 수는 v7-fs
와 같이 2입니다.
1988 년 여름과 1991 년 5 월 사이에 내가 설계하고 구현 한 파일 시스템 인 WOFS
에서 디렉토리는 항상 "size"0을보고하며 read(2)
호출을 사용하여 읽을 수있는 내용 유형을 갖지 않습니다. . 이는 WOFS
이 첫 번째 Copy-on-Write 파일 시스템이고 WOFS
파일에서 디렉토리에 나열되는 대신 해당 디렉토리를보고하기 때문입니다. readdir()
을 사용하여 WOFS
디렉토리를 읽는 경우 의도 한 항목에 대한 데이터 만 가져 오지만 .
및 ..
에 대한 데이터는 가져 오지 않습니다. WOFS
에서 빈 디렉토리의 링크 수는 1이며 전체 동작은 POSIX를 완벽하게 준수합니다.
ZFS
에서는 WOFS
논문을 읽은 후에 구현되었습니다. ZFS
는 COW (Copy-On-Write) 파일 시스템이며 작성자는 WOFS
에서 개념을 복사했음을 거부하지 않습니다. ZFS의 디렉토리는 number of directory entries
에서 st_size
를보고하므로보고 된 "크기"는 디렉토리 데이터에서 차지하는 디스크 공간과 관련하여 실제로 의미가 없습니다. ZFS 디렉토리에는 .
및 ..
항목이 없지만 readdir()
을 호출하면 이러한 항목이 위조되어 처음 두 작업에 대해 반환됩니다. ZFS는 디렉토리에서 하드 링크를 지원하지 않는 유일한 FS 목록이지만 디렉토리에 대해보고 된 링크 수는 항상 2입니다. ZFS의 이러한 두 가지 불규칙은 POSIX 역사적 프로그램.
ZFS와 마찬가지로 WAFL은 WOFS
의 아이디어 중 일부만 복사합니다. Netapp의 WAFL
는 WOFS
논문이 출판 된 후 3 년이 지난 후 WAFL은 기록 중이지만 WAFL은 "실제 디렉토리 크기"인 "크기"값을보고하는 것으로 보입니다. 디렉토리에 내용이 있다고 가정합니다.
디렉토리는 자신과 그 내용에 대한 메타 데이터를 위해 4096 바이트 (최소)를 예약합니다.
또한 ext2/ext3/ext4 파일 시스템의 기본 할당 단위 (블록)는 4096 바이트이므로 디렉토리는 더 작을 수 없습니다.
다른 파일 시스템에서는 기본 크기가 다른 디렉토리, 즉 파일 시스템의 기본 블록 크기로 인해 디렉토리를 찾을 수 있습니다.
디렉토리 크기는 채워질 때 동적으로 커질 수 있지만 일단 채워지면 메타 데이터 용으로 예약 된 공간을 디렉토리를 제거하지 않고 다시 할당 할 수 없습니다.
디렉토리는 전화 디렉토리와 같은 디렉토리입니다. 숫자 목록과 그 옆에 이름이있는 파일 일뿐입니다. 각 번호는 파일 시스템의 파일 (아이 노드 번호)을 참조하며 이름은 파일 이름입니다.
해당 데이터를 저장하려면 디스크 공간이 필요합니다. 데이터가 할당 및 증가하는 방식과 파일 시스템은 파일 시스템에 따라 다릅니다.