Die Verzeichnisgröße ist unsere Mühe nicht wert

Dies ist völlig nutzlos, im praktischen Gebrauch unnötig, aber ein lustiger kleiner Beitrag über Verzeichnisse in * nix-Systemen. Freitag ist das gleiche.

Bei Interviews schlüpfen oft langweilige Fragen zu Inodes durch All-is-Dateien, die nur wenige vernünftig beantworten können. Aber wenn Sie etwas tiefer graben, können Sie merkwürdige Dinge finden.

Um den Beitrag ein paar Punkte zu verstehen:

  • Alles ist eine Datei. Verzeichnis ist auch eine Datei
  • Ina Inode-Metadaten aus der Datei werden gespeichert, aber der Dateiname wird dort nicht gespeichert
  • Der Dateiname wird in Verzeichnisdaten gespeichert
  • Die Größe des Verzeichnisses, die in ls angezeigt wird und standardmäßig 4 KB beträgt, hängt von der Anzahl der Dateien im Verzeichnis und der Länge ihrer Namen ab
  • Je mehr Dateien vorhanden sind, desto größer ist natürlich das Verzeichnis

Und nun zum interessanten Teil: Erstellen Sie ein Verzeichnis mit einer Million Dateien, überprüfen Sie die Größe des Verzeichnisses, löschen Sie dann alle Dateien und überprüfen Sie die Größe des Verzeichnisses.

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

Wie Sie sehen können, hat sich die Größe des Verzeichnisses nicht geändert, obwohl es scheint :)

Sie können die Verzeichnisgröße (ohne zu löschen) nur mit fsck (und der Option -D) im nicht gemounteten Zustand festlegen.

Aber als ich nach dem Grund dafür suchte, stellte sich heraus, dass dieses Verhalten bereits vor 10 Jahren in lkml diskutiert wurde. Und laut den Entwicklern ist das Update einfach nicht die Mühe wert.

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


All Articles