Ansichten eines Informatikers

Ubuntu und LVM

Hadmut
23.11.2024 3:26

Herrje, ist das alles schlimm.

Warnung: Das ist ein Artikel für Leute, die sich mit Linux-Administration und dem Management von Block-Devices auskennen und wissen, was das Logical Volume Management LVM ist.

Was ist LVM?

Mit dem LVM kann man eine (oder mehrere) Partitionen (echte Partitionen auf einer Festplatte oder virtuelle Partitionen, wofür es ja mehrere Quellen gibt) virtuell in mehrere Unterpartitionen unterteilen, ganz ähnlich der Partitionstabelle einer Festplatte, nur eben noch mit den zusätzlichen Vorteilen, dass man diese logischen Partitionen auch später noch vergrößeren oder verkleinern kann, ohne rumschieben zu müssen, oder auch (was allerdings nicht so ratsam ist) mehrere Partitionen zu einer größeren zusammenfassen, weil LVM den zugrundeliegenden Partitionen in kleine Segmente aufteilt und aus diesen dann virtuelle Partitionen erzeugt, die sich wie „echte“ Partitionen anfühlen.

Wozu braucht man das?

Es gibt verschiedene Anwendungszwecke, obwohl einige davon durch Dateisysteme wie ZFS oder BtrFS verdrängt wurden, die auch einen bestehenden Plattenplatz nachträglich dynamisch aufteilen können.

Eine Domäne für LVM ist aber die Festplattenverschlüsselung.

Normalerweise nämlich funktioniert die Standard-Plattenverschlüsselung von Linux (Luks) auf eine ganz einfache Weise: Eine verschlüsselte Partition enthält genau eine Klartext-Partition. Mit der kann man dann machen, was man will, bespielsweise wieder ein Dateisystem reinsetzen. So funktionieren im einfachsten Fall verschlüsselte Linux-Installationen: Anstatt das Dateisystem direkt in eine Festplattenpartition zu schreiben (unverschlüsselt), wird die Partition verschlüsselt, und das Dateisystem ist dann innendrin, in der Klartextpartition.

Das Problem

Normalerweise kommt man bei normalen Desktop-Maschinen mit einer verschlüsselten Root-Partition aus. Klassischerweise verwendet man eigentlich zwei, nämlich root und swap, was das nun beschriebene Problem wieder eröffnet, weil man zwei Partitionen braucht, aber das ist heute längst gängige Praxis, eine Swap-Datei statt einer Swap-Partition zu verwenden.

Aber was, wenn man nun noch weitere Partitionen für bestimmte Anwendungen braucht? Zum Beispiel für virtuelle Maschinen. Oder für ein XFS, ZFS, BtrFS, die alle bestimmte Eigenschaften haben, die beispielsweise von Virtualisierungsumgebungen wie LXD verwendet werden?

Natürlich könnte man mehrere Partitionen auf der Festplatte einrichten, und jede verschlüsseln. Das wäre aber nicht nur statisch, sondern brächte (sofern man nicht ein paar schräge Tricks mit Luks kennt, die aber nicht so richtig seriös sind) das Problem, dass man beim Booten für jede dieser Partitionen nach dem Passwort gefragt wird, also mehrmals das Passwort eingeben muss. Nicht schön.

Das ist aber überhaupt kein Problem, denn genau dafür gibt es ja LVM. Man macht eine verschlüsselte Partition und setzt in deren Klartext eine LVM-Partition, und kann dann seinen Plattenplatz in beliebig viele Partitionen aufspalten, in die man dann das root-Verzeichnis, ZFS, XFS, virtuelle Maschinen oder was auch immer setzen kann.

Das hört sich jetzt kompliziert an, ist aber eigentlich ganz einfach und seit etwa 20 Jahren Standard, gängige, gewohnte Praxis. Geht halt so, und macht auch keine Probleme, das ist einfach State of the Art.

Aber, ach.

Auch unter Ubuntu funktionierte das meiner Erinnerung nach seit 20 Jahren, seit der ersten Version, weil es schon beim Vorgänger Debian Verschlüsselung und LVM gab, denn LVM wurde im Jahr 1998 geschrieben.

