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