Ich richte einen Ubuntu-Gast auf einem CentOS KVM-Host mit anfänglich 6 GB Festplattenspeicher ein. Wie kann ich den Festplattenspeicher des Ubuntu-Gasts über die Befehlszeile erhöhen?
EDIT # 1: Ich verwende eine Disk-Image-Datei (qemu).
Ich richte einen Ubuntu-Gast auf einem CentOS KVM-Host mit anfänglich 6 GB Festplattenspeicher ein. Wie kann ich den Festplattenspeicher des Ubuntu-Gasts über die Befehlszeile erhöhen?
EDIT # 1: Ich verwende eine Disk-Image-Datei (qemu).
Antworten:
qemu-img resize vmdisk.img +10G
, um das Bild um 10 GB zu vergrößernstart the VM, resize the partitions and LVM structure within it normally
Wie es geht? Bitte erkläre es.
Ob gut oder schlecht, die folgenden Befehle werden ausgeführt, auch wenn das virtuelle Ziellaufwerk aktiviert ist. Dies kann in Umgebungen nützlich sein, in denen der Datenträger nicht abgehängt werden kann (z. B. eine Root-Partition), die VM eingeschaltet bleiben muss und der Systembesitzer bereit ist, das Risiko einer Datenbeschädigung zu übernehmen . Um dieses Risiko auszuschließen, müssen Sie sich zuerst bei der VM anmelden und die Bereitstellung des Zieldatenträgers aufheben. Dies ist nicht immer möglich.
Führen Sie im KVM-Hypervisor die folgenden Schritte aus.
Erhöhen Sie die Größe der Image-Datei selbst (geben Sie den zu erhöhenden Betrag an):
qemu-img resize <my_vm>.img +10G
Rufen Sie den Namen des virtio-Geräts über die libvirt-Shell ab ( drive-virtio-disk0
in diesem Beispiel):
virsh qemu-monitor-command <my_vm> info block --hmp
drive-virtio-disk0: removable=0 io-status=ok file=/var/lib/libvirt/images/<my_vm>.img ro=0 drv=raw encrypted=0
drive-ide0-1-0: removable=1 locked=0 tray-open=0 io-status=ok [not inserted]
Signalisieren Sie dem virtio-Treiber, die neue Größe zu erkennen (geben Sie die gesamte neue Kapazität an):
virsh qemu-monitor-command <my_vm> block_resize drive-virtio-disk0 20G --hmp
Melden Sie sich dann bei der VM an. Beim Ausführen dmesg
sollte gemeldet werden, dass die virtuelle Festplatte eine Kapazitätsänderung festgestellt hat. An dieser Stelle können Sie die Größe Ihrer Partitionen und der LVM-Struktur nach Bedarf ändern.
Diese Fragen zu Serverfehlern sind ähnlich, aber spezifischer. Ändern Sie die Größe der KVM-Online-Festplatte. & Centos Xen ändert die Größe von DomU-Partition und Volume-Gruppe . Der erste stellt die Frage, wie ein KVM-Gast erhöht werden kann, wenn er online ist, während der zweite mit LVM XEN-spezifisch ist. Ich frage, wie dies erreicht werden soll, während der KVM offline ist.
ANMERKUNG: Dieser Link war nützlich für METHODE 1 und zeigt, wie Sie den Speicherplatz eines KVM (ext3-basiert) erhöhen können .
Bei KVM-Gästen ist zu beachten, dass sich die verwendeten Partitionen auf die Methode auswirken können, mit der Sie den Festplattenspeicher erhöhen können.
Methode 1: Partitionen basieren auf ext2 / ext3 / ext4
Die Muttern dieser Methode sind wie folgt:
# 1. stop the VM
# 2. move the current image
mv mykvm.img mykvm.img.bak
# 3. create a new image
qemu-img create -f raw addon.raw 30G
# 4. concatenate the 2 images
cat mykvm.img.bak addon.raw >> mykvm.img
Starten Sie nun mit der größeren Datei mykvm.img gparted und erweitern Sie die vorhandene Partition in den neu hinzugefügten Speicherplatz. Dieser letzte Schritt erweitert im Wesentlichen die Betriebssystempartition, sodass der zusätzliche Speicherplatz genutzt werden kann.
Methode 2: Partitionen sind LVM-basiert
Hier sind die Schritte, die ich grob ausgeführt habe, um die Größe eines KVM-Gasts zu ändern, der LVM intern verwendet.
Führen Sie fdisk in der VM aus und löschen Sie die LVM-Partition und erstellen Sie sie neu
% fdisk /dev/vda
...
Device Boot Start End Blocks Id System
/dev/vda1 * 1 13 104391 83 Linux
/dev/vda2 14 3263 26105625 8e Linux LVM
Command (m for help): d
Partition number (1-4): 2
Command (m for help): p
Disk /dev/vda: 48.3 GB, 48318382080 bytes
255 heads, 63 sectors/track, 5874 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/vda1 * 1 13 104391 83 Linux
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 2
First cylinder (14-5874, default 14): 14
Last cylinder or +size or +sizeM or +sizeK (14-5874, default 5874):
Using default value 5874
Command (m for help): p
Disk /dev/vda: 48.3 GB, 48318382080 bytes
255 heads, 63 sectors/track, 5874 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/vda1 * 1 13 104391 83 Linux
/dev/vda2 14 5874 47078482+ 83 Linux
Command (m for help): t
Partition number (1-4): 2
Hex code (type L to list codes): 8e
Changed system type of partition 2 to 8e (Linux LVM)
Command (m for help): p
Disk /dev/vda: 48.3 GB, 48318382080 bytes
255 heads, 63 sectors/track, 5874 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/vda1 * 1 13 104391 83 Linux
/dev/vda2 14 5874 47078482+ 8e Linux LVM
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
WARNING: Re-reading the partition table failed with error 16: Device or
resource busy.
The kernel still uses the old table.
The new table will be used at the next reboot.
Syncing disks.
%
Starten Sie die VM neu
Ändern Sie die Größe des physischen LVM-Volumes
% pvdisplay
--- Physical volume ---
PV Name /dev/vda2
VG Name VolGroup00
PV Size 24.90 GB / not usable 21.59 MB
Allocatable yes (but full)
PE Size (KByte) 32768
Total PE 796
Free PE 0
...
% pvresize /dev/vda2
% pvdisplay
--- Physical volume ---
PV Name /dev/vda2
VG Name VolGroup00
PV Size 44.90 GB / not usable 22.89 MB
Allocatable yes
PE Size (KByte) 32768
Total PE 1436
Free PE 640
...
Ändern Sie die Größe des logischen LVM-Volumes
% lvresize /dev/VolGroup00/LogVol00 -l +640
Extending logical volume LogVol00 to 43.88 GB
Logical volume LogVol00 successfully resized
Erweitern Sie das Dateisystem
% resize2fs /dev/VolGroup00/LogVol00
resize2fs 1.39 (29-May-2006)
Filesystem at /dev/VolGroup00/LogVol00 is mounted on /; on-line resizing required
Performing an on-line resize of /dev/VolGroup00/LogVol00 to 11501568 (4k) blocks.
The filesystem on /dev/VolGroup00/LogVol00 is now 11501568 blocks long.
Das Obige ist mein Beispiel, aber ich habe die Schritte auf dieser Website befolgt
virt-manager
habe die Methoden 1 und 2 ausgiebig verwendet, bevor ich unsere KVM-Server auf eine neuere Version von KVM (CentOS 5 -> CentOS 6) migriert habe. Ich benutze jetzt auch die qemu-img resize
Methode.
lvextend /dev/Volgroup/lvname /dev/vda2
(alles in einer Zeile, wobei / dev / vda2 Ihr physisches Volume wäre). Ohne weitere Optionen wird die maximale Größe in dieser Datenträgergruppe verwendet.
Ändern Sie die Größe und erweitern Sie interne Partitionen in einem Schritt
Ich hatte einen Ubuntu-Host mit einem qcow2-Gastdateibild und wollte die Größe der Festplatte ändern und die entsprechenden Partitionen in einem Schritt erweitern. Es erfordert, dass Sie die Dienstprogramme für das libvirt-Gastdateisystem einrichten, diese sind jedoch trotzdem nützlich.
Inspiration von hier: http://libguestfs.org/virt-resize.1.html
Der Schlüsselbefehl lautet hier: virt-resize
Vorbereitung:
* Install libvirt file system utilities package
* sudo apt-get install libguestfs-tools
* Test to see if it works (it won't) -- you need to see "===== TEST FINISHED OK =====" at the bottom:
* sudo libguestfs-test-tool
* If you don't see "===== TEST FINISHED OK =====" at the bottom then repair it:
* sudo update-guestfs-appliance
* Run the test again and verify it works
* sudo libguestfs-test-tool
Nun mache folgendes:
1) Fahren Sie den Gast herunter:
2) Überprüfen Sie die aktuelle Größe und zeigen Sie den Partitionsnamen an, den Sie mit dem Dienstprogramm libvirt erweitern möchten:
sudo virt-filesystems --long --parts --blkdevs -h -a name-of-guest-disk-file
3) Erstellen Sie die neue (40G) Ausgabediskette:
qcow: sudo qemu-img create -f qcow2 -o preallocation=metadata outdisk 40G
img: sudo truncate -s 40G outdisk
4) Kopieren Sie die alte in die neue, während Sie die entsprechende Partition erweitern (vorausgesetzt, Ihre Festplattenpartition aus Schritt 2 war / dev / sda1):
sudo virt-resize --expand /dev/sda1 indisk outdisk
5) Benennen Sie die Indisk-Datei als Backup um, benennen Sie die Outdisk als Indisk um (oder ändern Sie das Gast-XML)
6) Starten Sie den Gast neu und testen Sie die neue Festplattendatei sorgfältig, bevor Sie die ursprüngliche Datei löschen
7) Gewinn!
-o preallocation=metadata
erstellt eine Sparse-Datei. Mit dieser Option wird die gesamte Größe vorab zugewiesen.
-o preallocation=metadata
und wenn Sie dies nicht tun, sollten Sie auch den truncate
Schritt überspringen . virt-resize
Die Datei wird trotzdem entsprechend vergrößert.
Wenn Sie LVM in der VM verwenden, ist dies am einfachsten, wenn Sie der VM ein neues virtuelles Laufwerk hinzufügen und die Volume-Gruppe und die logischen Volumes darauf erweitern.
Um zu überprüfen, ob Sie LVM-Run verwenden sudo pvs; sudo vgs; sudo lvs
, erhalten Sie Folgendes :
PV VG Fmt Attr PSize PFree
/dev/vda1 vgWWW lvm2 a- 30.00g 0
VG #PV #LV #SN Attr VSize VFree
vgWWW 1 2 0 wz--n- 30.00g 0
LV VG Attr LSize
root vgWWW -wi-ao 28.80g
swap vgWWW -wi-ao 1.19g
Wenn das Betriebssystem der VM LVM verwendet. Im obigen Beispiel verfügt die VM über eine 30-GByte-virtuelle Festplatte, die mithilfe von LVM mit einer Datenträgergruppe namens vgWWW konfiguriert wurde und zwei logische Datenträger enthält, einen für den Austausch und einen für alles andere.
Wenn LV in der VM verwendet wird:
sudo pvcreate /dev/vdb
sudo vgextend vgWWW /dev/vdb
sudo lvextend --extents +100%FREE /dev/vgWWW/root
(oder so ähnlich , sudo lvextend --size +8G /dev/vgWWW/root
wenn Sie nicht wollen , es den ganzen Weg zu wachsen, dieses Beispiel würde hinzufügen 8Gb auf das Volumen)resize2fs /dev/vgWWW/root
Hinweis: Die oben die vg übernimmt / lv Namen die gleiche wie mein Beispiel sind die unwahrscheinlich ist, ändern Sie gegebenenfalls auch , wenn die VM bereits ein virtuelles Laufwerk genannt hatte vdb
der neue sein etwas anderes ( vdc
und so weiter)
Hinweis: Funktioniert resize2fs
nur mit den Dateisystemen ext2, ext3 und ext4. Wenn Sie etwas anderes verwenden, tritt ein Fehler auf und es wird nichts unternommen.
Hinweis: Wenn Sie die Größe eines Live-Dateisystems ändern, resize2fs
werden Sie nicht fsck
wie bei einem nicht gemounteten Dateisystem zur Ausführung aufgefordert . Möglicherweise möchten Sie eine schreibgeschützte Dateisystemprüfung durchführen, bevor Sie fortfahren.
Es ist möglich, die Größe online zu ändern. libvirtd unterstützt dies nativ:
Suchen Sie den Blockgerätenamen. Sollte so etwas wie "vda" sein
$ virsh domblklist <libvirtd_vm_name>
Ändern Sie die Größe des virtuellen Geräts:
$ virsh blockresize --domain <libvirtd_vm_name> --path <block_device_name> --size <new_size>
Hier ist ein Beispiel, wo ich den vda
Datenträger für VM von 50GB
bis erweitere .51GB
undercloud
[root@gss-rhos-4 ~]# virsh domblklist undercloud
Target Source
------------------------------------------------
vda /home/images/undercloud.qcow2
Schauen Sie sich jetzt die Details der .qcow2-Image-Datei an:
[root@gss-rhos-4 ~]# qemu-img info /home/images/undercloud.qcow2
image: /home/images/undercloud.qcow2
file format: qcow2
virtual size: 50G (53687091200 bytes)
disk size: 38G
cluster_size: 65536
Format specific information:
compat: 1.1
lazy refcounts: false
refcount bits: 16
corrupt: false
Nun ändern wir die Größe des VDA-Block-Geräts:
[root@gss-rhos-4 ~]# virsh blockresize undercloud vda 51G
Block device 'vda' is resized
Und bestätigen Sie:
[root@gss-rhos-4 ~]# qemu-img info /home/images/undercloud.qcow2
image: /home/images/undercloud.qcow2
file format: qcow2
virtual size: 51G (54760833024 bytes)
disk size: 38G
cluster_size: 65536
Format specific information:
compat: 1.1
lazy refcounts: false
refcount bits: 16
corrupt: false
[root@gss-rhos-4 ~]#
Anschließend können Sie dieses Skript in der VM verwenden, um die Befehle zum Ändern der Größe der Blockgeräte und fs anzuzeigen: https://github.com/mircea-vutcovici/scripts/blob/master/vol_resize.sh .
Es besteht die Möglichkeit, die Größe der VM-Festplatte zu erhöhen, ohne die VM neu zu starten, wenn Sie virtio drive und LVM verwenden.
(Optional) Erstellen Sie eine primäre Partition mit fdisk, um / dev / vdb1 abzurufen, und verwenden Sie dann kpartx -a / dev / vdb, um die Partitionstabelle erneut zu lesen
Verwenden Sie vgextend vg_name / dev / vdb1 (oder / dev / vdb, wenn Sie keine Partition erstellt haben)
Sie sind fertig.
Auf diese Weise können Sie die gewünschte Partition erweitern:
# see what partitions you have?
virt-filesystems --long -h --all -a olddisk
truncate -r olddisk newdisk
truncate -s +5G newdisk
# Note "/dev/sda2" is a partition inside the "olddisk" file.
virt-resize --expand /dev/sda2 olddisk newdisk
Weitere Beispiele finden Sie hier .
Ein anderer Weg, es zu tun
truncate -s +2G vm1.img
Gehen Sie in das Fenster Make a Disk Rescan und nachdem Sie Ihre Lvm-Größe ändern können.
Wenn Sie LVM in Ihrer VM haben, ist dies einfach und schnell verrückt.
sudo system-config-lvm
Terminal ein) *.Ich fand die GUI recht intuitiv, folge aber den nächsten Schritten, wenn du Probleme hast.
Hinweis! Zumindest unter CentOS 6 ist LVM GUI nicht standardmäßig installiert, aber Sie können es mit installieren yum install system-config-lvm
.
Bildgröße anpassen:
qemu-img resize vmdisk.img +16G
erhöht die Bildgröße um 16 GB.
Wenn Ihr Image über GPT (GUID-Partitionstabelle) verfügt, weicht die in GPT verwendete Laufwerksgröße von der neuen Größe ab. Sie müssen dies folgendermaßen beheben gdisk
:
MY_DRIVE=/dev/vda
gdisk $MY_DRIVE <<EOF
w
Y
Y
EOF
oder mit parted
:
parted $MY_DRIVE print Fix
Aus irgendeinem Grund parted
funktioniert Fix nicht, wenn kein Tty angezeigt wird (zum Beispiel bei der Bereitstellung mit Vagrant), also verwende ich gdisk
.
Erhöhen Sie die Partitionsgröße, um den gesamten verfügbaren Speicherplatz auszufüllen:
MY_PARTITION_GUID=$(
gdisk $MY_DRIVE <<EOF | sed -n -e 's/^Partition unique GUID: //p'
i
EOF
)
MY_PARTITION_FIRST_SECTOR=$(
gdisk $MY_DRIVE <<EOF | sed -n -e 's/^First sector: \([0-9]\+\).*/\1/p'
i
EOF
)
gdisk $MY_DRIVE <<EOF
d
n
$MY_PARTITION_FIRST_SECTOR
x
a
2
c
$MY_PARTITION_GUID
w
Y
EOF
Der x a 2 <Enter>
Teil ist optional und wird benötigt, wenn Sie ein älteres BIOS verwenden.
MY_PARTITION_GUID=...
und c $MY_PARTITION_GUID
Teile sind ebenfalls optional und nur erforderlich, wenn Sie die Partitions-UUID in /etc/fstab
oder an einem anderen Ort verwenden.
Starten Sie die Partitionen neu oder lesen Sie sie erneut mit partx -u $MY_DRIVE
oder partprobe
.
Extend Partition Beispiel für ext2
, ext3
oder ext4
:
MY_PARTITION="${MY_DRIVE}1"
resize2fs $MY_PARTITION
Sie können Solus VM mit Gparted Mounted verwenden. Einmal mit dem gparted verwendet, können Sie das System einfach booten und den Speicherplatz anpassen. Stellen Sie sicher, dass Sie die richtige Startpriorität eingestellt haben. Als Referenz verwenden Sie bitte die unten stehende URL, die nützlich sein könnte. https://greencloudvps.com/knowledgebase/11/How-to-Extend-the-Hard-drive-on-KVM-after-upgrade-VPS.html