Ausgangslage: LVM unter NetBSD – theoretisch ja, praktisch schwierig
NetBSD verfügt schon seit einigen Jahren über einen Device Mapper
im Kernel und bringt auch die bekannten Linux-Tools (dmsetup,
lvm) im Userspace mit. In der Theorie ist damit alles da, was man von
LVM kennt – Volumes, Snapshots, Flexibilität.
In der Praxis hapert’s aber: Die Implementierung ist noch nicht
vollständig, und schlimmer noch – es gibt reproduzierbare
System-Freezes, sobald sich in einem Logical Volume ein
FFSv2-Dateisystem befindet und man darauf mit FSS einen
Snapshot anlegt, etwa um mit dump ein konsistentes Backup im
laufenden Betrieb zu ziehen.
Das soll keine Klage sein – NetBSD entwickelt sich kontinuierlich weiter. Ich habe mir vorgenommen, den Sachverhalt noch einmal genauer zu untersuchen, Bugreports zu prüfen oder ggf. neu zu erstellen. Schon 2017 hatte ich im Mailinglisten-Archiv über ähnliche Beobachtungen berichtet – offenbar eher ein Grenzfall.
Was ich eigentlich wollte
Meine Anforderungen sind bescheiden: Ich möchte Blockspeicher für verschiedene Xen-DomU-VMs möglichst nah an der Hardware bereitstellen – performant, nachvollziehbar, mit überschaubarem Overhead. Ein Blick in meinen Artikel Storage-Performance im Praxistest zeigt, dass ich mich schon länger mit den Performance-Aspekten beschäftigt habe.
Da ich die zukünftigen Speicherbedarfe der VMs schlecht vorhersagen kann, möchte ich diese Volumes bedarfsgerecht wachsen lassen – klassischer LVM-Use-Case. Leider ist die aktuelle NetBSD-LVM-Implementierung dafür keine Option.
CCD als stille Alternative
Dann fiel mir wieder ein alter Bekannter ein: CCD – Concatenated Disk Device. Ein einfaches, altbewährtes Konzept direkt im Kernel. Keine Daemons, keine Metadaten, kein Blackbox-Zauber.
Mit CCD lässt sich ohne zusätzliche Software mehrere GPT-Partitionen zu einem Blockdevice zusammenfassen. Dieses lässt sich problemlos an Xen durchreichen – ein Feature, das sich erstaunlich modern anfühlt, obwohl es uralt ist.
Das Beste daran: Ein Vergrößern ist jederzeit möglich, indem man einfach weitere GPT-Partitionen hinzufügt und das CCD neu konfiguriert. Das verursacht nur eine kurze Unterbrechung, ist aber für meinen Use-Case völlig akzeptabel.
Erste Tests zeigten: Das Verfahren ist robust, performant und – im Gegensatz zu LVM – völlig unauffällig beim Snapshot mit FSS. Damit war mein zukünftiger Stack für den Heimserver im Prinzip klar.
Es fehlte nur noch: ein Werkzeug
Was mich störte, war nicht die Technik, sondern der Workflow. CCD ist
minimalistisch – man editiert /etc/ccd.conf, konfiguriert Devices
manuell und muss sich Namen und Wedges merken. Für den produktiven
Alltag wollte ich ein Werkzeug, das das Ganze etwas komfortabler macht.
So entstand ccdtool – ein kleines Shell-Skript, das LVM-ähnliche Kommandos für CCD bereitstellt:
#!/bin/sh
# ccdtool - LVM-like management utility for NetBSD CCD volumes
# Provides simple commands to create, extend, destroy and inspect CCD devices
# using human-friendly aliases instead of raw device names.
#
# Copyright (c) 2025 Matthias Petermann <matthias@d2ux.net>
# License: MIT
Mit Kommandos wie:
ccdtool create vmstore wd2 200G
ccdtool extend vmstore wd3 200G
ccdtool show vmstore
ccdtool destroy vmstore
…werden GPT-Partitionen automatisch angelegt, CCD-Konfigurationen
erweitert oder gelöscht und Alias-Namen in einer Mapping-Datei gepflegt
– ohne dass man jemals /etc/ccd.conf anfassen muss.
Ein vollständiger Quelltext findet sich im Repository:
👉 forge.ext.d2ux.net/Polaris/toolbox
Vorteile des Ansatzes
Der Charme liegt in der Einfachheit:
- keine Metadaten-Schicht
- keine zusätzlichen Abhängigkeiten
- keine magischen Volume-Gruppen
- nachvollziehbare Konfigurationen
Wer will, kann jederzeit die generierten CCD-Einträge oder GPT-Labels inspizieren. Das System bleibt prüfbar, portabel und script-freundlich – typisch NetBSD.
Ein weiterer Vorteil: FSS + dump funktionieren auf den so erzeugten CCD-Geräten absolut stabil – selbst mit großen Filesystemen. Genau das, was LVM derzeit leider nicht zuverlässig liefert.
Ausblick: Integration in sysadm
Das ccdtool ist kein Einzelfallprojekt, sondern Teil eines größeren
Plans. Mittelfristig soll es in eine modulare Tool-Suite namens
sysadm aufgehen – eine Sammlung leichtgewichtiger Shell-Skripte,
die auf Basis einer Standard-NetBSD-Installation Virtualisierung und
Systembetrieb auch für weniger systemnahe Nutzer zugänglich machen.
Und ganz ehrlich: Auch mich soll es vor Schusselfehlern bewahren –
denn nichts ist peinlicher, als versehentlich den falschen ccdconfig -u zu erwischen ;-)
Fazit:
ccdtoolzeigt, dass man mit den klassischen NetBSD-Bordmitteln – CCD, GPT und ein wenig Shell – erstaunlich moderne Workflows realisieren kann. Kein Overhead, keine Magie, keine Komplexität – nur klare Werkzeuge, die tun, was sie sollen. Manchmal liegt die Zukunft eben in der Vergangenheit.
Bildnachweis: Das NetBSD-Logo ist eine eingetragene Marke der NetBSD Foundation, Inc. Verwendung im Rahmen redaktioneller Berichterstattung gemäß den Richtlinien zur Logonutzung.