// Virt-resize – wenn die virtuelle Platte zu klein wird

Zur Virtualisierung einiger VMs verwende ich libvirt mit KVM. Leider waren die ursprünglichen 4GB Festplattenimage pro Ubuntu VM dann doch zu wenig. Die Debian Gäste kommen seltsamerweise bis jetzt mit 3GB aus :-)
Also musste ich die „Platten“ der VMs vergrößern. Die libvirt Doku verweist hierbei auf virt-resize. Dieses Tool ist in dem Paket libguestfs-tools enthalten und spart einem eine Menge Arbeit.

Schritt für Schritt

Zuerst muss man herausfinden, welche Partition der VM vergrößert werden soll. Dazu reicht ein einfaches df oder mount innerhalb der VM. Alternativ kann man auch vom Host aus virt-filesystems verwenden.
Nachdem man zusätzlich herausgefunden hat, wo das Image der VM liegt (z.B mit virsh dumpxml oder virsh edit), schaltet man die betroffene VM aus – keine Angst, die Prozedur dauert höchstens 5 Minuten. Wer über entsprechende Dumper für VMs verfügt (z.B. dieses Skript), könnte zuvor auch noch ein Backup des betroffenen Gastes ziehen.
Anschließend geht man wie in der Doku beschrieben vor (hier eine leicht angepasste Vorgehensweise):

$ cd /var/lib/libvirt/images                                       # In das Verzeichnis des Images wechseln
/var/lib/libvirt/images$ sudo mv VM.img VM.img.bak                 # VM.img anpassen
/var/lib/libvirt/images$ sudo truncate -r VM.img.bak VM.img
/var/lib/libvirt/images$ sudo truncate -s +3G VM.img               # Vergrößerung um 3GB
/var/lib/libvirt/images$ sudo virt-resize --expand /dev/sda1 VM.img.bak VM.img    # /dev/sda1 evtl. anpassen
Examining VM.img.bak ...
**********
 
Summary of changes:
 
/dev/sda1: This partition will be resized from 3,5G to 6,5G.  The 
    filesystem ext4 on /dev/sda1 will be expanded using the 'resize2fs' 
    method.
 
/dev/sda2: This partition will be left alone.
 
**********
Setting up initial partition table on VM.img ...
Copying /dev/sda1 ...
 100% ⟦▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓⟧ 00:00
Copying /dev/sda2 ...
 100% ⟦▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓⟧ --:--
Expanding /dev/sda1 using the 'resize2fs' method ...
 
Resize operation completed with no errors.  Before deleting the old 
disk, carefully check that the resized disk boots and works correctly.

Das schöne ist, dass hierbei auch gleich das Dateisystem der Partition (hier /dev/sda1 mit ext4) vergrößert „resized“ wird. Es ist also keine weitere Arbeit nötig. Der Gast kann sofort wieder gestartet werden.
Sollte bei dem obigen Vorgang etwas schief gelaufen sein, liegt noch ein Backup der Disk (VM.img.bak) vor. Virt-resize kann übrigens auch mit LVM umgehen – siehe Doku.

Leave a comment…




  ____    ___    ___    ____ ______   __      __   ____   ____   ___    __ __   __ __
 / __ \  / _ )  / _ \  / __//_  __/  / /  __ / /  /  _/  / __/  / _ \  / //_/  / // /
/ /_/ / / _  | / , _/ _\ \   / /    / /__/ // /  _/ /   / _/   / // / / ,<    / _  / 
\___\_\/____/ /_/|_| /___/  /_/    /____/\___/  /___/  /_/    /____/ /_/|_|  /_//_/
  • E-Mail address will not be published.
  • Formatting:
    //italic//  __underlined__
    **bold**  ''preformatted''
  • Links:
    [[http://example.com]]
    [[http://example.com|Link Text]]
  • Quotation:
    > This is a quote. Don't forget the space in front of the text: "> "
  • Code:
    <code>This is unspecific source code</code>
    <code [lang]>This is specifc [lang] code</code>
    <code php><?php echo 'example'; ?></code>
    Available: html, css, javascript, bash, cpp, …
  • Lists:
    Indent your text by two spaces and use a * for
    each unordered list item or a - for ordered ones.
Hello World!

This is the personal website of Christoph Winkler.
Here you will find a sort of blog and some information about me and my projectshave fun!

Recent Comments
Latest Tweets

Follow me on Twitter...

QR-Code: aktuelle Seiten-URL
Falls nicht anders bezeichnet, ist der Inhalt dieses Wikis unter der folgenden Lizenz veröffentlicht: CC Attribution-Noncommercial-Share Alike 3.0 Unported