Wie viel Speicherplatz benötigt ein leerer Ordner auf der Festplatte und wie viel Speicherplatz benötigen 1.000.000 Millionen Ordner auf der Festplatte?

4 Antworten

Kommt aufs Dateisystem an...

Wenn du dir einfach nur die "Eigenschaften" eines leeren Ordners anzeigen lässt, wir dieser zwar mit 0 Byte angegeben, das bezieht sich allerdings nur auf den Inhalt des Ordners, nicht auf den Ordner selbst.

Der Ordner besteht nämlich u.a. aus

  • seinem Namen (wer hätte das gedacht? ;)
  • einigen Metainformationen (Besitzer; Zeitstempel für Erstellen , Bearbeiten, etc.; ggf. Zugriffsberechtigungsinformationen; Attribute wie Versteckt, Schreibgeschützt, etc.; und noch einige mehr)
  • einem Inhaltsverzeichnis (ja, ein Ordner sollte wissen, was sich in ihm befindet... Gibt aber auch "Dateisysteme", bei denen das nicht "direkt" so ist...)
  • und evtl. noch weiteren Dingen...

Betrachten wir mal als simpelsten Fall ein unkomprimiertes Tar-Archiv:

Jeder Eintrag hat eine Größe, die ein vielfaches von 512 Bytes beträgt.

Ein einfacher leerer Ordner (bei Tar-Archiven exakt ein Block) hat in diesem Fall also 512 Bytes...

Bei anderen (komplexeren) Dateisystemen kann das ganze dann aber schon anders aussehen.

Z.B. Haben ext2/3 eine "Inode"-Größe von 128 Bytes (also jedes Dateisystemobjekt belegt ein vielfaches von 128 Bytes), allerdings kann da ein Ordner auch mehrere "Inodes" groß sein, belegt also mindestens 128 Bytes.

Zusammenfassend könnte man also sagen, dass ein leerer Ordner zwischen 128 und 4096 Bytes belegt, 1000000 Millionen (eine Quadratmillion ;) also zwischen 116.41 und 3725.29 TiB...

Bei Ordnern mit Inhalt kann die Größe des reinen Ordners allerdings durchaus diese Grenze sprengen, kommt aufs Dateisystem an...

Moin,

Ein leerer Ordner verbraucht immer soviel Speicherplatz, wie ein Cluster der Festplatte.
Dh. Idr s
ind das 4KB - den Rest kannst Du bestimmt selber nach rechnen  :) 

so long(knife)

Das hängt vom verwendeten Dateisystem ab.

Ich habe einmal die Zahlen für das Dateisystem ext4 herausgesucht.

The original directory entry format is struct ext4_dir_entry, which is at most 263 bytes long, though on disk you'll need to reference dirent.rec_len to know for sure.

Das ist quasi die Länge für jeden Verweis auf ein Unterverzeichnis. Nun ist aber jedes Verzeichnis selbst (ebenso wie jede Datei) widerum eine so genannte inode (intermediate node, also ein "innerer" Knoten in einer Baumstruktur) und diese benötigt ebenfalls Platz.

In ext2 and ext3, the inode structure size was fixed at 128 bytes (EXT2_GOOD_OLD_INODE_SIZE) and each inode had a disk record size of 128 bytes. Starting with ext4, it is possible to allocate a larger on-disk inode at format time for all inodes in the filesystem to provide space beyond the end of the original ext2 inode. The on-disk inode record size is recorded in the superblock as s_inode_size. The number of bytes actually used by struct ext4_inode beyond the original 128-byte ext2 inode is recorded in the i_extra_isize field for each inode, which allows struct ext4_inode to grow for a new kernel without having to upgrade all of the on-disk inodes. Access to fields beyond EXT2_GOOD_OLD_INODE_SIZE should be verified to be within i_extra_isize. By default, ext4 inode records are 256 bytes, and (as of October 2013) the inode structure is 156 bytes (i_extra_isize = 28). The extra space between the end of the inode structure and the end of the inode record can be used to store extended attributes. Each inode record can be as large as the filesystem block size, though this is not terribly efficient.

Quelle für beides: https://ext4.wiki.kernel.org/index.php/Ext4_Disk_Layout

Das heißt, für die Datenstruktur, die das (Unter-)Verzeichnis selbst beschreibt, kommen dann jeweils noch einmal 256 Bytes dazu.

