Kataloqların ölçüsü bizim səylərimizə dəyməz

Bu tamamilə yararsız, praktik tətbiqdə lazımsız, lakin *nix sistemlərindəki kataloqlar haqqında gülməli kiçik yazıdır. Cümə günüdür.

Müsahibələr zamanı tez-tez inodes, hər şey faylları haqqında darıxdırıcı suallar yaranır ki, bunlara az adam ağlı başında cavab verə bilər. Ancaq bir az dərin qazsanız, maraqlı şeylər tapa bilərsiniz.

Yazını başa düşmək üçün bir neçə məqam:

  • hər şey bir fayldır. qovluq da fayldır
  • inode fayldan metadata saxlayır, lakin fayl adı orada saxlanmır
  • fayl adı qovluq məlumatında saxlanılır
  • ls-də göstərilən və standart olaraq 4Kb olan kataloqun ölçüsü kataloqdakı faylların sayından və onların adlarının uzunluğundan asılıdır.
  • Aydındır ki, fayl nə qədər çox olsa, kataloq ölçüsü də bir o qədər böyük olar

İndi maraqlı tərəf budur: milyonlarla faylı olan qovluq yaradırıq, kataloqun ölçüsünü yoxlayırıq, sonra bütün faylları silib kataloqun ölçüsünə baxırıq.

$ 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 .

Göründüyü kimi, kataloq ölçüsü dəyişməyib, görünsə də :)

Siz yalnız fsck (və -D seçimi) istifadə edərək, qovluğun ölçüsünü (silmədən) düzəldə bilərsiniz.

Amma bunun niyə belə olduğunu axtarmaq üçün getdiyim zaman məlum oldu ki, 10 il əvvəl belə davranış artıq olub müzakirə etdi lkml ilə. Tərtibatçıların fikrincə, düzəliş sadəcə səy göstərməyə dəyməz.

Mənbə: www.habr.com

Добавить комментарий