Installation auf virtuellen LVM-Festplatten ohne Partitionen

Installation auf virtuellen LVM-Festplatten ohne Partitionen

Ich installiere einen Ubuntu-Server in einer KVM/Libvirt-VM mit dem Text-/Konsoleninstallationsprogramm.

Ich beabsichtige, zwei LVM-Volumes als Root und Swap an die VM als virtuelle Datenträger zu übergeben.
Sie werden korrekt als vdaund erkannt vdb, das Installationsprogramm scheint mich jedoch zu zwingen, diese als Datenträger zu partitionieren, was die Flexibilität von LVM zunichte machen würde.

Wie kann ich Ubuntu installieren, indem ich die virtuellen Festplatten direkt formatiere, anstatt Partitionen zu verwenden, oder ist das eine schlechte Idee?

Motivation:

Der springende Punkt ist, die Komplexität zu reduzieren, indem eine unnötige Abstraktionsebene aus der Speicherhierarchie entfernt wird.

  1. physische Laufwerke:host:/dev/sd{a,b}
  2. Partitionierung:host:/dev/sd{a,b}1
  3. SW-Raid:host:/dev/md1
  4. lvm:host:/dev/vg0/mylv_root
  5. VirtIO-Festplatteguest:/dev/vda
  6. Partitionierung:guest:/dev/vda1
  7. Dateisystem:guest:/

In diesem Layout muss ich beim Zuweisen von zusätzlichem Speicherplatz zu einer einzelnen VM diese Schritte ausführen:

  1. lvresize
  2. parted, was besonders hässlich ist
  3. resize2fs

Um den zugewiesenen Speicherplatz andersherum zu reduzieren (was noch hässlicher ist).

Für Backups (z. B. mit lvcreate --snapshot) gibt es einen zusätzlichen Schritt, kpartexwie von psusi erklärt.

Ich möchte 6. aus der Gleichung entfernen, da ich nicht sehe, welchen Wert diese Abstraktion bietet. Aber sie kostet durch zusätzliche Komplexität, mögliche Leistungseinbußen und geringe Platzverschwendung.

Hacky-Lösung:

Mithilfe von kpartxkonnte ich das Root-Dateisystem von einer „Bootstrap-Partition“ (innerhalb eines anderen temporären logischen Datenträgers) auf den logischen Zieldatenträger verschieben und dann per direktem Kernel-Boot booten.

kpartx -a /dev/vg0/mylv_bootstrapper
dd if=/dev/mapper/vg0-mylv_bootstrapper1 of=/dev/vg0/mylv_root bs=4M
e2fsck -f /dev/vg0/mylv_root
# Edit fstab inside /dev/vg0/mylv_root accordingly
resize2fs /dev/vg0/mylv_root
kpartx -d /dev/vg0/mylv_bootstrapper

Jedoch:

  1. Das fühlt sich seltsam abgehackt an.
  2. Mir gefällt die Idee eines direkten Kernel-Boots nicht wirklich, da ich bei jedem Upgrade des Kernels die Kernel-Version des Gasts im Host manuell aktualisieren müsste.

Antwort1

Nun, Sie müssen den Speicherplatz partitionieren/formatieren, unabhängig davon, ob es sich um LVM handelt oder nicht.

Ja, KVM erkennt die Geräte als „vda“ und „vdb“.

Obwohl KVM Rohpartitionen/LVM verwendet, ist es meiner Meinung nach im Allgemeinen viel zuverlässiger, einfach eine virtuelle Festplatte zu verwenden. Es nimmt den gleichen Speicherplatz ein und Sie können jederzeit LVM auf der virtuellen Festplatte verwenden und/oder die Größe der virtuellen Festplatte ändern.

Antwort2

Eigentlich habe ich festgestellt, dass es eine einfache Antwort gibt: Wenn die logischen Volumes formatiert sind (z. B. host# mkfs.ext4 /dev/vg0/mylv_root), erkennt das Installationsprogramm sie und erlaubt ihre Verwendung als „Partition 1 der virtuellen Festplatte“. Es kann die Partitionen dann sogar neu formatieren.

Allerdings schlägt die Installation von Grub fehl. Stattdessen kann ein direkter Kernel-Boot verwendet werden.

verwandte Informationen