home *** CD-ROM | disk | FTP | other *** search
/ CEUS Online / CEUS_CD.iso / texte / cluster.txt < prev    next >
Text File  |  1995-04-13  |  11KB  |  218 lines

  1. In den Zeiten, als die Festplatten noch ziemlich teuer waren, habe ich mich
  2. näher mit der Festplatten-Verwaltung von MS-DOS und dem damit zusammen-
  3. hängenden "Cluster-Problem" beschäftigt. Aus diesen Überlegungen sind auch
  4. einige Tools entstanden, die ich demnächst in die Libs hochladen werde.
  5. Manchmal war ich selbst erstaunt, wieviel Platz sich auf einer Festplatte
  6. "freischaufeln" lässt, indem man diese einfach anders strukturiert.
  7. Doch auch heute (bzw. gerade heute), nachdem fast jeder eine Festplatte mit
  8. einigen hundert (oder tausend) MB in seinem Rechner hat, lassen sich durch
  9. vernünftige Partitionierung und Strukturierung erhebliche Kapazitäten wieder
  10. nutzbar machen.
  11. Beim nachfolgenden Text habe ich versucht, auch für den Laien einigermaßen
  12. verständlich die notwendigen Grundlagen zu erörtern.
  13.  
  14. Wie ist ein Datenträger aufgebaut ?
  15. -----------------------------------
  16. Ein Datenträger besteht in der Regel aus einer runden Scheibe. Diese Scheibe
  17. wird in mehrere kreisförmige Spuren aufgeteilt. Ein "Kreis" wiederum unter-
  18. teilt sich in mehrere Abschnitte, den Sektoren. In jeden Sektor werden unter
  19. MS-DOS 512 Bytes (Zeichen) untergebracht. Die Sektoren werden vom Betriebs-
  20. system durchnummeriert.
  21. Einige Sektoren werden bereits bei der Formatierung für bestimmte Aufgaben
  22. reserviert. So wird z.B. für das Wurzelverzeichnis des Datenträgers eine
  23. bestimmte Anzahl von Sektoren belegt. Da diese Anzahl vom System festgelegt
  24. wird und nicht mehr veränderbar ist, ist die Anzahl der möglichen Einträge
  25. (Dateien und Verzeichnisse) im Wurzelverzeichnis begrenzt.
  26.  
  27. Was sind Cluster ?
  28. ------------------
  29. MS-DOS kann nur eine begrenzte Zahl von Sektoren verwalten und "bündelt"
  30. deshalb die Sektoren zu den sog. Clustern oder zu deutsch : Zuordnungs-
  31. einheiten. Je nach Datenträgergröße variiert die Anzahl der "Sektoren pro
  32. Zuordnungseinheit". Je größer die Datenträger-Kapazität, desto mehr Sek-
  33. toren werden in eine Zuordnungseinheit gepackt.
  34.  
  35. Welche Auswirkungen haben diese Zuordnungseinheiten ?
  36. -----------------------------------------------------
  37. a) bei Dateien
  38. Jede Datei kann nur volle Zuordnungseinheiten belegen. In der Praxis belegt
  39. eine Datei auch dann einen ganzen Cluster, wenn sie nur 1 Byte lang ist.
  40. Werden z.B. 4 Sektoren (a 512 Byte) zu einer Zuordnungseinheit (ZE) ge-
  41. bündelt, so belegt eine 1-Byte-Datei in Wirklichkeit 2048 Byte (4x512).
  42. Es entsteht also ein "Verschnitt" - ein Teil der Speicher-Kapazität des
  43. Datenträgers wird _belegt_ und ist trotzdem nicht nutzbar.
  44. Dazu ein drastisches Beispiel :
  45. Wir haben eine Festplatte bei der 4 Sektoren eine ZE bilden (=2048 Byte).
  46. Auf diese Festplatte spielen wir nun 2000 ICO-Dateien (Windows-Icons),
  47. die alle eine Größe von 760 Bytes haben. Der Platzbedarf für alle ICO-
  48. Dateien beträgt 1.520.000 Bytes (2000 x 760). Da aber jede Datei in einen
  49. eigenen Cluster geschrieben wird, belegen die 2000 Dateien 4.096.000 Bytes
  50. (2000 x 2048). Von diesen rd. 4MB werden nur rd. 1,5MB wirklich genutzt, was
  51. einer Quote von knapp 40% entspricht.
  52.  
  53. b) bei Verzeichnissen
  54. Im Gegensatz zum Wurzelverzeichnis (bei dem die Anzahl der Einträge begrenzt
  55. ist), wird für jedes neu erstellte UNTERverzeichnis zunächst ein Cluster 
  56. belegt. In diesem Cluster werden grundsätzlich zwei Einträge belegt, die
  57. bei der Ausgabe des DIR-Befehls mit einem bzw. zwei Punkten angezeigt werden.
  58. Für jeden Verzeichnis-Eintrag (egal ob Datei oder Verzeichnis) werden 32 
  59. Bytes belegt. Wenn nun Dateien in das UNTERverzeichnis kopiert werden, legt
  60. MS-DOS für jede dieser Dateien einen Eintrag an, in dem z.B. der Dateiname,
  61. die Dateigröße und das Datum und die Uhrzeit des letzten Schreibzugriffs
  62. gespeichert werden. Ist die erste ZE voll, wird eine weitere ZE belegt.
  63. Je mehr Dateien und Verzeichnisse in einem Unterverzeichnis angelegt werden,
  64. umso größer wird auch der belegte Platz, um die Einträge zu verwalten.
  65. Das Problem hierbei ist, daß MS-DOS beim Löschen einer Datei, den dazu
  66. gehörenden Eintrag nicht löscht, sondern diesen nur "unsichtbar" macht.
  67. In manchen Fällen ist das sicher ein Segen, denn die verschiedenen Utilities,
  68. mit denen man aus Versehen gelöschte Dateien wieder herstellen kann, wären
  69. ohne diese "unsichtbaren" Verzeichniseinträge ziemlich aufgeschmissen.
  70. Der Nachteil bei der Sache wird beim nachfolgenden Beispiel klar :
  71. Nehmen wir an, wir entpacken eine ZIP-Datei in ein neu angelegtes Ver-
  72. zeichnis. Die ZIP-Datei enthält einige hundert Dateien und MS-DOS muß des-
  73. halb einige zusätzliche ZEs für die Einträge belegen. Nach dem Entpacken
  74. verschieben wir die Dateien in ein anderes Verzeichnis. Dabei werden die 
  75. zusätzlich für die Einträge belegten ZEs aber nicht freigegeben, da ja
  76. die Einträge nicht gelöscht, sondern nur versteckt werden. Eine Freigabe
  77. erfolgt erst, wenn wir das Unterverzeichnis löschen.
  78.  
  79. Dazu ein Experiment :
  80. a) Wir legen im Rootverzeichnis ein neues Verzeichnis an : MD TEST
  81. b) Vom DosPrompt aus rufen wir ChkDsk auf. Dort wird zum einen die Größe
  82.    einer ZE genannt (xxxx Byte in jeder Zuordnungseinheit)
  83.    und zum anderen die Anzahl der freien ZE (xxxx Zuordnungseinheiten auf
  84.    dem Datenträger verfügbar). Die beiden Werte notieren wir uns.
  85. c) Jetzt berechnen wir, wieviele Dateien wir in dieses Verzeichnis kopieren
  86.    müssen, damit eine zusätzliche ZE belegt werden muss.
  87.    Wenn die Platte z.B. 2048 Bytes pro ZE hat, so rechnen wir :
  88.    1 Zuordnungseinheit                   :     2048 Bytes
  89.    zwei Einträge sind belegt =  2 x 32 Byte  -   64 Bytes
  90.    den Rest müssen wir belegen               = 1984 Bytes
  91.    dazu brauchen wir so viele Einträge (:32) :   62 Einträge
  92.    bzw. min. einen mehr, um eine neue ZE zu provozieren.
  93. d) Jetzt kopieren wir (am Besten aus einem Verzeichnis, das so viele
  94.    Dateien enthält) soviele Dateien (im Beispiel mind. 63) in unser
  95.    TEST-Verzeichnis. Im Beispiel reicht normalerweise das DOS-Verzeichnis
  96.    aus : XCOPY C:\DOS\*.* C:\TEST
  97. e) Danach löschen wir den Inhalt des Testverzeichnisses wieder :
  98.    DEL C:\TEST\*.*
  99. f) und jetzt rufen wir wieder ChkDsk auf. Eigentlich sollten wir nun in
  100.    der Rubrik "verfügbare Zuordnungseinheiten" wieder denselben Wert
  101.    erhalten, wie vor der Kopieraktion. Doch es fehlt mind. eine Zuordnungs-
  102.    einheit !
  103.  
  104. Welche Möglichkeiten gibt es, den Platz besser auszunutzen ?
  105. ------------------------------------------------------------
  106. In den meisten Fällen kann man davon ausgehen, daß eine möglichst kleine
  107. ZE den kleinsten Verschnitt bringt. 
  108. Größere Festplatten sollte man partitionieren, also in mehrere kleinere Fest-
  109. platten aufteilen. Durch die Partitionsgröße können wir die Größe der ZE
  110. steuern. MS-DOS geht dabei nach folgender Tabelle vor :
  111.  
  112. Festplattengröße  Sektoren     Byte     Rechenweg
  113.      MB            pro ZE     pro ZE
  114. ---------------------------------------------------------------
  115.    0 -   15 MB       8          4.096    8 Sektoren x 512 Byte
  116.   16 -  127 MB       4          2.048    4 Sektoren x 512 Byte
  117.  128 -  255 MB       8          4.096    8 Sektoren x 512 Byte
  118.  256 -  511 MB      16          8.192   16 Sektoren x 512 Byte
  119.  512 - 1023 MB      32         16.384   32 Sektoren x 512 Byte
  120. 1023 - 2048 MB      64         32.768   64 Sektoren x 512 Byte
  121.  
  122. Aus der Tabelle ist ersichtlich, daß es absolut NICHT empfehlenswert ist,
  123. eine Partition kleiner als 16MB bzw. größer als 512MB zu machen. Die 
  124. optimale ZE-Größe erhalten wir im Bereich 16-127MB und für bestimmte Fälle
  125. sind die beiden nachfolgenden Partitionsgrößen noch akzeptabel.
  126.  
  127. Da es relativ schwierig und mühsam wäre, für jede Verzeichnis-Struktur die
  128. optimale Partitionsgröße zu berechnen (kleine Partition = wenig Verschnitt
  129. aber große Partition = weniger ZE für große Verzeichnisse), habe ich mir
  130. ein Tool geschrieben, daß diese Arbeit abnimmt und für beliebige Verzeichnis-
  131. strukturen die günstigste Partitionsgröße empfiehlt.
  132. Momentan befindet sich das Programm noch in der Beta-Phase und steht in
  133. den Libs unter dem Namen CDIR.ZIP zur Verfügung.
  134.  
  135. Neben der Umpartitionierung gibt es noch weitere Tricks, wie man trotz
  136. vieler und/oder kleiner Dateien, den Verschnitt eindämmen kann :
  137. a) Grafiken, Icons u.ä. lassen sich wesentlich platzsparender in einer
  138.    Archivdatei unterbringen. Speziell für Icons gibt es sog. Icon-Manager,
  139.    die die Iconsammlung in DLL, NIL o.ä. Dateien zusammenführen. Damit kann
  140.    nach wie vor z.B. vom Programm-Manager darauf zugegriffen werden und es
  141.    wird ein Haufen Platz gespart. Für andere Daten gibt es zahlreiche Pack-
  142.    Programme und mit den entsprechenden Bediener-Oberflächen lassen sich
  143.    Grafik-Archive etc. bequem verwalten.
  144. b) Batch-Dateien sind oft auch nur kurze Dateien und damit potentielle 
  145.    "Verschnitt-Erzeuger". Abhilfe schafft man da, indem man gleichartige
  146.    Batches zu einer Datei zusammenfasst und ein Menü dazu schreibt.
  147.    Ein Beispiel :
  148.    Nehmen wir an, wir haben mehrere Batches, um verschiedene Druck-Funktionen
  149.    aufzurufen. Da wäre eine Batchdatei zum Senden eines FormFeed (FF.BAT), 
  150.    eine zum Drucken eines ASCII-Dokuments mit einem Druckprogramm 
  151.    (PRNDOC.BAT) und eine für den Aufruf eines Konfigurationstools zum Ein-
  152.    stellen verschiedener Drucker-Einstellungen (PCONFIG.BAT) :
  153.  
  154.    ----- FF.BAT --------------------------------------------------
  155.    @echo off
  156.    IF %1%==2 GOTO FF2
  157.    ECHO >LPT1 
  158.    GOTO ENDE
  159.    :FF2
  160.    ECHO >LPT2 
  161.    :ENDE
  162.    ----- PRNDOC.BAT ----------------------------------------------
  163.    @echo off
  164.    echo Drucke %1
  165.    d:\prttool\pageprnt.exe /l:69 /S /d %1
  166.    ----- PCONFIG.BAT ---------------------------------------------
  167.    @echo off
  168.    d:\prttool\pconfig.exe /c:laserjet.cfg
  169.    ---------------------------------------------------------------
  170.  
  171.    Jede der drei Dateien hat zwar nur wenige Bytes, belegt bei ZEs mit
  172.    2048 Byte aber jeweils diese 2048 Byte : 3 x 2048 Byte = 6144 Byte.
  173.    Jetzt fassen wir die drei Dateien zu DRUCK.BAT zusammen und verpassen
  174.    dem Ding ein Menü :
  175.  
  176.    ----- DRUCK.BAT -----------------------------------------------
  177.    @echo off
  178.    echo 1. FormFeed an LPT1
  179.    echo 2. FormFeed an LPT2
  180.    echo 3. Datei %1 drucken
  181.    echo 4. Drucker konfigurieren
  182.    echo Deine Wahl :
  183.    choice /c:1234 
  184.    if errorlevel 4 goto config
  185.    if errorlevel 3 goto drucken
  186.    if errorlevel 2 goto ff2
  187.    if errorlevel 1 goto ff1
  188.    :config
  189.    d:\prttool\pconfig.exe /c:laserjet.cfg
  190.    goto ende
  191.    :drucken
  192.    echo Drucke %1
  193.    d:\prttool\pageprnt.exe /l:69 /S /d %1
  194.    goto ende
  195.    :ff2
  196.    ECHO >LPT2 
  197.    GOTO ende
  198.    :ff1
  199.    ECHO >LPT1 
  200.    :ende
  201.    ----------------------------------------------------------------
  202.  
  203.    Diese Datei ist etwas komfortabler und benötigt nur eine ZE, also 
  204.    2048 Byte.
  205.  
  206. c) Jedesmal, wenn man eine größere Anzahl von Dateien kopiert oder entpackt,
  207.    sollte man dies in einem neu angelegten Verzeichnis tun und dieses Ver-
  208.    zeichnis danach löschen, damit die zusätzlich belegten ZEs wieder frei-
  209.    gegeben werden.
  210.  
  211. d) Das TEMP-Verzeichnis sollte ebenfalls in regelmäßigen Abständen komplett
  212.    gelöscht (also nicht nur der Inhalt, sondern auch das Verzeichnis selbst)
  213.    und danach wieder neu angelegt werden.
  214.  
  215. e) Das Gleiche gilt für temporäre Verzeichnisse von Packern u.ä.
  216.  
  217. Feedback zu dem Text ist erwünscht.
  218. Uwe Pfannkuchen CIS:100273,3471