Ukuran direktori tidak sebanding dengan usaha kita

Ini benar-benar tidak berguna, tidak diperlukan dalam aplikasi praktis, tetapi postingan kecil yang lucu tentang direktori di sistem *nix. Ini hari Jumat.

Selama wawancara, pertanyaan membosankan sering muncul tentang inode, semuanya adalah file, yang hanya sedikit orang yang bisa menjawabnya dengan wajar. Namun jika digali lebih dalam, Anda bisa menemukan hal-hal menarik.

Untuk memahami postingan tersebut, beberapa poin:

  • semuanya adalah file. direktori juga merupakan file
  • inode menyimpan metadata dari file, tetapi nama file tidak disimpan di sana
  • nama file disimpan dalam data direktori
  • Ukuran direktori, sama dengan yang ditampilkan di ls dan 4Kb secara default, bergantung pada jumlah file dalam direktori dan panjang namanya
  • Jelasnya, semakin banyak file, semakin besar ukuran direktorinya

Dan sekarang yang menarik: kita membuat direktori dengan sejuta file, memeriksa ukuran direktori, lalu menghapus semua file dan melihat ukuran direktori.

$ mkdir niceDir && cd niceDir
# Π² зависимости ΠΎΡ‚ скорости носитСля, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°Π½ΡΡ‚ΡŒ 2-10 ΠΌΠΈΠ½ΡƒΡ‚
$ for ((i=1;i<133700;i++)); do touch long_long_looong_man_sakeru_$i ; done
$ ls -lhd .
drwxr-xr-x 2 user user 8.1M Aug 2 13:37 .
$ find . -type f -delete
$ ls -l
total 0
$ ls -lhd .
drwxr-xr-x 2 user user 8.1M Aug  2 13:37 .

Seperti yang Anda lihat, ukuran direktori tidak berubah, meskipun tampaknya :)

Anda hanya dapat memperbaiki ukuran direktori (tanpa menghapusnya) menggunakan fsck (dan opsi -D) dalam keadaan tidak terpasang.

Namun ketika saya mencari tahu kenapa bisa demikian, ternyata 10 tahun yang lalu perilaku tersebut sudah terjadi dibahas di lkml. Dan menurut pengembangnya, perbaikannya tidak sepadan dengan usaha yang dilakukan.

Sumber: www.habr.com

Tambah komentar