Fehlgeschlagener Versuch, ein partielles Skript zu erstellen

Fehlgeschlagener Versuch, ein partielles Skript zu erstellen

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.

verwandte Informationen