GästebuchIhr Eintrag in unser Gästebuch KontaktNehmen Sie Kontakt mit den Autoren auf ArchivAlle Unixwerk- Artikel seit 2003
28. März 2014

Debian / Ubuntu Tipps mit kvm/virsh

Inhalt

  1. Online vergrößern der Volumes in einer VM
  2. High CPU Load auf dem Host-System (ksmd steht in top 5)
  3. ACPI: Gastsysteme lassen sich nicht über virt-manager oder virsh steuern
  4. Maschinentyp des Gastes migrieren, wenn veraltet
  5. grub2 für VMs benutzen ohne UUID
  6. Mögliche Maschinentypen herausbekommen
  7. Kopieren einer VM

 

1. Online vergrößern der Volumes in einer VM

Host:

Erweitern eines Volumes au 10 GB:

# lvextend -L 10g /dev/vg00/<lvol name>

Wichtig: die size muss in 1k Blöcken angegeben werden.

Für 10 GB: 10*1024*1024 = 10485760

virsh # blockresize --domain car --path /dev/vg00/lv_car_root  --size 10485760
Block device '/dev/vg00/lv_car_root' is resized
virsh # quit

VM:

Erweitert /dev/vdc auf 10 GB

# resize2fs /dev/vdc

Das wars.

 

2. High CPU Load auf dem Host-System (ksmd steht in top 5)

KSM -> Kernel shared Memory: Bei VM's wird der Memory effizienter genutzt, kann manchmal aber zu Problemen bei der Load führen. Dann kann mit den Parametern KSM_MONITOR_INTERVAL=480 in msec und KSM_SLEEP_MSEC=50 experimentiert werden.

Konfig-Datei anpassen:

Ubuntu:

/etc/default/qemu-kvm

   KSM_ENABLED=1
   KSM_MONITOR_INTERVAL=480
   KSM_SLEEP_MSEC=50
   KSM_NPAGES_MAX=256
   KSM_THRES_CONST=1024

Jetzt noch den Dienst neu starten:

# stop qemu-kvm
# start qemu-kvm

Bei anderen Linux Distributionen in der Datei /etc/ksmtuned.conf die Parameter anpassen oder die Hersteller Docu lesen:

KSM ganz ausschalten:

# service ksmtuned stop
# echo 0 >/sys/kernel/mm/ksm/run

Disable auf RedHat

# service ksm stop
# service ksmtuned stop
# chkconfig ksm off
# chkconfig ksmtuned off

 

3. ACPI: Gastsysteme lassen sich nicht über virt-manager oder virsh steuern

in der XML-Datei muss auf dem Host acpi aktiviert sein:

<acpi/>

Auf Gastsystem:

# apt-get install acpid

 

4. Maschinentyp des Gastes migrieren, wenn veraltet

# libvirt-migrate-qemu-machinetype -t pc-1.0 <virthostname>

 

5. grub2 für VMs benutzen ohne UUID

Unter der Ubuntu-Default-Installation installiert sich der grub2 so, dass er über die UUID booten will. Das kann man vermeiden, indem man die Datei /etc/default/grub editiert und folgenden Eintrag einkommentiert:

# Uncomment if you don't want GRUB to pass "root=UUID=xxx" parameter to Linux
GRUB_DISABLE_LINUX_UUID=true

Danach noch ein

$ sudo update-grub

und es sollte gehen...

 

6. Mögliche Maschinentypen herausbekommen

Der Befehl "kvm -M ?" gibt die entsprechende Information:

# kvm -M ?
Supported machines are:
none                 empty machine
pc                   Standard PC (alias of pc-1.2)
pc-1.2               Standard PC (default)
pc-1.1               Standard PC
pc-1.0               Standard PC
pc-0.15              Standard PC
pc-0.14              Standard PC
pc-0.13              Standard PC
pc-0.12              Standard PC
pc-0.11              Standard PC, qemu 0.11
pc-0.10              Standard PC, qemu 0.10
isapc                ISA-only PC

 

7. Kopieren einer VM

s.o. Der Grub sollte auf das Device zeigen und nicht auf die UUID, ansonsten im Host UUID mit blkid auslesen...

root@test:/etc/libvirt/qemu# lvs
  LV                    VG   Attr   LSize   Origin Snap%  Move Log Copy%  Convert
  lv_boot_lucid_test1   vg00 -wi-ao 256,00m
  lv_isoimages          vg00 -wi-ao   3,00g
  lv_root               vg00 -wi-ao   7,45g
  lv_swap_lucid_test1   vg00 -wi-a- 512,00m
  lv_system_lucid_test1 vg00 -wi-a-   6,00g
  lv_tmp                vg00 -wi-ao 952,00m
root@test:/etc/libvirt/qemu# lvcreate -L 256M -n lv_boot_lucid_test2 /dev/vg00
  Logical volume "lv_boot_lucid_test2" created
root@test:/etc/libvirt/qemu# dd if=/dev/vg00/lv_boot_lucid_test1 of=/dev/vg00/lv_boot_lucid_test2
524288+0 Datensätze ein
524288+0 Datensätze aus
268435456 Bytes (268 MB) kopiert, 15,6021 s, 17,2 MB/s
root@test:/etc/libvirt/qemu# lvcreate -n lv_system_lucid_test2 -L 6G /dev/vg00
  Logical volume "lv_system_lucid_test2" created
root@test:/etc/libvirt/qemu# lvcreate -n lv_swap_lucid_test2 -L 512M /dev/vg00
  Logical volume "lv_swap_lucid_test2" created

Jetzt Daten kopieren und Dateien anpassen

  1. Daten kopieren:
    root@test:/etc/libvirt/qemu# mount /dev/vg00/lv_system_lucid_test1 /mnt
    root@test:/etc/libvirt/qemu# mount /dev/vg00/lv_system_lucid_test2 /mnt1
    root@test:/etc/libvirt/qemu# cd /mnt
    root@test:/mnt# tar cf - * | (cd /mnt1;tar xf -)
    
  2. Dateien bearbeiten:
    1. /mnt1/etc/network/interfaces (IP setzen)
    2. /mnt1/etc/udev/rules.d/70-persistent-net.rules (Einträge zu den Mac-Adressen löschen)
    3. /mnt1/etc/hostname (auf neuen Namen ändern)
       
  3. XML-Datei kopieren und anpassen
    1. mit uuidgen neue uuid erzeugen und eintragen
    2. neue ID