Ausprobiert: HAMMER2-Dateisystem auf NetBSD installieren

NetBSD, das BSD, das sogar auf einem Toaster läuft, bietet in Zukunft als einziges Betriebssystem zwei der modernsten Dateisysteme: ZFS und HAMMER2.

In Pocket speichern vorlesen Druckansicht 25 Kommentare lesen
Lesezeit: 4 Min.
Von
  • Michael Plura
Inhaltsverzeichnis

Mit dem 64bittigen HAMMER2 aus Dragonfly BSD erhält NetBSD das speziell für einen Cluster-Betrieb entwickelte Dateisystem von Matthew Dillon. Bereits seit Version 8 gibt es in NetBSD eine Portierung des ursprünglich von Sun Microsystems entwickelten ZFS auf Basis des FreeBSD-Codes. ZFS läuft unter NetBSD 9.3 recht stabil. Das 128bittige ZFS ist auf große Datenmengen ausgelegt und bietet einen prüfsummenbasierten Schutz vor Datenverlusten, beispielsweise durch Kippen einzelner Bits auf Datenträgern.

HAMMER2 aus Dragonfly BSD ist der Nachfolger des HAMMER-Dateisystems, das für ein verbessertes Clustering von Grund auf neu entwickelt wurde. HAMMER2 unterstützt Online- und Batch-Deduplizierung, Schnappschüsse, Indizierung von Verzeichniseinträgen, mehrere einhängbare Root-Dateisysteme, einhängbare Schnappschüsse, einen – nach Projektangaben – geringen Speicherbedarf, native Komprimierung, native Verschlüsselung, Prüfsummen für Daten und Metadaten sowie eine Synchronisierung mit anderen Dateisystemen oder Knoten.

NetBSD nutzt normalerweise und vor allem auf den vielen schwachbrüstigen Plattformen BSD-typisch das FFS-Dateisystem (Fast File System). Das Schnell in FFS bezieht sich auf das vorher verwendete UFS (UNIX File System), das zwar einfach und elegant, aber auch langsam war – die ohnehin geringe mögliche Bandbreite von Festplatten aus den frühen 80ern wurde nur zu wenigen Prozent genutzt. FFS war ein großer Schritt nach vorne und wurde primär von Marshall Kirk McKusick entwickelt. Es ist einfach, fehlerfrei und noch heute das Standard-Dateisystem für BSDs.

In seinem GitHub-Repository beschreibt Tomohiro Kusumi die Installation von HAMMER2. Für ein Projekt dieser Größenordnung und Komplexität wirken die Voraussetzungen und die Build-Instruktionen auf den ersten Blick überaus einfach: Man benötigt ein aktuelles NetBSD (derzeit Version 9.3) mit installiertem Quellcode ("Fetch and unpack pkgsrc" bei der Installation), natürlich Kusumis GitHub-Repo – und startet make.

Ein früher read-only-Port des HAMMER2-Dateisystems unter NetBSD 9.3.

In der Praxis klemmt es an einigen Stellen. Bei einer frischen NetBSD-9.3-Installation benötigt man git, was zusätzlich die Root-Zertifikate für OpenSSL voraussetzt, um den Fehler "SSL certificate problem: unable to get local issuer certificate" zu verhindern (als root):

sudo pkgin install git mozilla-rootcerts-openssl

Anschließend muss der reguläre Benutzer das SSL-Backend auf openssl umstellen:

git config --global http.sslBackend openssl

Jetzt lässt sich das Repository von Kusumi per hinzufügen:

git clone https://github.com/kusumi/netbsd_hammer2

Zusätzlich wird der komplette Quellcode von NetBSD benötigt:

sudo mkdir /usr/src
sudo chown <Benutzername> /usr/src
sudo mkdir /usr/xsrc
sudo chwon <Benutzername> /usr/xsrc

Nun holt der Benutzer den Quellcode von NetBSD…

ftp -i ftp://ftp.NetBSD.org/pub/NetBSD/NetBSD-9.3/source/sets/
   ftp> mget *.tgz
   ftp> quit

und packt ihn aus:

for file in *.tgz
   do
   tar -xzf $file -C /
   done

Wechselt man nun wie von Kusumi angegeben ins Verzeichnis netbsd_hammer2 und startet make, gibt es einen Fehler beim Linken von xxhash. Den kann man beheben, indem man zuerst die beiden Dateien xxhash.c und xxhash.h aus dem Verzeichnis netbsd_hammer2/src/sys/fs/hammer2/xxhash/ um eine Ebene nach oben kopiert

 cd ~netbsd_hammer2/src/sys/fs/hammer2
 cp xxhash/xxhash.* ..

und dort im Makefile in der Zeile SRCS=... den Pfad-Anteil vor xxhash/xxhash.c entfernt:

SRCS= hammer2_lz4.c hammer2_subr.c hammer2_vfsops.c xxhash.c icrc32.c

Ein

cd ~/netbsd_hammer2
make

läuft nun sauber durch. Anschließend kann HAMMER2 per

sudo mkdir /usr/local
sudo sh ./script/install.sh

installiert werden, sobald das Kernel-Modul hammer2.kmod geladen wurde:

modload src/sys/fs/hammer2/hammer2.kmod
modstat hammer2

Der frühe Port von HAMMER2 läuft unter NetBSD 9.3 oder besser -CURRENT nur im read-only-Modus, ist also allenfalls für Tests oder für die Entwicklung zu gebrauchen. Da der Fokus von NetBSD eigentlich auf der Portabilität liegt und viele eher schwache Architekturen unterstützt werden sollen, sind die Portierungen von ZFS und HAMMER2 nicht eben als essenziell für den Betrieb von NetBSD zu betrachten. Trotzdem wird hier in beiden Fällen wichtige Entwicklungsarbeit geleistet, denn durch die Portierungen werden beispielsweise API-Aufrufe genauer untersucht und teilweise aufgeräumt. Die Portierung von HAMMER2 auf NetBSD wird also dabei helfen, HAMMER2 auch unter FreeBSD zum Laufen zu bekommen. Auch andere freie Betriebssysteme, die wenig Wert auf die Unterstützung der BSDs legen, können so später die Früchte der HAMMER2-Ports ernten und das interessante Dateisystem leichter integrieren.

(fo)