Dateisystem

Fossil

Das erstmalig in 2002 eingeführte Dateisystem Fossil ist seit 2003 das Standard-Dateisystem in Plan9 und dient als Ersatz für die vormals verwendeten Dateisysteme fs und kfs, die für die Speicherung nach dem WORM Prinzip ausgelegt waren. Da heutzutage Optical-Disks und Tapes eher die Ausnahme geworden sind, musste eine neues Dateisystem entwickelt werden, was WORM auf Festplatten emuliert. Fossil läuft als Userspace-Dämon und spricht natürlich auch 9P. Eine der wichtigsten Funktionen ist die Snapshot-Funktion. Es ist möglich per Kommando oder aber auch im Intervall automatisch Snapshots des aktuellen Dateisystems auf die Platte zu schreiben. Sobald die Festplatte voll ist, werden alte Snapshots wieder gelöscht oder können permanent mit Venti gespeichert werden. Es ist jedem Benutzer möglich in der Weise /snapshot/yyyy/mmdd/hhmm auf Snapshots zuzugreifen. Privilegien werden mit gesichert, so dass jeder Benutzer auch nur die Daten einsehen kann, die er auch zu diesem Zeitpunkt einsehen durfte. Natürlich ist auch dieser Namensraum mit bind konfigurierbar, so dass man z.B. mit /versions/stable auf ein bestimmtes Snapshot zugreifen kann.

Venti

Venit ist ein Network-Storage-System das mit Fossil eingeführt wurde und darauf aufsetzt. Es dient zum permanenten Speichern von Datenblöcken. Die wichtigste Kernfunktion von Venti ist, das Adressen zu Datenblöcken aus einem 160-Bit-SHA1 Hash, genannt .score. bestehen. Dieser Fakt bringt einige Vorteile mit sich. Der score impliziert eine write-once policy. Datenblöcke werden nur ein einziges mal geschrieben, gibt es die Adresse, gibt es die Daten. Dazu kommt, das Klienten selbst die Korrektheit von Datenblöcken überprüfen können, indem sie den score von einem angeforderten Block generieren. Somit kann man einen fehlerhaften Block sofort erkennen und manipulierte Datenblöcke gibt es somit auch nicht. Zur weiteren Sicherheit trägt auch bei, das Datenblöcke nur gelesen werden können, wenn der zugehörige score bekannt ist. Datenblöcke werden im System immer nur hinzugefügt, es gibt kein Löschen oder Überschreiben, somit auch keine Fragmentierung auf der Festplatte. Das einzige Problem das besteht, ist, das ein Benutzer die Festplatte füllen kann. Auf physikalischer Ebene werden Datenblöcke meist auf RAID5 Verbünde gesichert, so genannte data logs. Diese data logs werden wiederum in arenas aufgeteilt, die eine feste Größe haben. Dadurch ist es möglich, volle arenas z.B. auf eine CD oder DVD zu brennen, um sie hinterher wieder ins Dateisystem einzuhängen. Für die Zuordnung von Datenblöcken und scores benötigt man noch einen index. Dieser index besteht meist aus vielen kleinen SCSI-Disks, da für diese Operation sehr niedrige Zugriffszeiten gewährleistet werden müssen.