디렉토리 파일의 정보가 4096 바이트보다 훨씬 적습니다. 섹터 크기가 4096 바이트라는 것을 알고 있습니다. 그러나 그보다 작은 일반 파일이 존재합니다.
유닉스는 왜 각 폴더에 4096 바이트를 예약합니까?
답변
해당 디렉토리에 포함 된 파일 (이름 포함)에 대한 메타 데이터를 저장하는 데 필요한 초기 크기입니다. 초기 할당은 한 섹터의 크기와 같지만 필요한 경우 그 이상으로 증가 할 수 있습니다. 일단 할당되면 조각화를 줄이기 위해 파일을 제거하면 공간이 확보되지 않습니다.
예를 들면 다음과 같습니다.
$ mkdir testdir
$ cd testdir
$ ls -ld .
drwxr-xr-x 2 matthew matthew 4096 2007-12-03 20:28 ./
$ for ((i=0; i<1000; i++)); do touch some_longish_file_name_$i; done
$ ls -ld .
drwxr-xr-x 2 matthew matthew 36864 2007-12-03 20:29 ./
$ rm some_longish_file_name_*
$ ls -ld .
drwxr-xr-x 2 matthew matthew 36864 2007-12-03 20:29 ./
$ cd ..
$ ls -ld testdir
drwxr-xr-x 2 matthew matthew 36864 2007-12-03 20:29 testdir/
$ rmdir testdir ; mkdir testdir
$ ls -ld testdir
drwxr-xr-x 2 matthew matthew 4096 2007-12-03 20:29 testdir/
답변
때로는 일부 파일 시스템에서 4096 바이트가 가장 작은 할당 단위입니다. 그래서 디렉토리에 4096이 있습니다.
파일에도 동일하게 적용됩니다. 일부 파일은 4096 미만으로보고 될 수 있지만 실제로 디스크에서 최소 4096 개의 스토리지를 사용합니다.
답변
4096은 종종 포함 된 메타 데이터의 실제 크기가 디렉토리 내용에 따라 변동하기 때문에 조각화를 줄이기 위해 예약되어 있습니다. 시간이 지남에 따라 지속적으로 증가 및 축소 (예 : 로그 파일 또는 동적 내용 포함)하면 성능이 저하 될 수 있습니다. 이것은 하나의 폴더에서 발생하지는 않지만 전체 파일 시스템에서 빠르게 추가됩니다.
답변
파일 시스템에 따라 다릅니다. ext2 / 3 / 4에서 “is”는 4096입니다. reiserfs에서는 9608 (my $HOME
) 1032 ( /tmp
) 또는 48 (일부 dir in /tmp
) 일 수 있습니다.
ext2 / 3 / 4 블록의 기본 값은 4096이며 파일은 이보다 작을 수 없습니다. 파일이 작 으면 어쨌든 전체 블록이 필요합니다. 디렉토리의 논리적 크기에 대해 물어 보는 것은 의미가 없으므로이 정보는 디스크에 없을 수도 있으며, 블록 크기에 사용 된 블록 수, 즉 실제 공간을보고해야합니다.