NTFS

proprietäres Dateisystem von Microsoft
Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 21. August 2006 um 23:46 Uhr durch MrBurns (Diskussion | Beiträge) (Nachteile: Für ein dAteisystem ist die Größe der Partition wichtig, nicht die kapazität der gesamten Festplatte.). Sie kann sich erheblich von der aktuellen Version unterscheiden.

NTFS steht für New Technology File System und ist das Dateisystem von Windows NT, einschließlich seiner Nachfolger Windows 2000, Windows XP, Windows Server 2003 und Windows Vista. NTFS erbte viele Konzepte von IBMs Dateisystem HPFS, das in dem zusammen mit Microsoft entwickelten Betriebssystem OS/2 verwendet wurde.

Im Vergleich zu FAT bietet NTFS u.a. einen gezielten Zugriffsschutz auf Dateiebene durch vollständige Unterstützung von Zugriffskontrolllisten.

Aufbau

Aus Sicht des Dateisystems ist alles Teil einer Datei, auch die Metadaten des Systems. Die Hauptdatei ist die MFT (Master File Table). In dieser Datei befinden sich die Einträge, welche Sektoren zu welcher Datei gehören, die Zugriffsberechtigungen und die Attribute. Jede Eigenschaft einer Datei ist unter NTFS ein Attribut, auch der eigentliche Dateiinhalt.

Sehr kleine Dateien (bis ca. 1,4 KiB) werden in der MFT direkt abgespeichert. Größere Dateien werden dann als Attribut in einem Datenlauf gespeichert.

Beim Formatieren der Festplatte wird für die MFT eine feste Größe vorgegeben. Wenn diese aufgebraucht ist, beginnt das Dateisystem NTFS, freien Speicher vom Datenträger zu benutzen, wodurch es zu einer Fragmentierung der MFT kommen kann.

Beim Speichern einer Datei wird ein Journal geführt. Das bedeutet dass eine geplante Aktion zuerst in das Journal geschrieben wird, dann wird der eigentliche Schreibzugriff auf die Datei ausgeführt, und abschließend wird das Journal aktualisiert. Wenn ein Schreibzugriff nicht vollständig beendet wird, zum Beispiel wegen eines Stromausfalls, muss das Dateisystem nur die Änderungen im Journal zurücknehmen und befindet sich anschließend wieder in einem konsistenten Zustand.

NTFS-Versionen

  • NTFS 1.X - Windows NT 3.51
  • NTFS 2.X - Windows NT 4.0
  • NTFS 3.0 - Windows 2000
  • NTFS 3.1 - Windows XP

Oft wird fälschlicherweise von NTFS-Version 5, bzw 5.1 gesprochen, wobei die 5 nicht die Version, sondern die Zugehörigkeit zu Windows 2000 (NT 5) bzw. zu Windows XP (NT 5.1) signalisiert. Aktuell ist somit NTFS 3.1.

Vorteile

  • effiziente Speichernutzung bei Partitionen über 400 MiB
  • Metadaten-Journaling: automatische Fehlerkorrektur des Dateisystems (aber nicht der Daten).
  • lange Dateinamen: Dateinamen können im Gegensatz zu FAT16 bis zu 256 Zeichen lang sein und aus fast beliebigen Unicode-Zeichen bestehen
  • eine maximale Länge des kompletten Pfadnamens von ca. 32.000 Zeichen
  • Indexierung - die Dateien aller Verzeichnisse liegen alphabetisch geordnet vor, sodass bei Zugriff einer Datei in einem Verzeichnis mit sehr vielen Dateien (z.B. das SYSTEM32-Verzeichnis) diese wesentlich schneller gefunden werden kann, da eine Binäre Suche durchgeführt werden kann.
  • hohe Datensicherheit durch Vergabe von Zugriffsrechten auf Betriebssystem-Ebene
  • Mechanismen zur fehlertoleranten Datenspeicherung, z.B. „Festplattenspiegelung“
  • Maximale Dateigröße von theoretisch 16 Exbibyte
  • Verwendung von Datenträgern mit dynamischer Größe (ohne feste Partitionstabelle)
  • schnelle und effiziente Speicherung von kleinen Dateien (ab Windows NT 3.51 werden standardmäßig 4 KiB große Cluster verwendet)
  • Speicherung von alternativen Datenströmen
  • transparente Komprimierung von Dateien (nur bei unverschlüsselten Dateien und Clustergrößen bis 4KiB verfügbar)

NTFS 3.X

  • Daten- und Datenträgerverschlüsselung mit EFS (nicht in der XP Home Edition und nur bei unkomprimierten Daten)
  • Kontingente (auch: Disk Quota), um den verwendbaren Festplattenplatz für einzelne Nutzer zu beschränken
  • Analysepunkte (engl. Reparse Point) zur Verknüpfung von Aktionen/Funktionen mit Dateien und Verzeichnissen, z.B. für
    • Hardlinks: Daten können von bis zu 1023 Dateinamen referenziert werden (eine Datei, viele Namen).
    • NTFS-Junction-Points bzw. symbolische Links, um Verzeichnisse, Partitionen oder Laufwerke in andere Verzeichnisse einzuhängen (siehe Symlinks bei Unix/Linux). NTFS-Junction-Points können jedoch nur auf lokale Ressourcen verweisen, nicht auf Freigaben anderer Rechner – das ist nur mit DFS-Junction-Points möglich.
    • Remote Storage Server
  • Für Dateien mit vielen Leerinhalten werden, wenn sie als Sparse File gekennzeichnet sind, nur die bereits geschriebenen Abschnitte gespeichert.

