ccdtool – Ein LVM-Ersatz mit Bordmitteln unter NetBSD

ccdtool – Ein LVM-Ersatz mit Bordmitteln unter NetBSD
By Matthias Petermann / on 09.10.2025

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: ccdtool zeigt, 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.