Ich habe eine VM-Vorlage, die ich zum Erstellen anderer VMs mit virt-clone/KVM verwende. Die VM-Vorlage ist 4 GB groß, um Platz zu sparen. Der Speicher für VMs, die ich daraus erstelle, befindet sich auf iSCSI-Zielen oder LVM-Volumes (je nach Funktion), und ihre Dateisystemgrößen unterscheiden sich je nach Rolle der Maschine.
Nachdem ich eine neue VM aus der Vorlage erstellt habe, muss ich die Größe der Root-Partition ändern, wenn ich etwas baue, das mehr als 4 GB Festplatte benötigt. Dies funktioniert gut, wenn ich parted interaktiv verwende, aber nicht per Skript. Beim Versuch, das Dateisystem zu entfernen, werde ich gefragt, ob ich fortfahren möchte, obwohl ich „-s“ verwende.
Die folgende Ausgabe zeigt einen fehlgeschlagenen Skriptversuch und eine funktionierende interaktive Sitzung, um dies zu erreichen.
Was ist die beste Methode zum Ändern der Größe meiner Root-Partition nach dem Klonen, die einfach per Skript durchgeführt werden kann?
Fehlgeschlagener Versuch, ein partielles Skript zu erstellen
Partition nach dem Klonen
# parted /dev/vda p
Model: Virtio Block Device (virtblk)
Disk /dev/vda: 10.7GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Number Start End Size Type File system Flags
1 1049kB 4294MB 4293MB primary ext4 boot
Versuch der Skriptentfernung
# parted /dev/vda -s rm 1
Warning: Partition /dev/vda1 is being used. Are you sure you want to continue?
#
Partition nach fehlgeschlagener Entfernung
# parted /dev/vda p
Model: Virtio Block Device (virtblk)
Disk /dev/vda: 10.7GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Number Start End Size Type File system Flags
1 1049kB 4294MB 4293MB primary ext4 boot
Funktionierende interaktive Größenänderung (gefolgt von einem Neustart)
Partition vor dem Entfernen
# parted /dev/vda p
Model: Virtio Block Device (virtblk)
Disk /dev/vda: 10.7GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Number Start End Size Type File system Flags
1 1049kB 4294MB 4293MB primary ext4 boot
Entfernen und Erstellen einer neuen Partition, die die gesamte Festplatte nutzt
# parted /dev/vda
(parted) rm 1
Warning: Partition /dev/vda1 is being used. Are you sure you want to continue?
Yes/No? y
Error: Partition(s) 1 on /dev/vda have been written, but we have been unable to
inform the kernel of the change, probably because it/they are in use. As a
result, the old partition(s) will remain in use. You should reboot now before
making further changes.
Ignore/Cancel? I
(parted) mkpart p ext4 1 -1
(parted)
# parted /dev/vda p
Model: Virtio Block Device (virtblk)
Disk /dev/vda: 10.7GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Number Start End Size Type File system Flags
1 1049kB 10.7GB 10.7GB primary ext4
Dateisystemgröße ändern
# resize2fs /dev/vda1
resize2fs 1.42.9 (4-Feb-2014)
Filesystem at /dev/vda1 is mounted on /; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 1
The filesystem on /dev/vda1 is now 2621184 blocks long.
# df -kh .
Filesystem Size Used Avail Use% Mounted on
/dev/vda1 9.8G 1.6G 7.9G 17% /
Antwort1
Ich habe herausgefunden, wie das geht. Der Schlüssel ist kpartx, um den LVM von Parted außerhalb der VM (also auf dem Hypervisor-Host) nutzbar zu machen. Dann ändern Sie die Partitionsgröße, booten den Gast und vergrößern das Dateisystem.
Wenn Sie also einen Gast namens TESTVM haben, dessen Speicher sich unter /dev/VMS/VIRT-TESTVM befindet, würden Sie auf dem Hypervisor-Host Folgendes tun:
# kpartx -a /dev/VMS/VIRT-TESTVM
# parted /dev/VMS/VIRT-TESTVM rm 1
# parted /dev/VMS/VIRT-TESTVM mkpart -a optimal p ext4 0% 100%
# kpartx -d /dev/VMS/VIRT-TESTVM
Dann einfach die Maschine starten, einloggen und
# resize2fs /dev/vda1
Führen Sie sicherheitshalber einen erneuten Neustart durch.