Subject: Geklauter Platz Dass das DOS-Filesystem mit groesser werdenden Festplatten, und damit mit groesseren Clustern, auch immer mehr Verschnitt hat, ist ja relativ bekannt. Dass dieser 'Verschnitt' jedoch mit weit ueber 50% Dateivergroesserung mehr als 1/3 einer Festplatte verschwenden kann, ist aber schon ziemlich krass. Ich habe das mal durchgerechnet, nachdem ich mir vor ca. 2 Wochen die IBM DPES-31080 gekauft hatte, die natuerlich knapp ueber der 1GB- Grenze liegt, und somit 32kB-Cluster produziert. Um das gleich zu verhindern, hab ich eine kleine Partition als Linux- Swapbereich eingerichtet, sodass der verbleibende Bereich knapp unter diese Grenze fiel. Wer kein Linux hat, kann hier z.B. auch eine Partition fuer eine Windows Auslagerungsdatei erstellen, es lohnt sich auf jeden Fall, diese Grenze zu unterschreiten. Zuerst dachte ich, mit 16kB-Clustern koennte man leben, aber nachdem ich meine gesicherten Daten wieder aufgespielt hatte (etwa 250MB), musste ich feststellen, dass schon 340MB der Platte voll waren! Das sind 36%, die einfach so verschwinden! Sofort unterteilte ich meine Platte nochmal in zwei 505MB-Partitionen, um auf 8kB-Cluster zu kommen. Jetzt habe ich 'nur noch' einen Verlust von ca.12%. Die 36% bei 16kB stimmen eigentlich nicht mit dem allgemein verwendeten statistischen Wert ueberein, der die Haelfte der Clustergroesse als Verlust berechnet. Damit kaeme ich bei 5000 Dateien und 250MB auf einen Verlust von gerade mal 40MB, also etwa 16%. Wie das kommt, liegt wohl daran, dass man nicht mit dieser einfachen Annahme rechnen kann. Dazu habe ich mir die Dateistruktur meiner aktuellen Festplatte einmal angesehen. Sie enthaelt 312MB Daten in 7600 Dateien, die 351MB Platz benoetigen; die 2.7MB, die allein die 344 Verzeichnisse verbraten, nicht mitgerechnet. Das ergibt einen Zuwachs von 12.5%, wohlgemerkt bei 8kB-Clustern. Die Verteilung der Dateigroessen habe ich graphisch dargestellt, zur Veranschau- lichung sind diese unter http://www.igd.fhg.de/~wkresse/harddisk/plattenplatz.html zusammengefasst. Dabei stellte sich heraus, dass es eine logarithmische Verteilung ist, die dann selbst nochmal in etwa Gauss-verteilt ist. Es gibt also etwa genausoviele Dateien von 100-1k, wie es Dateien von 1k-10k gibt, usw. Ich nehme meine Festplatte einfach mal als 'Standard', was nicht sehr weit hergeholt ist. Sie enthaelt (abgesehen von einem fehlenden Windows) die 'ueblichen' Daten, die man auf einer normalen DOS-Platte eines jeden Users finden wuerde: DOS und DRDOS Systemdateien, C-Sourcen und Compiler, Spiele aller Art, Utilities wie Norton oder verschiedene Speed-Checks, Packer, usw. Dabei stellte sich heraus, dass 3/4 aller Dateien kleiner als 16k waren. Zum Vergleich habe ich auch noch andere Sourcen getestet, die aber, da sie vor allem komprimierte Daten in groesseren Dateien enthalten, keiner alltaeglichen Festplatte entsprechen. C:\ 7600 Dateien auf 312MB Standard-Daten Pics 1000 Dateien auf 80MB Bilder-Archiv Archiv 5000 Dateien auf 500MB Sammlung von archivierten Programmen LinuxI. 4800 Dateien auf 756MB Linux Installations-CD LinuxFtp 3500 Dateien auf 610MB Linux Server-Abzuege Jedoch sind auch bei den Archiven ueber 50% aller Dateien <16kB: Datei- aufsummierter %-Anteil der Gesamtdateien, groesse die <= der angegebenen Groesse sind C:\ Pics Archiv LinuxI. LinuxFtp < 1k 30 < 2k 38 2 20 36 39 < 4k 49 3 30 46 45 < 8k 59 4 44 54 52 <16k 73 12 58 62 57 <32k 84 30 72 67 64 <64k 92 61 86 74 72 Wie findet man nun einen realistischeren Wert fuer den durchschnittlichen Verlust durch nur teilweise belegte Cluster? Dazu habe ich mir die einzelnen Dateigroessen angeschaut. Wenn man also 32k-Cluster hat, so verlieren Dateien zwischen 2k und 4k etwa 29kB/Datei! Datei- %-Anteil von Verlust pro Datei je Clustergroesse groesse allen Dateien 4k 8k 16k 32k <1k 30% >3k >7k >15k >31k 1k- 2k 8% 2.5k 6.5k 14.5k 30.5k 2k- 4k 11% 1k 5k 13k 29k 4k- 8k 10% 2k 2k 10k 26k 8k-16k 14% 2k 4k 4k 20k 16k-32k 11% 2k 4k 8k 8k >32k 16% 2k 4k 8k 16k Erst bei (sehr) grossen Dateien gilt die Faustregel, dass pro Datei ein halber Cluster verloren geht. Bei der gegebenen Verteilung ergibt sich jedoch pro Datei ein Verlust von: >2.2kB >5.0kB >10.8kB >23.8kB Also bei 7600 Dateien eine Groesse von: >16MB >36MB >78MB >172MB Bei einer reinen Datenmenge von 312MB ist das eine Vergroesserung (=Verlust) von: 5.2% 11.6% 25% 55% Diese ueberschlagenen Verluste liegen noch unter meinen realen Werten (12.5% fuer 8k-Cluster und >30% fuer 16k-Cluster). Und selbst bei grosszuegiger Rechnung (der Annahme, dass nur 50% aller Dateien kleiner als 16kB sind), ergibt sich fuer 32k-Cluster ein Wert um die 50%. Das heisst, der effektiv nutzbare Bereich einer 500MB Platte reduziert sich auf 450MB, der einer 1GB Partition auf weniger als 660MB!! Wer sich also erst eine 1G-Platte angeschafft hat, tut gut daran, sie richtig zu partitionieren, sonst hat er nicht viel davon! Wolfram Kresse -- +-------+-----Wolfram Kresse---------------------------------------------+ | | wkresse@igd.fhg.de * http://www.igd.fhg.de/~wkresse | | \ / +-------------------------+-----------------+--------------------+ | - - |"Meeneemeeneemeenee" | CU l8r, LE g8r! | | ^ |"Yes,that's right,Twiki."+-----------------+ | \___/ +-----+-----+-------------+ | | | 8^) | :u) | +-------+-----+-----+