Debian / Ubuntu Tipps mit kvm/virsh
Inhalt
- Online vergrößern der Volumes in einer VM
- High CPU Load auf dem Host-System (ksmd steht in top 5)
- ACPI: Gastsysteme lassen sich nicht über virt-manager oder virsh steuern
- Maschinentyp des Gastes migrieren, wenn veraltet
- grub2 für VMs benutzen ohne UUID
- Mögliche Maschinentypen herausbekommen
- 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
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
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
- 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 -)
- Dateien bearbeiten:
/mnt1/etc/network/interfaces
(IP setzen)/mnt1/etc/udev/rules.d/70-persistent-net.rules
(Einträge zu den Mac-Adressen löschen)/mnt1/etc/hostname
(auf neuen Namen ändern)
- XML-Datei kopieren und anpassen
- mit uuidgen neue uuid erzeugen und eintragen
- neue ID