Di Linux, (mungkin sebagai fungsi dari ukuran blok filesystem), ketika saya membuat direktori dan stat
itu, ia mengembalikan ukuran 4096. Saya dapat membuat file di direktori ini, sampai suatu titik, tanpa meningkatkan ukuran yang dirasakan dari direktori (sebagaimana dilaporkan oleh stat
).
Pada titik tertentu, ketika direktori diisi dengan banyak file, ukuran balon direktori (saya tidak berbicara tentang isi direktori, saya berbicara tentang blok yang dikonsumsi untuk mewakili direktori itu sendiri). Jika file dihapus, ukuran direktori tetap sama.
Ini contoh singkatnya:
[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
Kemudian sentuh banyak file:
[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
Kemudian hapus file:
[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
Pertanyaan saya adalah:
- Mengapa ukuran / jumlah blok suatu direktori meningkat secara monoton?
- Apakah ini fungsi dari sistem file yang mendasarinya atau Linux VFS?
- Apakah ukuran direktori dapat dikurangi tanpa menghapus dan menciptakan kembali direktori?
- Poin bonus: Tunjukkan saya di kode sumber kernel tempat perilaku ini diterapkan.