Nachteile

  • Proprietäres Dateisystem, d.h. die genaue Funktionsweise ist ein Betriebsgeheimnis von Microsoft
  • Nur bedingte Kompatibilität zu DOS & Linux sowie komplette Inkompatibilität zu Windows 9x
  • Aufgrund des Sicherheitskonzeptes von NTFS (Sichern/Protokollieren) ist NTFS beim Schreiben auf Partitionen unter 120 GB etwas langsamer als die FAT32-Dateisysteme. Wie stark sich das ganze auswirkt, ist abhängig vom IDE-Controller und der Festplattenarchitektur.
  • NTFS erlaubt Alternative Datenströme (ADS), in denen versteckt Dateien abgelegt werden können, was eine mögliche Gefahrenquelle darstellt.
  • NTFS versucht standardmäßig, Dateien am Stück zu speichern, trotzdem kann es mit vielen kleinen Dateien zu einer Fragmentierung der MFT kommen. Microsoft liefert ein Defragmentierungsprogramm mit, das aber keine komplette Defragmentierung schafft. Produkte von Drittherstellern können auch stark fragmentierte NTFS-Partitionen sicher defragmentieren (siehe Defragmentierungsprogramm für NTFS, c't 21/05).
  • Die kleineren Clustergrößen machen das Dateisystem langsamer. Allerdings kann dies behoben werden, indem man über die Befehlszeile formatiert und größere Clustergrößen (bis zu 64 KiB) verwendet. Allerdings funktioniert die implementierte Komprimierung von Dateien nur bei Clustergrößen bis 4 KiB und die interne Fragmentierung steigt deutlich, was zu Speicherplatzverschwendung führt.
  • Die MFT ist eine lineare Struktur, was Zugriffe verhältnismäßig ineffizient macht.
  • Der freie Speicherplatz wird in Bitmaps verwaltet, was zu erhöhtem Zeitaufwand beim Suchen freier Blöcke führen kann.

NTFS 3.X

Standard-Clustergrößen

Laufwerksgröße  Clustergröße
512 MiB oder weniger 512 Bytes
513 MiB - 1024 MiB 1024 Bytes
1025 MiB - 2048 MiB 2048 Bytes
2049 MiB und mehr 4096 Bytes

Zugriff mit Linux

Kernel-Treiber

Der Linux-Kernel kann seit Version 2.2.0 NTFS-Laufwerke mounten, allerdings ohne Schreib-Unterstützung. In Linux 2.4 ist ein NTFS-Treiber enthalten, der auch schreiben, dabei allerdings ernsthafte Schäden am Dateisystem anrichten kann. Für die Kernel-Version 2.6 wurde der NTFS-Treiber komplett neu geschrieben (entwickelt von Anton Altapamarkov [1], Cambridge Universität, und Richard Russon) und bietet eine überarbeitete Unterstützung für Schreibzugriffe.

Ab Kernel 2.6.7 konnten nur schon existierende und nicht schreibgeschützte Dateien sicher geändert oder überschrieben werden, wenn die Dateigröße sich dabei nicht ändert. Das Anlegen oder Löschen von Dateien oder Verzeichnissen wird noch nicht unterstützt.

Seit Kernel 2.6.12 wird die NTFS-Schreibunterstützung nicht mehr als experimentell bezeichnet.

Ab Kernel 2.6.15 ist auch das Verändern von Dateien mit Änderung der Dateigröße möglich. Anlegen und Löschen von Dateien werden vom NTFS-Kerneltreiber noch nicht unterstützt.

User-Mode-Treiber

Der Entwicklung des NTFS-Kernel-Treibers voraus ist der User-Mode-Treiber, mit dem man Dateien und Verzeichnisse sowohl erstellen als auch löschen kann. Manche Schreiboperationen können zwar fehlschlagen, jedoch kommt es dabei zu keiner Inkonsistenz des Dateisystems. Dieser Treiber basiert auf FUSE und ist somit auch für andere Betriebssysteme mit FUSE-Unterstützung verfügbar.

Eine neue Version des User-Mode-Treibers unter dem vorläufigen Namen ntfs-3g unterstützt nun vollständige Schreib- und Lesezugriffe. Ausnahmen bilden der Zugriff auf verschlüsselte Dateien, das Erstellen komprimierter Dateien sowie das Verändern von Zugriffs- und Eigentumsrechten. Die Zusammenführung von ntfs-3g in den offiziellen User-Mode-Treiber ist vorgesehen.[1]

Microsoft NTFS-Treiber

Derzeit existiert auch ein freies Programmpaket namens Captive, das die Originaltreiber von Windows (XP/2003) einsetzt und ihnen eine Windows-Umgebung simuliert. Dieser Treiber ist folglich hochkompatibel, aber auch langsamer als ein nativer Treiber. Für den legalen Einsatz der Originaltreiber ist eine Windows-Lizenz erforderlich.

Paragon NTFS-Treiber

Weiterhin gibt es ein kommerzielles Produkt NTFS for Linux 3 von Paragon, das im Linux-Magazin 11/04 vorgestellt wurde. Es kann jedoch das Dateisystem beschädigen, insbesondere bei NTFS 3.x.

Zugriff mit DOS

Für DOS-Systeme (z.B. Bootdisketten) kann man beschränkten NTFS-Zugriff erlangen. Das deutsche Unternehmen Avira bietet mit NTFS4DOS Personal einen für die private Nutzung kostenfreien NTFS-Treiber mit vollem Lese- und Schreibzugriff an. Für den kommerziellen Einsatz steht NTFS4DOS Professional eine kostenpflichtige Version (€20,00) zur Verfügung.

Ebenfalls erhältlich ist der Treiber NTFSDOS der Firma Sysinternals, der in der kostenlosen Version ebenfalls nur lesen kann.

weiterführende Literatur

Software

Quellen

  1. ntfs-3g: open source read-write driver auf der linux-ntfs-dev-Mailingliste