In den Zeiten, als die Festplatten noch ziemlich teuer waren, habe ich mich n„her mit der Festplatten-Verwaltung von MS-DOS und dem damit zusammen- h„ngenden "Cluster-Problem" besch„ftigt. Aus diesen šberlegungen sind auch einige Tools entstanden, die ich demn„chst in die Libs hochladen werde. Manchmal war ich selbst erstaunt, wieviel Platz sich auf einer Festplatte "freischaufeln" l„sst, indem man diese einfach anders strukturiert. Doch auch heute (bzw. gerade heute), nachdem fast jeder eine Festplatte mit einigen hundert (oder tausend) MB in seinem Rechner hat, lassen sich durch vernnftige Partitionierung und Strukturierung erhebliche Kapazit„ten wieder nutzbar machen. Beim nachfolgenden Text habe ich versucht, auch fr den Laien einigermaáen verst„ndlich die notwendigen Grundlagen zu er”rtern. Wie ist ein Datentr„ger aufgebaut ? ----------------------------------- Ein Datentr„ger besteht in der Regel aus einer runden Scheibe. Diese Scheibe wird in mehrere kreisf”rmige Spuren aufgeteilt. Ein "Kreis" wiederum unter- teilt sich in mehrere Abschnitte, den Sektoren. In jeden Sektor werden unter MS-DOS 512 Bytes (Zeichen) untergebracht. Die Sektoren werden vom Betriebs- system durchnummeriert. Einige Sektoren werden bereits bei der Formatierung fr bestimmte Aufgaben reserviert. So wird z.B. fr das Wurzelverzeichnis des Datentr„gers eine bestimmte Anzahl von Sektoren belegt. Da diese Anzahl vom System festgelegt wird und nicht mehr ver„nderbar ist, ist die Anzahl der m”glichen Eintr„ge (Dateien und Verzeichnisse) im Wurzelverzeichnis begrenzt. Was sind Cluster ? ------------------ MS-DOS kann nur eine begrenzte Zahl von Sektoren verwalten und "bndelt" deshalb die Sektoren zu den sog. Clustern oder zu deutsch : Zuordnungs- einheiten. Je nach Datentr„gergr”áe variiert die Anzahl der "Sektoren pro Zuordnungseinheit". Je gr”áer die Datentr„ger-Kapazit„t, desto mehr Sek- toren werden in eine Zuordnungseinheit gepackt. Welche Auswirkungen haben diese Zuordnungseinheiten ? ----------------------------------------------------- a) bei Dateien Jede Datei kann nur volle Zuordnungseinheiten belegen. In der Praxis belegt eine Datei auch dann einen ganzen Cluster, wenn sie nur 1 Byte lang ist. Werden z.B. 4 Sektoren (a 512 Byte) zu einer Zuordnungseinheit (ZE) ge- bndelt, so belegt eine 1-Byte-Datei in Wirklichkeit 2048 Byte (4x512). Es entsteht also ein "Verschnitt" - ein Teil der Speicher-Kapazit„t des Datentr„gers wird _belegt_ und ist trotzdem nicht nutzbar. Dazu ein drastisches Beispiel : Wir haben eine Festplatte bei der 4 Sektoren eine ZE bilden (=2048 Byte). Auf diese Festplatte spielen wir nun 2000 ICO-Dateien (Windows-Icons), die alle eine Gr”áe von 760 Bytes haben. Der Platzbedarf fr alle ICO- Dateien betr„gt 1.520.000 Bytes (2000 x 760). Da aber jede Datei in einen eigenen Cluster geschrieben wird, belegen die 2000 Dateien 4.096.000 Bytes (2000 x 2048). Von diesen rd. 4MB werden nur rd. 1,5MB wirklich genutzt, was einer Quote von knapp 40% entspricht. b) bei Verzeichnissen Im Gegensatz zum Wurzelverzeichnis (bei dem die Anzahl der Eintr„ge begrenzt ist), wird fr jedes neu erstellte UNTERverzeichnis zun„chst ein Cluster belegt. In diesem Cluster werden grunds„tzlich zwei Eintr„ge belegt, die bei der Ausgabe des DIR-Befehls mit einem bzw. zwei Punkten angezeigt werden. Fr jeden Verzeichnis-Eintrag (egal ob Datei oder Verzeichnis) werden 32 Bytes belegt. Wenn nun Dateien in das UNTERverzeichnis kopiert werden, legt MS-DOS fr jede dieser Dateien einen Eintrag an, in dem z.B. der Dateiname, die Dateigr”áe und das Datum und die Uhrzeit des letzten Schreibzugriffs gespeichert werden. Ist die erste ZE voll, wird eine weitere ZE belegt. Je mehr Dateien und Verzeichnisse in einem Unterverzeichnis angelegt werden, umso gr”áer wird auch der belegte Platz, um die Eintr„ge zu verwalten. Das Problem hierbei ist, daá MS-DOS beim L”schen einer Datei, den dazu geh”renden Eintrag nicht l”scht, sondern diesen nur "unsichtbar" macht. In manchen F„llen ist das sicher ein Segen, denn die verschiedenen Utilities, mit denen man aus Versehen gel”schte Dateien wieder herstellen kann, w„ren ohne diese "unsichtbaren" Verzeichniseintr„ge ziemlich aufgeschmissen. Der Nachteil bei der Sache wird beim nachfolgenden Beispiel klar : Nehmen wir an, wir entpacken eine ZIP-Datei in ein neu angelegtes Ver- zeichnis. Die ZIP-Datei enth„lt einige hundert Dateien und MS-DOS muá des- halb einige zus„tzliche ZEs fr die Eintr„ge belegen. Nach dem Entpacken verschieben wir die Dateien in ein anderes Verzeichnis. Dabei werden die zus„tzlich fr die Eintr„ge belegten ZEs aber nicht freigegeben, da ja die Eintr„ge nicht gel”scht, sondern nur versteckt werden. Eine Freigabe erfolgt erst, wenn wir das Unterverzeichnis l”schen. Dazu ein Experiment : a) Wir legen im Rootverzeichnis ein neues Verzeichnis an : MD TEST b) Vom DosPrompt aus rufen wir ChkDsk auf. Dort wird zum einen die Gr”áe einer ZE genannt (xxxx Byte in jeder Zuordnungseinheit) und zum anderen die Anzahl der freien ZE (xxxx Zuordnungseinheiten auf dem Datentr„ger verfgbar). Die beiden Werte notieren wir uns. c) Jetzt berechnen wir, wieviele Dateien wir in dieses Verzeichnis kopieren mssen, damit eine zus„tzliche ZE belegt werden muss. Wenn die Platte z.B. 2048 Bytes pro ZE hat, so rechnen wir : 1 Zuordnungseinheit : 2048 Bytes zwei Eintr„ge sind belegt = 2 x 32 Byte - 64 Bytes den Rest mssen wir belegen = 1984 Bytes dazu brauchen wir so viele Eintr„ge (:32) : 62 Eintr„ge bzw. min. einen mehr, um eine neue ZE zu provozieren. d) Jetzt kopieren wir (am Besten aus einem Verzeichnis, das so viele Dateien enth„lt) soviele Dateien (im Beispiel mind. 63) in unser TEST-Verzeichnis. Im Beispiel reicht normalerweise das DOS-Verzeichnis aus : XCOPY C:\DOS\*.* C:\TEST e) Danach l”schen wir den Inhalt des Testverzeichnisses wieder : DEL C:\TEST\*.* f) und jetzt rufen wir wieder ChkDsk auf. Eigentlich sollten wir nun in der Rubrik "verfgbare Zuordnungseinheiten" wieder denselben Wert erhalten, wie vor der Kopieraktion. Doch es fehlt mind. eine Zuordnungs- einheit ! Welche M”glichkeiten gibt es, den Platz besser auszunutzen ? ------------------------------------------------------------ In den meisten F„llen kann man davon ausgehen, daá eine m”glichst kleine ZE den kleinsten Verschnitt bringt. Gr”áere Festplatten sollte man partitionieren, also in mehrere kleinere Fest- platten aufteilen. Durch die Partitionsgr”áe k”nnen wir die Gr”áe der ZE steuern. MS-DOS geht dabei nach folgender Tabelle vor : Festplattengr”áe Sektoren Byte Rechenweg MB pro ZE pro ZE --------------------------------------------------------------- 0 - 15 MB 8 4.096 8 Sektoren x 512 Byte 16 - 127 MB 4 2.048 4 Sektoren x 512 Byte 128 - 255 MB 8 4.096 8 Sektoren x 512 Byte 256 - 511 MB 16 8.192 16 Sektoren x 512 Byte 512 - 1023 MB 32 16.384 32 Sektoren x 512 Byte 1023 - 2048 MB 64 32.768 64 Sektoren x 512 Byte Aus der Tabelle ist ersichtlich, daá es absolut NICHT empfehlenswert ist, eine Partition kleiner als 16MB bzw. gr”áer als 512MB zu machen. Die optimale ZE-Gr”áe erhalten wir im Bereich 16-127MB und fr bestimmte F„lle sind die beiden nachfolgenden Partitionsgr”áen noch akzeptabel. Da es relativ schwierig und mhsam w„re, fr jede Verzeichnis-Struktur die optimale Partitionsgr”áe zu berechnen (kleine Partition = wenig Verschnitt aber groáe Partition = weniger ZE fr groáe Verzeichnisse), habe ich mir ein Tool geschrieben, daá diese Arbeit abnimmt und fr beliebige Verzeichnis- strukturen die gnstigste Partitionsgr”áe empfiehlt. Momentan befindet sich das Programm noch in der Beta-Phase und steht in den Libs unter dem Namen CDIR.ZIP zur Verfgung. Neben der Umpartitionierung gibt es noch weitere Tricks, wie man trotz vieler und/oder kleiner Dateien, den Verschnitt eind„mmen kann : a) Grafiken, Icons u.„. lassen sich wesentlich platzsparender in einer Archivdatei unterbringen. Speziell fr Icons gibt es sog. Icon-Manager, die die Iconsammlung in DLL, NIL o.„. Dateien zusammenfhren. Damit kann nach wie vor z.B. vom Programm-Manager darauf zugegriffen werden und es wird ein Haufen Platz gespart. Fr andere Daten gibt es zahlreiche Pack- Programme und mit den entsprechenden Bediener-Oberfl„chen lassen sich Grafik-Archive etc. bequem verwalten. b) Batch-Dateien sind oft auch nur kurze Dateien und damit potentielle "Verschnitt-Erzeuger". Abhilfe schafft man da, indem man gleichartige Batches zu einer Datei zusammenfasst und ein Men dazu schreibt. Ein Beispiel : Nehmen wir an, wir haben mehrere Batches, um verschiedene Druck-Funktionen aufzurufen. Da w„re eine Batchdatei zum Senden eines FormFeed (FF.BAT), eine zum Drucken eines ASCII-Dokuments mit einem Druckprogramm (PRNDOC.BAT) und eine fr den Aufruf eines Konfigurationstools zum Ein- stellen verschiedener Drucker-Einstellungen (PCONFIG.BAT) : ----- FF.BAT -------------------------------------------------- @echo off IF %1%==2 GOTO FF2 ECHO >LPT1 GOTO ENDE :FF2 ECHO >LPT2 :ENDE ----- PRNDOC.BAT ---------------------------------------------- @echo off echo Drucke %1 d:\prttool\pageprnt.exe /l:69 /S /d %1 ----- PCONFIG.BAT --------------------------------------------- @echo off d:\prttool\pconfig.exe /c:laserjet.cfg --------------------------------------------------------------- Jede der drei Dateien hat zwar nur wenige Bytes, belegt bei ZEs mit 2048 Byte aber jeweils diese 2048 Byte : 3 x 2048 Byte = 6144 Byte. Jetzt fassen wir die drei Dateien zu DRUCK.BAT zusammen und verpassen dem Ding ein Men : ----- DRUCK.BAT ----------------------------------------------- @echo off echo 1. FormFeed an LPT1 echo 2. FormFeed an LPT2 echo 3. Datei %1 drucken echo 4. Drucker konfigurieren echo Deine Wahl : choice /c:1234 if errorlevel 4 goto config if errorlevel 3 goto drucken if errorlevel 2 goto ff2 if errorlevel 1 goto ff1 :config d:\prttool\pconfig.exe /c:laserjet.cfg goto ende :drucken echo Drucke %1 d:\prttool\pageprnt.exe /l:69 /S /d %1 goto ende :ff2 ECHO >LPT2 GOTO ende :ff1 ECHO >LPT1 :ende ---------------------------------------------------------------- Diese Datei ist etwas komfortabler und ben”tigt nur eine ZE, also 2048 Byte. c) Jedesmal, wenn man eine gr”áere Anzahl von Dateien kopiert oder entpackt, sollte man dies in einem neu angelegten Verzeichnis tun und dieses Ver- zeichnis danach l”schen, damit die zus„tzlich belegten ZEs wieder frei- gegeben werden. d) Das TEMP-Verzeichnis sollte ebenfalls in regelm„áigen Abst„nden komplett gel”scht (also nicht nur der Inhalt, sondern auch das Verzeichnis selbst) und danach wieder neu angelegt werden. e) Das Gleiche gilt fr tempor„re Verzeichnisse von Packern u.„. Feedback zu dem Text ist erwnscht. Uwe Pfannkuchen CIS:100273,3471