Festplatten, Dateisysteme und deren Grenzen aus der Sicht von WindowsNT

 

Konstruktion der Festplatte

Pysikalisch besteht eine Festplatte aus einer oder mehreren Scheiben, die beidseitig beschrieben werden können. Diese sind in sogenannte auch Spuren aufgeteilt, welche wiederum in Sektoren unterteilt sind. Der Datentransfer wird mit dem Schreib-/Lesekopf ausgeführt. Die allermeisten Festplatten besitzen einen Kopf pro Plattenseite (Scheibe). Ganz selten sind sehr schnelle Highend Platten, die 2 komplette Schreib-/Lese-Einheiten haben. Die Köpfe werden von einem Servomotor angetrieben, welcher wiederum vom sogenannten Platten-Kontroller angesteuert wird. Die Daten werden vom Kontroller aufgesplittet und auf alle Köpfe verteilt, dies ergibt eine erhöhte Datentransferrate. Deshalb werden die über einander liegenden Spuren auf den einzelnen Scheiben zu Zylindern zusammen gefasst.

Um die verschiedenen Aspekte von Festplattenleistung zu verstehen, lohnt es sich, einmal den Weg der Daten von der Festplatte in den Arbeitsspeicher des Rechners zu verfolgen. Die Köpfe fliegen in einer sehr niedrigen Höhe auf einem Luftkissen über den Stapel von Magnetscheiben. Sie lesen und schreiben die Daten in Spuren, die konzentrische Kreise bilden und in mehrere Sektoren eingeteilt sind. Bei PC und Macintosh beträgt die Sektorgröße 512 Byte, Großrechner oder Workstations arbeiten aber auch vereinzelt mit anderen Blockgrößen. Je mehr Sektoren pro Sekunde unter den Köpfen `vorbeirotieren´, desto höher die Datenübertragungsrate. Dieser Aspekt der Festplattengeschwindigkeit hängt somit von der Drehzahl und von der Anzahl der Sektoren pro Spur, also der Datendichte ab. Da die äusseren Spuren des Mediums länger sind als die inneren, lassen sich auf ihnen bei gleicher Dichte mehr Sektoren unterbringen. Alle modernen Platten arbeiten nach dem sogenannten Zone-Bit-Recording-Verfahren: Sie teilen die Plattenoberfläche in verschiedene Zonen ein, die mit jeweils unterschiedlicher Anzahl von Sektoren pro Spur formatiert sind. Auf den äusseren Spuren finden die meisten Sektoren Platz, so dass die Festplatte dort die höchsten Übertragungsraten erzielen kann. Danach fällt die Übertragungsrate entsprechend den Zonen mit verschiedener Sektorzahl treppenförmig ab. Wo welcher Sektor physikalisch auf der Platte zu finden ist, bleibt der Laufwerkselektronik und somit dem Plattenhersteller überlassen. Die meisten Platten speichern Sektor Null auf dem äussersten Zylinder aus übereinander liegenden Spuren, die sich ohne Kopfbewegung erreichen lassen. Die folgenden Sektoren liegen auf dem nächsten, weiter innen gelegenen Zylinder, bis hin zum letzten Sektor, der sich am inneren Rand des Plattenstapels befindet.

 

Die BIOS-Schnittstelle

In den PC werden die Festplatten über die sogenannte INT13h-Schnittstelle des BIOS eingebunden. Dabei werden Werte für Zylinder, Köpfe, und Sektoren der Platte eingetragen. Diese Werte werden dann vom Betriebsystem durch einen Treiber in absolute Werte für die einzelnen Sektoren umgesetzt. Diese INT13-Schnittstelle ist seit einigen Jahren durch ihre Einschränkungen ein Ärgernis, da sie nur max. 1024 Zylinder verwalten kann. Die folgenden max. CHS-Werte (CHS = Cylinder, Head, Sector) sind möglich:

1024 Zylinder x 256 Köpfe x 63 Sektoren x 512 Byte/Sekt. = 7,8 GB (8,455,716,864 Byte)

Damit die maximalen Werte ausgenützt werden können, haben alle aktuellen SCSI- und EIDE-Kontroller die Option eingebaut, eine sogenannte Geometrieumsetzung durch zu führen. Diese setzen dann die CHS Werte, der Platte in BIOS-kompatible um. Dabei werden bei den meisten die maximalen Werte für Köpfe und Sektoren (255/64) gesetzt, und nur die Anzahl Zylinder variert. Diese 7,8GB sind die maximale Grösse für eine Bootpartition ohne INT13-Extensions. Mit den mittlerweile bei allen BIOS´ vorhanden INT13-Erweiterungen können aber grössere Platten (bis 16 TB), durch das nun standardisierte LBA, korrekt ins System eingebunden werden. Die INT13-Extensions sind unter: Enhanced BIOS Services For Disk Drives nachzulesen. Damit funktioniert auch das Booten von Partitionen, die grösser als 7,8GB sind. Sehr wichtig dabei ist aber, dass die CHS- oder LBA-Werte im BIOS mit denen im Master Boot Record übereinstimmen, sonst meldet das BIOS lapidar, "No Filesystem".

 

Die Datenschnittstelle

Aktuelle Festplatten werden bis auf wenige Ausnahmen nur noch mit SCSI- oder EIDE-Schnittstelle produziert. Bei einem neuen Rechner kann man davon ausgehen, dass das System vom Hersteller richtig zusammengestellt, entsprechend konfiguriert und ausgetestet wurde. Ganz anders sieht das aus, wenn man einen bestehenden, vielleicht schon etwas älteren Rechner aufrüsten will. Dann können die Beschränkungen, die ältere Versionen des PC-BIOS, des SCSI-Bus oder der IDE-Schnittstelle aufweisen, diverse Hürden darstellen.

 

IDE und EIDE

Die maximalen CHS-Werte für die ursprüngliche IDE-Schnittstelle betragen 65,536 Zylindern, 16 Köpfen und 255 Sektoren. Um eine kompatible Kommunikation zwischen System-BIOS und IDE-Schnittstelle zu gewährleisten, musste der kleinste gemeinsame Nenner von 1024 Zylindern, 16 Köpfen und 63 Sektoren pro Spur angewendet werden. Daraus resultiert die berühmte 504 MB Barriere.

Als die IDE-Platten grösser als 500MB wurden, wurde von den Herstellern diese Barriere mit der Einführung einer Logischen Blockadressierung mit 28 Bit umgangen. Dies setzte aber die Unterstützung durch den Kontroller und eine Erweiterung des PC-BIOS voraus. Damit wurden die Platten zwar adressierbar, aber nur mit einem vom Kontroller abhängigen Treiber. Die Bootpartition ist deshalb mit dieser Lösung weiterhin auf die 504MB beschränkt.

Eleganter ist die Lösung der sogenannten Diskmanager. Diese Software klinkt sich in den Master-Boot-Record (MBR) ein und wird jedesmal noch vor dem Booten irgendeines Systems geladen. Diese implementieren eine Erweiterung im BIOS, welche die Geometrieumsetzung vornimmt.

Heute werden ausnahmslos nur noch Kontroller und Platten hergestellt, die EIDE unterstützen. Diese erweiterte Spezifikation der Schnittstelle enthält die Geometrieumsetzung und LBA schon zum vornherein. Doch die nächste Barriere ist schon in Sicht: Mit den 28Bit der LBA von IDE lassen sich maximal 137 GB ansprechen. Da wird EIDE in nächster Zeit erneut nachgebessert werden müssen. Die ersten Vorschläge dazu sind bereits gemacht, siehe:

http://www.t13.org/technical/d99102r0.pdf
http://www.t13.org/technical/d99114r0.pdf
http://www.t13.org/technical/e00101r6.pdf

Ein grosses Problem war bis vor nicht all zu langer Zeit, dass praktisch alle IDE- und EIDE-Kontroller den ganzen Datentransport der CPU aufbürdeten. aktuellen Modelle beherrschen aber inzwischen praktisch alle den sogenannten DMA-Transfer (Direct Memory Access) mittels PCI-Busmastering. Der Kontroller übernimmt dabei kurzzeitig den PCI-Bus und schreibt oder liest die Daten direkt in den Speicher. Die Service Packs ab Version 3 zu NT 4.0 enthalten einen aktualisierten Treiber (atapi.sys) für die EIDE-Schnittstelle, der mit Intel-Chipsätzen Busmastering beherrscht. Einträge in der Registy entscheiden darüber, ob er es tatsächlich nutzt. Das Windows-Programm Dmacheck nimmt die nötigen Einstellungen auf Knopfdruck vor. Es findet sich auf der Service-Pack-3-CD oder in Microsofts Download-Bereich unter http://support.microsoft.com. Um das Busmastering vom Hand zu aktivieren, legt man HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\atapi\Parameters\DeviceX\ einen String-Wert namens `DriverParameter´ an und trägt dort `DmaDetectionLevel = 0x1;´ ein (X ist 0 für den primären, 1 für den sekundären EIDE-Kanal). Mit dieser Einstellung aktiviert NT beim nächsten Bootvorgang das Busmastering, falls die Hardware das unterstützt. Ob´s geklappt hat, verrät der Eintrag `DMAEnabled´ unter \HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\Scsi\ScsiPort X, wobei X für den jeweiligen EIDE-Kanal steht. Falls NT sich weigert, den DMA-Zugriff zu aktivieren, obwohl die Hardware Busmastering unterstützt, läßt er sich durch den Wert 2 beim `DmaDetectionLevel´ erzwingen. Besitzer von Boards mit Nicht-Intel-Chipsätzen sind derzeit darauf angewiesen, daß der Hersteller ihres Boards einen Busmaster-Treiber mitliefert. Wenn dies nicht der Fall ist, hilft unter Umständen die Website http://www.bmdrivers.com

Zwei grosse Nachteile von EIDE bleiben nach wie vor. Erstens das nicht vorhande Command-Queueing. Hängen zwei Geräte als Master und Slave an einem gemeinsamen IDE-Kanal, so kann der Rechner sie nur abwechselnd ansprechen. Bei vielen Boards blockieren zwei IDE-Geräte einander selbst dann, wenn sie an zwei verschiedenen Kanälen angeschlossen sind, da primärer und sekundärer Kanal sich dieselben Datenleitungen teilen. Das zweite Problem ist, dass der Bus immer nur so schnell betrieben wird, wie das langsamste angeschlossene Gerät. Wenn z.B. eine schnelle Festplatte mit Ultra-DMA 2 und ein CDROM mit PIO 2 an einen Kanal gehängt werden, bricht die Leistung der Platte ein, aber vor allem steigt die Belastung der CPU, da mit PIO 2 dieser jedes Byte selber hin und her schaufeln muss.

 

SCSI

Im Gegensatz zu IDE verwenden die verschiedenen Hersteller von SCSI-Hostadaptern schon seit jeher eigene Treiber um die Sektoren auf den Disks absolut anzusprechen. Deshalb ist es fast immer nötig die Platte LowLevel zu formatieren, wenn sie an einem Adapter eines anderen Hersteller betrieben werden soll. Zum Booten sind aber auch SCSI-Disks auf das BIOS angewiesen. Als die Disks grösser wurden, wurde deshalb auch bei SCSI die Geometrieumsetzung in den Hostadaptern eingeführt. Zu Beginn wurde z.B. von Adaptec 32H/63S verwendet, heute werden für diese sogenannten Drive-Mappings nur noch 256H/63S mit variabler Zylinderzahl verwendet.

Aktuelle SCSI-Adapter arbeiten alle als PCI-Busmaster (siehe oben). Der SCSI-Bus war von Anfang an für den quasi-gleichzeitigen Betrieb mehrerer Geräte konzipiert. Ein Gerät kann seine Datenübertragungsphase unterbrechen und den Bus für andere Teilnehmer freigeben (disconnect), um sie dann später wieder aufzunehmen (reconnect). Während eine Festplatte gerade ihren Puffer mit Daten füllt, kann eine andere Daten zum Host übertragen und umgekehrt. Unter günstigen Umständen erreicht der Gesamtdurchsatz des Systems die Summe der Übertragungsleistungen aller Einzelplatten. Er wird natürlich durch die Höchstgeschwindigkeit der verwendeten SCSI-Variante begrenzt.

Wer zwei Hochleistungsplatten à 18 MByte/s gleichzeitig mit vollem Durchsatz betreiben will, braucht dazu mindestens Wide Ultra SCSI. Umgekehrt genügt selbst für die schnellste derzeit erhältliche SCSI-Platte noch ein 8bittiger Ultra-SCSI-Hostadapter, wenn sie als einzige am Bus hängt. Die Mehrkosten, die ein Wide-Ultra-SCSI-Adapter direkt und indirekt (teurere Kabel, Platten und Adapterstecker) verursacht, kann man sich für einen Arbeitsplatzrechner mit nur einer Festplatte also getrost sparen.

Grosse Vorteile von SCSI sind die Abwärtskompatibilität und die Universalität der Schnittstelle. SCSI-Geräte können (korrekte Verkabelung vorausgesetzt) miteinander am gleichen Hostadapter ohne Leistungseinbusse betrieben werden. Dabei wird jedes Gerät mit der entsprechenden Geschwindigkeit angesteuert. Dies gilt nicht für die neuesten LVD (Low Voltage Differential) Platten, diese fallen auf Ultra Wide SCSI zurück wenn sie mit Nicht-LVD-Geräten gemixt werden.

Aufteilung einer PC-Festplatte (Partitionierung)

Eine Festplatte in einem INTEL basierenden PC kann max. 4 sogennante primäre Partitions enthalten. Müssen mehr als 4 Partitions auf einer Platte untergebracht werden, muss eine primäre durch eine sogenannte Extended Partion ersetzt werden. In dieser können dann weitere Unterpartitions (logische Laufwerke in Microsoft Sprache) angelegt werden. Dabei wird mit der sogenannten PartitionID gleich auch das zu verwendende Dateisystem festgelegt. Nebenstehend eine Auswahl der gebräuchlichsten Dateisysteme. Unter: http://www.win.tue.nl/~aeb/partitions/partition_types-1.html findet man alle Partitionentypen aufgelistet.

Für das Erstellen von Partitions gibt es eine Menge von Software. Bei DOS und Win9x basierenden Betriebsystemen kommt normalerweise das Tool fdisk zum Einsatz. Die neueste Version ab Win95 OSR 2 können die neuen FAT32 (mit oder ohne die IN13 Erweiterung zu verwenden) erstellen. Unter WindowsNT werden Partitons entweder mit dem Setup (NTFS maximal 4GB über den Umweg FAT) oder mit dem Tool windisk erstellt. Um Festplatten mit verschiedendsten Dateisystemen zu partionieren, wird aber meistens spezielle Software wie z.B. Partiton Magic notwendig. Diese ist auch nötig um ohne installiertes WindowsNT, NTFS-Partitions über 4 GB Grösse zu erstellen.

 

Das FAT Dateisystem

Dieses Dateisystem wurde mit MS-DOS eingeführt. FAT steht für File Allocation Table. Weil es ursprünglich nur als 12Bit System ausgelegt wurde, stiess es sehr schnell an seine Grenzen. Der erste Nachfolger war FAT16, dies war nur von kurzer Dauer, weil es wie FAT12 ebenfalls maximal 32 MB grosse Partitions zuliess, kurz danach wurde mit DOS 3.31 vor über 10 Jahren das FAT16 BIGDOS Format eingeführt, das bis zu 2 GB grosse Partitions zulässt. Dies wurde mit dem Nachteil von bis zu 64 kB grossen Clustern (kleinste, logische Einheit) erkauft. Mit Windows95 wurden dann mittels eines Kunstgriffes auf dem bestehenden Format endlich auch lange Dateinamen möglich.

Mit MS-DOS und dem FAT System wurde auch die heute noch gültige Partitiontabelle im Master Bootrecord mit seinen maximal 4 Einträgen eingeführt. Deshalb wurde die sogenannte Extended Partition eingeführt, in der eine weitere Partitiontabelle mit beliebig vielen Einträgen liegt.

Erst 1997 wurde dann mit Windows95 OSR 2 die FAT32 Partition aktuell. Diese unterstützt als erste die INT13 Erweiterungen direkt. Weitere angenehme Neuerungen sind die Clustergrösse von 4 kB und die Unterstützung von Unicode Zeichensätzen. Siehe MS-Kb Q154997

FAT ist ein einfaches schnelles Dateisystem ohne grossen Overhead. Mehre bedeutende Nachteile müssen dabei erwähnt werden. Der wichtigste ist designbedingt: Alle Dateien und Verzeichnisse werden in einer einzigen Tabelle (der FAT) am physikalischen Anfang der Partition gehalten. Als Sicherheit wird ständig eine Kopie dieser Tabelle mitgeführt, leider liegt diese aber auf der Platte gleich anschliessend an die erste FAT. Durch die nicht vorhandenen Sicherheitsfunktionen hat das Betriebssystem sehr direkten Zugang zu diesem Dateisystem. Dabei kann es passieren, dass bei einem Absturz, Stromunterbruch oder sonstigen unvorhergesehenen Problemen, mit Schreiboperationen, die für Datenbereiche bestimmt waren, auf die FAT geschrieben wird. Weil nun aber beide FAT’s gleich hintereinander liegen, sind in so einem Fall schnell beide Tabelllen überschrieben. Damit wird eine solche Partition unbrauchbar, obwohl noch alle Daten enthalten sind, nur kann man nicht mehr erkennen wie diese organisiert sind.

Ein weiterer Nachteil sind die nur sehr rudimentär vorhandenen Sicherheitsmechanismen. Eine Datei oder ein Verzeichnis kann nur mit den Attributen Archiv, System, versteckt und schreibgeschützt versehen werden. Auf Benutzerstufe besteht überhaupt keine Zugriffsrechte.

 

Das NTFS Dateisystem

Mit WindowsNT wurde vom Microsoft versucht, die Probleme die man sich mit FAT eingehandelt hatte nicht zu wiederholen. Dies scheint aus heutiger Sicht auch gelungen zu sein, was allerdings einiges an Leistung bedarf. Wie beim neuen FAT32 System verwendet NTFS kleinere logische Einheiten, sogenannte Clusters. Diese können beim formatieren des Laufwerks mit:

format x: /FS:NTFS /A:<clustergösse> festgelegt werden. Man sollte aber bedenken, dass Clustergrössen über 4 KB bedeutende Nachteile aufweisen. So kann eine so formatierte Partition von Defragmentierungs-Software nicht mehr defragmentieren. Weiter kann die NTFS-Dateikompression nicht mehr verwendet werden.

Im Gegensatz zu anderen Filesystemen werden bei NTFS alle Verwaltungsdaten in sogenannten Metafiles gehalten. Nebenstehend ein Auszug dieser Dateien.
Diese können mit dem Kommando: dir /ah <Dateiname> angesehen werden. Im ganzen sind 11 dieser Dateien vorhanden. Mit dieser Technik ist es möglich, bei Problemen wie bei einer professionellen Datenbank, einen genau definierten Ausgangszustand wiederherzustellen. Mehr über das NTFS-Dateisystem findet man unter folgenden Links:
http://www.winnetmag.com/Articles/Index.cfm?ArticleID=118
http://www.winnetmag.com/Articles/Index.cfm?ArticleID=3455
http://www.winnetmag.com/Articles/Index.cfm?ArticleID=4538
http://www.winnetmag.com/Articles/Index.cfm?ArticleID=4711
http://www.winnetmag.com/Articles/Index.cfm?ArticleID=4875
http://www.winnetmag.com/Articles/Index.cfm?ArticleID=478
http://www.winnetmag.com/Articles/Index.cfm?ArticleID=3864  Inside the Cache Manager

Nachfolgend eine Beschreibung einiger Metadaten Files:

 

Die Master File Table

Die Master File Table ist die Kommandozentrale von NTFS. Sie enthält alle Angaben über die Dateien und Verzeichnisse in einem Laufwerk, inklusive der Metafiles. Die MFT ist in mehrere logische Einheiten, die als Records bezeichnet werden, aufgeteilt. Darin sind Angaben wie Sicherheitseinstellungen, Attribute und natürlich der Ort, an welchem die Datei oder das Verzeichnis auf der Platte abgelegt ist. Die MFT verwaltet sich selber auch als Datei, dadurch kann die Grösse leicht den Erfordernissen angepasst werden.

Die $MFTMIRR Datei ist eine Sicherheitsmassnahme. Sie enthält eine Kopie der ersten 16 Records der MFT, sie wird von NTFS in der Mitte der Disk gespeichert. Die MFT dagegen liegt in der Nähe des Laufwerkanfangs.

Der Zugriff auf die MFT spielt eine entscheidende Rolle in der Zugriffszeit bei einem NTFS Laufwerk. Da die MFT selber eine Datei ist, kann sie wie alle anderen Dateien auch, fragmentiert werden. Um dies zu Verhindern, wird bei einem neuen NTFS Laufwerk eine gewisse Anzahl Clusters (Standard: 12,5 %) um die MFT herum freigehalten. Dies funktioniert aber nur solange die Disk nicht bis an die Grenzen voll ist, dann werden diese Clusters vom System quasi wieder eingezogen. Auch wenn extrem viele Dateien gespeichert werden und diese Zone nicht mehr für alle MFT-Einträge reicht, entsteht Fragmentierung, da diese Einträge in anderen Bereichen des Laufwerks gespeichert werden müssen.

Unglücklicherweise lässt NTFS keine Defragmentierungs-Software an die Meta Files heran. Die einzige Möglichkeit diese zu defragmentieren scheint aus heutiger Sicht das Imaging des ganzen Laufwerks mit einer Software wie Norton Ghost oder Winimage zu sein, die ihre Images auf Dateibasis erstellen. Die nachstehenden Bilder zeigen links eine Disk die mehrmals mit Diskeeper Version 3 defragmentiert wurde! Rechts das Resultat nach einem Image und dem zurück spielen mit Ghost Version 5.1c SP1. Ghost scheint die weitaus effektivere Defragmentierung zu sein, hat aber offensichtlich auch einen wichtigen Nachteil: Der freigehaltene Platz für die MFT ist verschwunden. Daraus folgt, dass wenn geklont wird, dieses regelmässig wiederholt werden sollte. Dieses Verhalten von Ghost wird noch näher untersucht.

 Eine andere Lösung wäre ein reguläres Backup mit dem Formatieren des Laufwerks!

 

Verzeichnisse

Offenbar werden unter NTFS Verzeichnisse ähnlich wie Files abgelegt. Das beeinflusst die Leistung von NTFS ebenfalls. Wie auf den obigen Bildern ersichtlich, sind die Verzeichnis-Einträge schnell über die ganze Disk verteilt. Diese Problematik scheint momentan nur mit Diskeeper in der Version 4 (wird noch untersucht) in den Griff zu kriegen sein. Unter: winntmag wird eine Lösung mit kopieren vorgeschlagen, dies scheint aber sehr umständlich zu sein.

 

NTFS Logfile

In der Datei $LOGFILE, die je nach Partitiongrösse 2 – 4 MB gross ist, werden alle Änderungen an Dateien und Verzeichnissen laufend protokolliert. Die Einträge in dieser Datei enthalten sogenannte redo und undo Information. Wenn ein Absturz passiert oder sonst eine Inkonsistenz auftaucht, benutzt das chkdsk Programm diese Datei um einen definierten Zustand herbei zu führen. Da WindowsNT mit einem Schreibcache arbeitet ist diese Information sehr wichtig.