Unix Dateisystem

Das Dateisystem von Unix (UFS) ist ein Dateisystem, das von vielen Unix und Unix-like Betriebssysteme verwendet ist. Es wird auch den Berkeley Schnelles Dateisystem, der BSD Schnelles Dateisystem oder FFS genannt. Es ist ein entfernter Nachkomme des ursprünglichen filesystem, der durch die Version 7 Unix verwendet ist.

Design

Ein UFS Volumen wird aus den folgenden Teilen zusammengesetzt:

  • einige Blöcke am Anfang der Teilung haben für Stiefelblöcke vorbestellt (der getrennt vom filesystem initialisiert werden muss)
  • ein Superblock, eine Zauberzahl enthaltend, die das als ein UFS filesystem und einige andere Lebenszahlen identifiziert, die die Geometrie und Statistik dieses filesystem und stimmende Verhaltensrahmen beschreiben
  • eine Sammlung von Zylindergruppen. Jede Zylindergruppe hat die folgenden Bestandteile:
  • eine Aushilfskopie des Superblocks
  • ein Zylindergruppenkopfball, mit der Statistik, den freien Listen, usw., über diese Zylindergruppe, die denjenigen im Superblock ähnlich
ist
  • mehrere inodes, jeder, Datei enthaltend, schreiben zu
  • mehrere Daten blockieren

Inodes werden folgend gezählt, an 0 anfangend. Die ersten zwei inodes werden aus historischen Gründen vorbestellt, die vom inode für das Wurzelverzeichnis gefolgt sind, das immer inode 2 ist.

Verzeichnisdateien enthalten nur die Liste von Dateinamen im Verzeichnis und dem mit jeder Datei vereinigten inode. Die ganze Datei metadata wird im inode behalten.

Geschichte und Evolution

Auf frühe Versionen von Unix filesystems wurde einfach als FS verwiesen. FS hat nur den Stiefelblock, Superblock, einen Klumpen von inodes und die Datenblöcke eingeschlossen. Das hat gut für die kleinen Platten gearbeitet, für die frühe Unixes entworfen wurden, aber weil Technologie vorgebracht und Platten größer gewachsen ist, der Kopf hin und her zwischen dem Klumpen von inodes und den Datenblöcken bewegend, die sie auf die verursachte Dresche verwiesen haben. Marshall Kirk McKusick, dann ein Student im Aufbaustudium von Berkeley, hat den BSD 4.2's FFS (Schnelles Dateisystem) optimiert, indem er Zylindergruppen erfunden hat, die die Platte in kleinere Klötze mit jeder Gruppe zerbrechen, die seinen eigenen inodes und Datenblöcke hat.

Die Absicht von BSD FFS ist zu versuchen, vereinigte Datenblöcke und metadata in derselben Zylindergruppe zu lokalisieren; und, ideal, der ganze Inhalt eines Verzeichnisses (beide Daten und metadata für alle Dateien) in derselben oder nahe gelegenen Zylindergruppe, so verursachte Zersplitterung durch das Zerstreuen eines Inhalts eines Verzeichnisses über eine ganze Platte reduzierend.

Einige der Leistungsrahmen im Superblock haben Zahl von Spuren und Sektoren, Plattenfolge-Geschwindigkeit, Hauptgeschwindigkeit und Anordnung der Sektoren zwischen Spuren eingeschlossen. In einem völlig optimierten System konnte der Kopf zwischen nahen Spuren bewegt werden, um gestreute Sektoren davon zu lesen, Spuren abwechseln zu lassen, während man auf die Platte gewartet hat, um ringsherum zu spinnen.

Da Platten größer und größer gewachsen sind, ist Sektor-Niveau-Optimierung veraltet geworden (besonders mit Platten, die geradlinigen Sektor numerierende und variable Sektoren pro Spur verwendet haben). Mit größeren Platten und größeren Dateien, gebrochen liest ist mehr von einem Problem geworden. Um das zu bekämpfen, hat BSD ursprünglich die Filesystem-Block-Größe von einem Sektor bis 1K in 4.0BSD vergrößert; und, in FFS, hat die Filesystem-Block-Größe von 1K bis 8K vergrößert. Das hat mehrere Effekten. Die Chancen Sektoren einer Datei, die aneinander grenzend sind, sind viel größer. Der Betrag oben, um die Blöcke der Datei zu verzeichnen, wird reduziert, während die Zahl von durch jede gegebene Zahl von Blöcken wiederpräsentablen Bytes gesteigert wird.