Das sind eigentlich Dinge, über die ich mir 20 Jahre lang keinen Gedanken gemacht und den Kopf nicht zerbrochen habe, weil die einfach zuverlässig und logisch funktionierten. Man baut halt sein System so aus verschiedenen Schichten aufeinander auf, in dem man die Funktionen stapelt (stack). Ist halt so, funktioniert prima, eigentlich keiner Erwähnung wert.

Seit so etwa ein, zwei Versionen von Ubuntu bekommen die das aber nicht mehr hin.

Es gibt zwei verschiedene Installationsprogramme. Die Hauptversion von Ubuntu verwendet Subiquity, einen Ableger und Nachfolger des alten Ubiquity, während Lubuntu und inzwischen auch Kubuntu den alternativen Installer Calamares verwendet.

Beide, Subiquity und Calamares, verwenden inzwischen schicke, graphische Installationsoberflächen, die hübsch aussehen und auch für Anfänger geeignet sein sollen, weil man mit der Maus drauf rumklicken kann, aber beide können das nicht mehr ordentlich.

Calamares gibt zwar vor, LVM zu können, stürzt aber ab oder verhält sich unsinnig, kann nach Anlegen eines physical volumes damit nichts mehr anfangen und geht baden, wenn man es manuell anlegt.

Subuiquity dagegen bietet es auch kann, kann es sogar, macht es aber falsch: Es legt für das root-Verzeichnis ein logical Volume an, das gleich den gesamten Platz belegt, womit man keine zweite logische Partition mehr anlegen kann, und das LVM damit völlig nutzlos wird.

(Ja, ich weiß, man kann Partitionen u. U. auch schrumpfen, aber das ist eine üble und äußerst fehleranfällige Sache und so gar nichts für Anfänger, außerdem sollte man viel beten.)

Offenbar ist da inzwischen eine Generation von Leuten am Werk, die nicht mehr richtig verstehen, was sie da tun. Wir haben eine Regression in der Funktionalität.

Kurioserweise kann es die Server-Version von Ubuntu noch richtig, weil die immer noch den alten, textbasierten Installer hat, den früher auch die Desktop-Versionen verwendeten. Der macht das noch richtig und legt für die root-Partition standardmäßig (kann man während der Installation ändern) eine 100G-Partition an und lässt den Rest einfach frei. Man kann dann bequem weitere Partitionen darin anlegen oder die root-Partition auch vergrößern.

Man kann also das Layout, das man braucht, mit der Server-Version installieren und dann, wenn das System läuft, aber nur die Textversion hat, Pakete wie lubuntu-desktop nachinstallieren, die dann den ganzen graphischen Teil mit reinziehen. Das ist zwar dann nicht ganz dasselbe, weil ein paar Feinheiten wie die Boot-Splash-Anzeige noch fehlen, dafür auch ein paar Dinge zuviel sind (z. B. cloud-init), aber wenn man nicht ganz wüste Dinge treiben will wie die Partition ganz von Hand anzulegen und dann mit debootstrap und grub-install alles manuell selbst installiert, ist dass noch die beste und am ehesten gangbare Lösung für ein Problem, das man früher, bis ungefähr 18.04 oder 20.04, weiß nicht mehr genau, gar nicht hatte, weil das früher einfach funktioniert hat.

Wir haben wieder den Effekt, dass man die Dinge zwar hübsch graphisch macht, und so baut, dass das für Laien möglichst einfach zu bedienen sein soll, aber die Entwickler eine Funktionalität nicht mehr hinbekommen, die man schon 20 Jahre lang hatte. Das Problem mit Calamares ist seit Jahren bekannt – aber nicht gelöst. Man überlegt gar, ob man die Unterstützung für LVM ganz rauswerfen soll, weil man es nicht hinbekommt, sie zum Funktionieren zu bringen. Luks ist von 2004, vorher hatte man aber schon einfachere Versionen der Verschlüsselung.

Wir kriegen heute Dinge nicht mehr hin, die wir schon mal konnten, und schaffen es nicht, die Funktionalität auch nur zu erhalten. Und wir legen mehr Wert auf schönes Aussehen als auf Funktion. Früher war das andersherum. Früher sagte man, wie das aussieht ist nachrangig oder sogar egal, wichtig ist, dass es robust und einwandfrei funktioniert und die gewünschten Funktionen liefert.