HAMMER

hochverfügbares Dateisystem von DragonflyBSD

HAMMER ist ein hochverfügbares 64-bit Dateisystem, das von Matthew Dillon für DragonFly BSD entwickelt wurde und wird. Es ist ein Copy-On-Write-Dateisystem, das auf B⁺-Bäumen basiert. Wesentliche Funktionen sind Prüfsummen zur Fehlererkennung und Behebung, Versionsverwaltung auf Dateisystemebene (Verlaufsaufzeichnung), Schnappschüsse (auch NFS-exportierbar), master-multislave Replikationen (Redundanz) und fsck-freies mounten. HAMMER unterstützt außerdem die Deduplikation von Datenblöcken, was bedeutet, dass identische Datenblöcke nur jeweils einmal auf den Datenträger geschrieben werden.[1]

HAMMER
Hersteller Matthew Dillon
Erstveröffentlichung Juli 2008 (DragonFly BSD 2.0)
Technische Umsetzung
Verzeichnisse B⁺-Baum
Maximalwerte
Größe des Dateisystems 1 EiB (256 × 4096 TiB Laufwerke)[1]
Eigenschaften
Dateirechte-Verwaltung UNIX
Transparente Komprimierung ja
Transparente Verschlüsselung nein
Unterstützende Betriebssysteme DragonFly BSD

Funktionen

Bearbeiten

Das HAMMER-Dateisystem verfügt über eine feine und eine grobe Verlaufsaufzeichnung. Die grobe Verlaufsaufzeichnung besteht aus jederzeit erstellbaren Schnappschüssen, welche beliebig lange gespeichert werden können. Die feine Verlaufsaufzeichnung umfasst standardmäßig die Änderungen der letzten 30–60 Sekunden, diese Dauer ist aber konfigurierbar. Durch eine kurze Überprüfung der feinen Verlaufsaufzeichnung ist es selbst nach einem Systemabsturz möglich, das Dateisystem ohne eine vollständige Überprüfung der Daten wieder in Betrieb zu nehmen.[2]

Auf einem HAMMER-Dateisystem können bis zu 65,536 master (schreib- und lesbar) und slave (nur lesbar) Pseudo-Dateisysteme (PFSs) mit jeweils unabhängigen Konfigurationen und Inode-Nummerierung erzeugt werden. Jedes PFS (sowohl master als slave) lässt sich lokal oder über das Netzwerk auf mehrere Slaves spiegeln.[3]

Die maximale Größe für ein Dateisystem liegt bei 1 EiB, zusammengesetzt aus 256 Datenträgern von je 4 PiB (=4096 TiB) Speicherkapazität. Mittels CRC-Prüfsummen wird die Integrität von Daten und Metadaten überprüft.[3] Die Prüfsummen werden auch bei der Daten-Deduplikation verwendet, wo im Zweifelsfall aber auch auf bitweises Vergleichen von Datenblöcken zurückgegriffen wird.[4]

Einschränkungen

Bearbeiten

Regelmäßige Wartungsarbeiten sind notwendig, um Speicher nach dem Löschen von Dateien wieder freizugeben und die Festplatte zu defragmentieren, diese können aber nebenläufig zu anderen Operationen auf dem Dateisystem ausgeführt werden. Standardmäßig führt unter DragonFly BSD ein Cron job die notwendigen Aufgaben täglich aus. HAMMER unterstützt weiter keine multi-master Konfigurationen.[2][3]

HAMMER bietet, wie viele andere Dateisysteme, aber im Unterschied zu beispielsweise ZFS, keine native Verschlüsslung. DragonFly BSD bedient sich für den Massenspeicher, wie für GNU/Linux üblich, der Verschlüsslung mit LUKS.

Entwicklung

Bearbeiten

Das Dateisystem wurde primär für DragonFly BSD als funktionsstarkes Analogon zu ZFS entwickelt, welches damals stark trotz CDDL an Popularität gewann. Es wurden in der Vergangenheit verschiedene Optimierungen der Leistung unternommen.[5]

Die zweite Version von HAMMER, die Nachfolge mit der Bezeichnung HAMMER2, wird seit DragonFly BSD 5.2 (April 2018) als standardmäßiges Dateisystem empfohlen.[6] Dennoch kann HAMMER, die vorherige Version, noch verwendet werden.

Die Arbeit von Matthew Dillon für diese nachfolgende Version zog sich über viele Jahre, als eines der Projekte für das Betriebssystem DragonFly BSD. Sie sollte bereits 2013 verfügbar sein.[7] Im Rahmen des Google Summer of Code 2013 implementierte Daniel Flores transparente Kompression für HAMMER2 mittels LZ4 und zlib.[8] Seit DragonFly BSD 4.10 konnte HAMMER2 optional genutzt werden.[9]

Bearbeiten

Einzelnachweise

Bearbeiten
  1. a b hammer(5). DragonFly File Formats Manual. Abgerufen am 26. August 2016.
  2. a b HAMMER. Abgerufen am 26. August 2016 (DragonFly BSD Informationsseite).
  3. a b c Siju George: BSD Magazine. (PDF; 19,1 MB) Working with Hammer File System and PFSes. S. 18–23, archiviert vom Original am 27. Mai 2014; abgerufen am 26. August 2016.
  4. hammer(8) – DragonFly System Maintenance and Operation Commands Manual.
  5. Matthew Dillon: git: HAMMER VFS - Add code to reduce frontend vs flusher locking conflicts. 22. Juli 2011, abgerufen am 28. August 2016 (Mail Archiv).
  6. https://www.dragonflybsd.org/release52/
  7. DragonFly users list. DESIGN document for HAMMER2. 8. Februar 2012, abgerufen am 26. August 2016 (Mail Archiv).
  8. Block compression feature in HAMMER2.
  9. https://www.phoronix.com/scan.php?page=article&item=dragonfly-bsd-hammer2&num=1