Linux에서 (아마도 파일 시스템 블록 크기의 함수로) 디렉토리를 작성하고 디렉토리를 작성하면 stat
4096의 크기를 리턴합니다. 에 의해보고 된 디렉토리 stat
.
어떤 시점에서 디렉토리가 많은 파일, 디렉토리 크기 풍선으로 채워짐에 따라 (디렉토리의 내용에 대해 이야기하지 않고 디렉토리 자체를 나타내는 데 소비되는 블록에 대해 이야기합니다). 파일이 삭제되면 디렉토리 크기는 동일하게 유지됩니다.
다음은 간단한 예입니다.
[root@uxlabtest:/]$ mkdir test
[root@uxlabtest:/]$ stat test
File: `test'
Size: 4096 Blocks: 8 IO Block: 4096 directory
Device: fd00h/64768d Inode: 1396685 Links: 2
Access: (0755/drwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2011-07-26 14:06:04.000000000 -0400
Modify: 2011-07-26 14:06:04.000000000 -0400
Change: 2011-07-26 14:06:04.000000000 -0400
그런 다음 많은 파일을 터치하십시오.
[root@uxlabtest:/]$ for i in `seq 1 10000`; do touch /test/$i; done
[root@uxlabtest:/]$ stat test
File: `test'
Size: 155648 Blocks: 312 IO Block: 4096 directory
Device: fd00h/64768d Inode: 1396685 Links: 2
Access: (0755/drwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2011-07-26 14:06:04.000000000 -0400
Modify: 2011-07-26 14:06:56.000000000 -0400
Change: 2011-07-26 14:06:56.000000000 -0400
그런 다음 파일을 삭제하십시오.
[root@uxlabtest:/]$ rm -rf /test/*
[root@uxlabtest:/]$ stat test
File: `test'
Size: 155648 Blocks: 312 IO Block: 4096 directory
Device: fd00h/64768d Inode: 1396685 Links: 2
Access: (0755/drwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2011-07-26 14:07:11.000000000 -0400
Modify: 2011-07-26 14:07:12.000000000 -0400
Change: 2011-07-26 14:07:12.000000000 -0400
내 질문은 :
- 디렉토리의 크기 / 블록 수가 단조 증가하는 이유는 무엇입니까?
- 이것은 기본 파일 시스템 또는 Linux VFS의 기능입니까?
- 디렉토리를 삭제하고 다시 작성하지 않고도 디렉토리 크기를 줄일 수 있습니까?
- 보너스 포인트 :이 동작이 구현 된 커널 소스 코드를 알려주세요.