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.