Gibt es eine Möglichkeit, die Größe der Festplatte einer virtuellen Maschine zu ändern? Erhöhen Sie beispielsweise die Festplattengröße von 32 GB auf 64 GB. Ich verwende KVM / Qemu auf Ubuntu Server 11.10 64bit. Vielen Dank.
quelle
Gibt es eine Möglichkeit, die Größe der Festplatte einer virtuellen Maschine zu ändern? Erhöhen Sie beispielsweise die Festplattengröße von 32 GB auf 64 GB. Ich verwende KVM / Qemu auf Ubuntu Server 11.10 64bit. Vielen Dank.
Auf Debian-basierter Distribution sollten Sie virt-resize
stattdessen verwenden. Dieser Griff hat jetzt so ziemlich alles unter der Haube. Nehmen wir an, Ihr Image heißt Win7 (warum nicht?). Stellen Sie als erstes sicher, dass Ihre VM heruntergefahren ist:
Installieren Sie das Tool:
# apt-get install libguestfs-tools
Abrufen des Speicherorts Ihrer VM-Festplatte:
# virsh dumpxml Win7 | xpath -e /domain/devices/disk/source
Found 2 nodes in stdin:
-- NODE --
<source file="/var/lib/libvirt/images/Win7.img" />
-- NODE --
<source file="/var/lib/libvirt/images/Win7.iso" />
Möglicherweise müssen Sie /var/lib/libvirt/images/Win7.img
Folgendes anpassen :
# virt-filesystems --long --parts --blkdevs -h -a /var/lib/libvirt/images/Win7.img
Name Type MBR Size Parent
/dev/sda1 partition 07 100M /dev/sda
/dev/sda2 partition 07 32G /dev/sda
/dev/sda device - 32G -
Erstellen Sie Ihre 64G-Festplatte:
# truncate -s 64G /var/lib/libvirt/images/outdisk
Sie müssen / dev / sda2 erweitern (nicht die Boot-Partition):
# virt-resize --expand /dev/sda2 /var/lib/libvirt/images/Win7.img /var/lib/libvirt/images/outdisk
Examining /var/lib/libvirt/images/Win7.img ...
100% [progress bar] --:--
**********
Summary of changes:
/dev/sda1: This partition will be left alone.
/dev/sda2: This partition will be resized from 32G to 64G. The
filesystem ntfs on /dev/sda2 will be expanded using the
'ntfsresize' method.
**********
Setting up initial partition table on outdisk ...
Copying /dev/sda1 ...
Copying /dev/sda2 ...
100% [progress bar] 00:00
100% [progress bar] 00:00
Expanding /dev/sda2 using the 'ntfsresize' method ...
Resize operation completed with no errors. Before deleting the old
disk, carefully check that the resized disk boots and works correctly.
Erstellen Sie ein Backup für alle Fälle (oder verwenden mv
Sie, wenn Sie das Backup nicht möchten):
# cp /var/lib/libvirt/images/Win7.img /var/lib/libvirt/images/Win7.img.old
# mv /var/lib/libvirt/images/outdisk /var/lib/libvirt/images/Win7.img
Jetzt booten!
Für weitere Informationen: man virt-resize
virsh edit virt_name
den Pfad zur Quelle der Festplatte auf den neuen ändern. Wenn es dann nicht funktioniert, ändern Sie es einfach zurück und versuchen Sie es erneut. Es macht nicht wirklich viel Sinn, 3 Bilder zu haben, wenn man es mit 2 machen könnte.raw
. Wenn Sie beispielsweise denqcow2
Typ pflegen möchten , sollten Sie eine Konvertierung wieqemu-img convert -O qcow2 /var/lib/libvirt/images/outdisk /var/lib/libvirt/images/outdisk.qcow2
Ich empfehle, dass Sie, bevor Sie dies tun, eine vollständige Kopie des Disk-Images erstellen. Wenn alles kaputt geht, können Sie es zurückkopieren, um von vorne zu beginnen.
Es gibt 3 Dinge, die Sie tun müssen:
1) Vergrößern Sie das Disk-Image. In Ihrem Gastgeber:
Jetzt kann Ihr Gast eine größere Festplatte sehen, hat aber noch alte Partitionen und Dateisysteme.
2) Vergrößern Sie die Partition im Image. Sie müssen dazu eine Live-CD in Ihrem Gast booten, da Sie sich nicht mit einer gemounteten Partition anlegen können. Dies ist ziemlich kompliziert und wahrscheinlich der gefährlichste Teil. Es ist ziemlich viel zu kopieren, also verlinke ich stattdessen erstmal. Sie möchten so etwas tun:
http://www.howtoforge.com/linux_resizing_ext3_partitions_p2
ODER 2b) Das Erstellen einer neuen Partition wäre einfacher (und sicherer), wenn Sie nur mehr Speicherplatz benötigen. Verwenden Sie fdisk oder cfdisk oder was auch immer Sie möchten - Sie sollten jetzt eine ganze Reihe von nicht zugewiesenen Speicherplatz auf Ihrer Gastfestplatte sehen.
3) Wenn Sie die Größe Ihrer vorhandenen Partition geändert haben, vergrößern Sie das Dateisystem in der neuen größeren Partition (dies ist eigentlich in der oben verlinkten Anleitung enthalten). In Ihrem Gast:
quelle
Ich denke, Caesiums Antwort ist in Ordnung. Ich möchte nur einige andere Befehle aufschreiben, um dasselbe zu erreichen.
Angenommen, Sie haben eine Datei
disk.img
mit einem Datenträger-Image, dh sie enthält eine Partitionstabelle und eine oder mehrere Partitionen, und Sie möchten die letzte Partition vergrößern. Was Sie tun müssen, ist zu1) Vergrößern Sie die gesamte Datei, z. B. 4 GB. Eine schnelle Möglichkeit ist die Verwendung
dd
2) Vergrößere die Partition mit fdisk (Ich wünschte, ich könnte dies in einem geteilten oder einem schöneren Tool tun ... Jemand?)
Geben Sie
p
die partiton Tabelle und sucht den Startsektor der Partition zu drucken, zum Beispiel Partition 2 beginnt bei Sektor 106.496.Sie müssen diese Partition aus der Partitionstabelle löschen und eine neue Partition erstellen, die genau am selben Sektor beginnt, aber an einem späteren endet. Dann enthält die Partition ein gültiges Dateisystem.
Geben Sie
d
und die Partitionsnummer geben zu löschen. (Schluck!)Geben Sie
n
und geben Sie die gewünschte Partitionsnummer und dann den Startsektor. Sie MÜSSEN den gleichen Startsektor wie zuvor verwenden. Geben Sie zum Schluss den Endsektor an oder lassen Sie fdisk den höchsten Sektor auswählen, den Sie verwenden können.Geben Sie ein
w
, um die Änderungen wieder in die Image-Datei zu schreiben, und beenden Sie fdisk.3) Jetzt müssen Sie die Größe des Dateisystems ändern. Dazu benötigen Sie den Offset zum (= die Position des) Dateisystems im Disk-Image. Sie können dies aus der Sektornummer berechnen, wenn Sie die Sektorgröße kennen (normalerweise 512) oder verwenden können
parted
(
parted
Kann Befehle als Befehlszeilenargumente annehmen, bedeutet also "Einheitenbytes" und "Drucken", druckt also die Partitionstabelle und verwendet Bytes als Größe uint.)Dies druckt die Partition aus, die beginnt und endet. Angenommen, Ihre Partition beginnt bei 54525952, dann erstellen Sie eine Loopback-Blockierung mit Geräten
losetup
.losetup
sagt dir zum Beispiel, welchen Entwickler es ausgewählt hat/dev/loop0
. Jetzt können Sie verwendenresize2fs
:und schließlich das Loop-Gerät entfernen
quelle
Die beste Lösung finden Sie hier:
http://www.linux-kvm.com/content/how-resize-your-kvm-virtual-disk
Ich denke, was @Caesium gesagt hat, ist aus dem obigen offiziellen Link ersichtlich
Ich hoffe das wird helfen.
3 Schritte:
quelle
Dieses einfache Programm fügt dem Ende des virtuellen Images N Bytes hinzu. Ich habe das Paragon-Partitionsimage für Windows XP verwendet, um die neu erstellten Images zusammenzuführen. Funktioniert hier OK.
quelle
dd
odertruncate
... verwendet haben