Größere Plattengrößen sind auch möglich, da die maximale Zahl von Blöcken durch eine feste Blocknummer der Bit-Breite beschränkt wird. Jedoch, mit größeren Block-Größen, werden Platten mit vielen kleinen Dateien Raum vergeuden, da jede Datei mindestens einen Block besetzen muss. Wegen dessen hat BSD Block-Niveau-Zersplitterung, auch genannt Block-Subzuteilung, das Schwanz-Mischen oder die Schwanz-Verpackung hinzugefügt, wo der letzte teilweise Datenblock von mehreren Dateien in einem einzelnen "Bruchstück"-Block statt vielfacher größtenteils leerer Blöcke versorgt werden kann.

Durchführungen

Verkäufer von einigen Eigentumssystemen von Unix, wie SunOS/Solaris, System V Ausgabe 4, HP-UX, und Tru64 UNIX, haben UFS angenommen. Die meisten von ihnen haben UFS an ihren eigenen Gebrauch angepasst, Eigentumserweiterungen hinzufügend, die durch die Versionen anderer Verkäufer von Unix nicht anerkannt werden dürfen. Überraschend haben viele fortgesetzt, die ursprüngliche Block-Größe und Datenfeldbreiten als der ursprüngliche UFS zu verwenden, so bleibt etwas Grad (der gelesenen) Vereinbarkeit über Plattformen. Die Vereinbarkeit zwischen Durchführungen ist als Ganzes am besten fleckig und sollte vor dem Verwenden davon über vielfache Plattformen erforscht werden, wo geteilte Daten eine primäre Absicht sind.

Bezüglich Solaris 7 haben Sonne-Mikrosysteme UFS-Protokollierung eingeschlossen, die filesystem journaling zu UFS gebracht hat. Solaris UFS hat auch Erweiterungen für große Dateien und große Platten und andere Eigenschaften.

In 4.4BSD und BSD Unix Systeme ist darauf, wie FreeBSD, NetBSD, OpenBSD zurückzuführen gewesen, und DragonFlyBSD, die Durchführung von UFS1 und UFS2 werden in zwei Schichten - eine obere Schicht gespalten, die die Verzeichnisstruktur zur Verfügung stellt und metadata (Erlaubnis, Eigentumsrecht, usw.) in der inode Struktur und den niedrigeren Schichten unterstützt, die Datenbehälter durchgeführt als inodes zur Verfügung stellen. Das wurde getan, um sowohl den traditionellen FFS als auch den LFS Klotz-strukturiertes Dateisystem mit dem geteilten Code für allgemeine Funktionen zu unterstützen. Die obere Schicht wird "UFS" genannt, und die niedrigeren Schichten werden "FFS" und "LFS" genannt. In einigen jener Systeme wird der Begriff "FFS" für die Kombination des FFS niedrigere Schicht und die UFS obere Schicht gebraucht, und der Begriff "LFS" wird für die Kombination des LFS niedrigere Schicht und die UFS obere Schicht gebraucht.

Kirk McKusick hat Block-Wiederzuteilung, eine Technik durchgeführt, die die Blöcke im Dateisystem wiederbestellt, kurz bevor das Schreiben getan wird, um Zersplitterung und Kontrolldateisystemaltern zu reduzieren. Er hat auch weiche Aktualisierungen, ein Mechanismus durchgeführt, der die Dateisystemkonsistenz aufrechterhält, ohne die Leistung in der Weise zu beschränken, wie die traditionelle synchronisierte Weise getan hat. Das hat die Nebenwirkung, die Voraussetzung des Dateisystems zu reduzieren, das nach einem Unfall oder Macht-Misserfolg überprüft. Um die restlichen Probleme nach einem Misserfolg zu überwinden, wurde ein Hintergrund fsck Dienstprogramm eingeführt.

