Ich verwende auf all meinen Systemen, mal von diesen Android Spielsachen abgesehen, stets LVM zur Verwaltung der vorhandenen Datenträger. Der Vorteil ist, dass ich auf eine umfangreiche und schlecht änderbare Partitionierung verzichten kann, dazu kommen noch einige sehr praktische Features von LVM wie z.B. Snapshots oder die Möglichkeit Volumes online in der Größe ändern zu können.
Das Problem
Ich habe mir mittlerweile für sehr viele Fremde, also nicht von mir installierte, Systeme Zugang verschafft. Dort fällt mir sehr oft auf das zwar LVM verwendet wird, jedoch meiner Meinung nach falsch. Hintergrund ist das dort in der Regel eine große Volume Group existiert, und dort sind genau 2 Volumes enthalten: Swap mit 1-2 GiB, der Rest vollständig für das /-Dateisystem. In der Praxis sieht das dann so aus:
user@hostname:~# vgs
VG #PV #LV #SN Attr VSize VFree
main 1 2 0 wz--n- 19,76g 20,00m
user@hostname:~# lvs
LV VG Attr LSize Origin Snap% Move Log Copy% Convert
root main -wi-ao 17,74g
swap main -wi-ao 2,00g
Konkret kann so kein Snapshot angelegt werden, es ist nicht möglich ein zusätzliches Volume anzulegen, und so ziemlich alle Vorteile eines LVM sind erst mal dahin. Was übrig bleibt, ist die Option einen zusätzlichen Datenträger im Betrieb einzubauen und das System ohne Downtime umziehen oder erweitern zu können.
Die Lösung
Systeme, die ich selbst installieren durfte, oder bei welchen ich um Rat gebeten wurde, haben meist folgendes Schema:
[user@hostname ~]# vgs
VG #PV #LV #SN Attr VSize VFree
main 1 8 0 wz--n- 465.66g 212.66g
[user@hostname ~]# lvs
LV VG Attr LSize Pool Origin Data% Move Log Cpy%Sync Convert
arch main -wi-ao---- 20.00g
aur main -wi-ao---- 10.00g
bitcoin main -wi-a----- 20.00g
geheim1 main -wi-a----- 30.00g
geheim2 main -wi-a----- 10.00g
scummvm main -wi-ao---- 5.00g
swap main -wi-a----- 8.00g
virtualbox main -wi-ao---- 150.00g
Was sofort auffällt, ist, dass in meiner Volume Group noch viel Platz für zukünftige Erweiterungen ist, und dass ich meine Daten gerne auf viele Volumes verteile. Volumes haben bei mir entweder Standardgrößen (z.B. das /-Dateisystem 10-20 GiB) oder den aktuellen Bedarf +50% als Reserve. Durch diese Verteilung kann ich jederzeit von einzelnen Diensten oder Anwendungen Snapshots erstellen und Dinge ohne Reue kaputtmachen. Ein zu klein geratenes Volume stellt kein Problem mehr dar, ich kann es einfach Online vergrößern ohne dafür ein Rescue System nutzen zu müssen. Auch die Möglichkeit bestimmte Volumes auf bestimmte Datenträger (SSD, HDD, …) innerhalb einer Volume Group zu verschieben steht mir zu Verfügung.
Die Datenträger an sich haben bei mir in der Regel auch nur maximal 2 Partitionen, das wäre entweder eine /boot oder UEFI Partition und der Rest direkt als Physical Volume für LVM. Die /boot oder UEFI Partition haben meistens eine Größe von ca. 500 MiB, somit passt auch ein Rescue System für den Notfall noch auf diese.
Die Sache mit der Datenträgerverschlüsselung oder einem Software-RAID habe ich der Einfachheit halber in diesem Artikel unterschlagen, kommen in der Praxis aber natürlich noch dazu.
Nochmal kurz zusammengefasst:
- Volume Groups nur in Ausnahmefällen vollständig auslasten. Damit man später auch noch Platz für Snapshots hat.
- Volumes anfangs erst mal nur so groß wie erforderlich machen, dazu noch eine angemessene Reserve. Volumes können leicht vergrößert, aber je nach Dateisystem nicht oder schwer verkleinert werden.
- Viele Volumes sorgen dafür, dass man später bequem von einzelnen Diensten Snapshots für Testzwecke erstellen kann, auch das Verschieben einzelner Dienste auf unterschiedliche Datenträger wird so sinnvoll möglich.