Ukuran direktori tidak sepadan dengan usaha kami

Ini sama sekali tidak berguna, tidak perlu dalam penggunaan praktis, tetapi posting kecil yang menyenangkan tentang direktori dalam sistem * nix. Jumat itu sama.

Pada wawancara, pertanyaan-pertanyaan membosankan tentang inode seringkali lolos, semua-adalah-file, yang hanya dijawab oleh beberapa orang. Tetapi jika Anda menggali sedikit lebih dalam, Anda dapat menemukan hal-hal aneh.

Untuk memahami posting beberapa poin:

  • semuanya adalah file. direktori juga file
  • ina inode meta data dari file disimpan, tetapi nama file tidak disimpan di sana
  • nama file disimpan dalam data direktori
  • ukuran direktori, yang sama yang ditunjukkan dalam ls dan default ke 4Kb, tergantung pada jumlah file dalam direktori dan panjang nama mereka
  • jelas, semakin banyak file, semakin besar ukuran direktori

Dan sekarang untuk bagian yang menarik: buat direktori dengan sejuta file, periksa ukuran direktori, lalu hapus semua file dan lihat 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 kelihatannya :)

Anda dapat memperbaiki ukuran direktori (tanpa menghapus) hanya dengan fsck (dan opsi -D) dalam keadaan unmount.

Tetapi ketika saya pergi mencari mengapa demikian, ternyata 10 tahun yang lalu perilaku ini sudah dibahas dalam lkml. Dan menurut pengembang, perbaikannya tidak sebanding dengan usaha.

Source: https://habr.com/ru/post/id462295/


All Articles