In UFS2 haben Kirk McKusick und Poul-Henning Kamp FreeBSD FFS und UFS Schichten erweitert, um 64-Bit-Block-Zeigestöcke hinzuzufügen (Volumina erlaubend, zu 8 zettabytes aufzuwachsen), variable-große Blöcke (ähnlich Ausmaßen), erweiterte Fahne-Felder, zusätzliche 'Birthtime'-Marken, erweiterte Attribut-Unterstützung und POSIX1.e ACLs. UFS2 ist der Verzug UFS Version geworden, die mit FreeBSD 5.0 anfängt. FreeBSD hat auch weiche Aktualisierungen und die Fähigkeit eingeführt, Dateisystemschnellschüsse sowohl für UFS1 als auch für UFS2 zu machen. Diese sind zu NetBSD seitdem getragen worden, aber schließlich weiche Aktualisierungen (hat weiche Abhängigkeiten in NetBSD genannt), wurden von NetBSD 6.0 für das weniger komplizierte Dateisystem journaling Mechanismus genannt WAPBL entfernt (auch verwiesen als loggend), der zu FFS in NetBSD 5.0 hinzugefügt wurde. OpenBSD hat weiche Aktualisierungen seit der Version 2.9 http://www.openbsd.org/29.html unterstützt und hat UFS2-Unterstützung (kein ACLs) seit der Version 4.2 http://www.openbsd.org/42.html gehabt. Seit FreeBSD 7.0 unterstützt UFS auch filesystem journaling das Verwenden des gjournal GEOM Versorger. FreeBSD 9.0 fügt Unterstützung für leichten journaling oben auf softupdates (SU+J) hinzu, der außerordentlich abnimmt und Bedürfnis nach dem Hintergrund fsck, und NFS-artigen ACLs standardmäßig verwendet.

Linux schließt eine UFS Durchführung für die binäre Vereinbarkeit am gelesenen Niveau mit anderem Unixes ein, aber da es keine Standarddurchführung für die Verkäufer-Erweiterungen auf UFS gibt, hat Linux volle Unterstützung nicht, um UFS zu schreiben. Der Eingeborene Linux ext2 filesystem wurde durch UFS1 begeistert, aber unterstützt Bruchstücke nicht, und es gibt keine Pläne, softupdates durchzuführen. (In einigen 4.4BSD-abgeleiteten Systemen kann die UFS Schicht eine ext2 Schicht als eine Behälterschicht verwenden, wie sie FFS und LFS verwenden kann.)

NeXTStep, der BSD-abgeleitet wurde, hat auch eine Version von UFS verwendet. In Mac OS X des Apfels ist es als eine Alternative zu HFS +, ihr Eigentumsfilesystem verfügbar. Jedoch, bezüglich Mac OS X v10.5, ist es nicht mehr möglich, Mac OS X "Leopard" auf einem UFS-formatierten Volumen zu installieren. Außerdem kann man nicht ältere Versionen von Mac OS X befördern, der auf UFS-formatierten Volumina zum Leoparden installiert ist; Aufrüstung verlangt Wiederformatierung des Anlauf-Volumens. Zurzeit gibt es eine 4-GB-Dateigrenze für Platten formatiert als UFS in Mac OSX.

PlayStation 3 Spielkonsole verwendet UFS2 auf HDD. PlayStation 2 HDD hat UFS ebenso verwendet.

Siehe auch

  • Vergleich von Dateisystemen

Referenzen

  • Der Linux Dokumentationsprojektfilesystems HOWTO: FFS. Bemerken Sie, dass der Unterschied, den das zwischen FFS und UFS macht, falsch ist; beide Begriffe werden zurzeit gebraucht und sind in der Vergangenheit verwendet worden.
  • Kleine UFS2 häufig gestellte Fragen: Wie ist der Unterschied zwischen UFS und FFS? Bemerken Sie, dass das die Beziehung zwischen FFS und UFS umgekehrt bekommt; sieh den "Lokalen Filesystems" Kapitel Des Designs und Durchführung 4.4BSD Betriebssystem, das sich auf die obere Schicht als UFS und der "Lokale Filestores" Kapitel bezieht, das sich auf die niedrigere Schicht als FFS bezieht.
  • Die Sonne Solaris UFS Durchführungskapitel von Solaris Internals: Solaris 10 und Kernarchitektur von OpenSolaris, das Zweite Ausgabe-Buch von Richard McDougall, internationale Standardbuchnummer von Jim Mauro 0-13-148209-2

Außenverbindungen

http://www.freebsd.org/projects/bigdisk/index.html

Lilin / Punkrock in Drublic
Impressum & Datenschutz