Peppie85  29.09.2017, 03:49

würde mich mal intressieren, ob die länge des namens des ordners einfluss auf die größe hat. theoretisch m.E. ja

lg, Anna

1
NoHumanBeing  29.09.2017, 12:58
@Peppie85

Nein, hat keinen Einfluss.

Für den Namen sind in der Struktur ext4_dir_entry 256 Bytes an Platz reserviert. Der Name des Verzeichnisses wird hier UTF-8-kodiert gespeichert. Länger kann der Name nicht sein. Versuche, ein Verzeichnis mit einem längeren Namen anzulegen (oder beispielsweise ein bestehendes Verzeichnis entsprechend umzubenennen) müssten vom Dateisystemtreiber zurückgewiesen werden.

Wenn der tatsächliche String weniger Platz benötigt, wird wohl einfach mit Nullbytes aufgefüllt. Das Layout der Datenstruktur ist jedenfalls vorgegeben. (Das war auch so zu erwarten.)

0
NoHumanBeing  29.09.2017, 13:03
@NoHumanBeing

Hab's soeben ausprobiert mit einem 260 Zeichen langen Verzeichnisnamen.

$ mkdir abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz
mkdir: das Verzeichnis „abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz“ kann nicht angelegt werden: File name too long
$
1
GandalfAwA  04.10.2017, 16:19

Also 1.000.000 Ordner würden knapp 500 MB verbrauchen?

Mein Tipp: (Achtung Ironie) 
In Zukunft einfach immer alle Dateien / Programme / Spiele zusammen direkt in das Hauptverzeichnis ohne jegliche Unterordner, da spart man eine Menge an Speicherplatz. ;-))))

1
NoHumanBeing  04.10.2017, 16:26
@GandalfAwA

Also 1.000.000 Ordner würden knapp 500 MB verbrauchen?

519 MB oder knapp 495 MiB.

Achja, Ext3/Ext4 reserviert per Default ohnehin ca. 5 % der Blöcke für "interne Zwecke".

Bei kleinen Laufwerken mag das Sinn machen, bei einer 1 TB Platte sind das aber schonmal 50 GB.

Da gehe ich dann tatsächlich her und setze das mit tune2fs herunter.

1

Welchen Erkenntnisgewinn erhoffst du dir denn von dieser ziemlich sinnfreien Frage?

Ein leerer Ordner benötigt gar keinen Platz auf der Festplatte. Allerdings nimmt sein Namenseintrag im Verzeichnis ein paar Byte in Anspruch (MFT oder FAT).

10^12 Ordner - selbst wenn sie leer sind - passen auf keine der derzeit am Markt erhältlichen Festplatten drauf.
Alleine die Verzeichniseinträge würden den vorhandenen Platz überschreiten.

...

Mal ganz davon abgesehen, daß das Erstellen von 10^12 Dateien wahrscheinlich Jahrhunderte dauern würde.

Isendrak  29.09.2017, 01:21

Mal ganz davon abgesehen, daß das Erstellen von 10^12 Dateien wahrscheinlich Jahrhunderte dauern würde.

Nicht ganz... Habs mal anhand eines Kleinversuches hochgerechnet:

10^5 Ordner = ca. 0.28872791 Sekunden

10^12 Ordner = (0.28872791/10^5)*10^12 = 2887279.1 Sekunden

2887279.1 = ca. 33.42 Tage

Oder hab ich mich verrechnet bzw. was übersehen? ;)

2
golfdesjahres  02.09.2019, 11:29

Soooo sinnfrei ist die Frage nicht. Also vielleicht der Teil mit den 1.000.000 Ordnern. Aber ich war auf der Suche nach einer Antwort zu der Frage da ich überlegt habe Ordner vorab automatisch erstellen zu lassen in die man dann Dateien einsortiert.

0
Roderic  02.09.2019, 12:05
@golfdesjahres

10.000 oder von mir aus auch 100.000 Ordner sind ja auch kein Problem. Die dürften weder viel Platz noch allzu viel Zeit beim Erstellen erfordern.

Der Fragestellerin ging es aber um die völlig aus der Luft gegriffene Anzahl von einer Billion Ordner. Auf diese Zahl bezog sich meine Antwort.

0