Kernel-based Virtual Machine (KVM)
Kernel-based Virtual Machine (KVM) (2007, Avi Kivity) is a virtualization module in the Linux kernel that allows the kernel to function as a hypervisor. KVM support dynamic memory management[1] and Live Migration[2] since 2007 (kernel version 2.6.20), among other features.
KVM is included in all mayor distribution including Ubuntu and RHEL (RedHat), RedHat provides 2 version of KVM, the one included with RHEL which allows to run up to 4 VM or the one included with RHV with unlimited VM.[3]
systemd-cgtop can be used for showing control groups resource utilization.
Basic KVM commands[edit]
Config files and directories[edit]
Information[edit]
- Show information by pool:
virsh pool-info YOUR_POOL_NAME virsh pool-listvirsh guestinfo
Operations[edit]
- Editing Virtual Machine configuration:
virsh edit $VM_ID - Create VM_MACHINE:
virsh define MY_XML_VM_DEFINITION.XML[4] - Modifying CPUs:
virsh setvcpus $VM_NAME ([--maximum] [[--config] [--live] | [--current]])// Can be live or offline in the next reboot [5]- To check vcpu info:
virsh vcpuinfo $VM_NAME
- To check vcpu info:
- Modifying Memory:
virsh setmem <vm_name> <memsize> - Connection by console:
virsh console VM_NAME. See also:virt-manager
- Clone a virtual machine:
virt-clone
- Create image:
qemu-img create
- Resize image:
qemu-img resize
- Create domain/virtual machine:
virt-install --autostart --check all=on --name VM_DOMAIN_NAME --memory VM_MEMORY_SIZE --vcpus VM_VCPUs --os-variant ubuntu18.04 --cdrom VM_INSTALLATION_MEDIA --disk /path/to/VM_STORAGE_POOL_NAME/VM_DOMAIN_NAME.qcow2 --noautoconsole --wait VM_CREATION_WAIT_TIME --network VM_NETWORK_SETTINGS virsh migrate
Monitoring[edit]
KVM Networking[edit]
virsh net-listvirsh net-info YOUR_NET_NAMEvirsh net-destroy YOUR_NET_NAME
See also: MacVTap, virbr0, ovirtmgmt, virtio[6] and brctl.
Activities[edit]
- Read KVM Network Performance - Best Practices and Tuning Recommendations [7]
- Learn about KVM Host Networking Configuration Choices https://www.ibm.com/support/knowledgecenter/en/linuxonibm/liaag/wkvm/wkvm_c_net.htm
Storage[edit]
File based (raw or qcow2) or block based.
- List Storage pools:
virsh pool-list[8]virsh pool-list --all
- Show information by pool:
virsh pool-info YOUR_POOL_NAME - List Volumes from a pool:
virsh vol-list YOUR_POOL_NAME - Create pool:(RHEL 6 documentation [9])
virsh pool-define-as --name YOUR_POOL_NAME --type dir --target /your/path/YOUR_POOL_NAME/
virsh pool-build YOUR_POOL_NAME
virsh pool-start YOUR_POOL_NAME
virsh pool-autostart YOUR_POOL_NAME
- Create volume
virsh vol-create-as --format qcow2 --capacity VM_DISK_SIZE --pool VM_STORAGE_POOL_NAME --name VM_SERVER_NAME.qcow2
Snapshots [10][edit]
Snapshots can be offline or live and internal or external:
- RedHat recommend using external snapshots using
virsh snapshot-create-ascommand. [11] - Live snapshot are not supported in RHEL 8[12]
- List snapshots:
virsh snapshot-list $DOMAIN[13] - Create snapshot:
virsh snapshot-create-as --domain {VM-NAME} --name "{SNAPSHOT-NAME}" - Revert snapshot:
virsh snapshot-revert --domain YOUR_DOMAIN --snapshotname YOUR_SNAPSHOT_NAME --running
Hybernate VM[edit]
Performance[edit]
systemd-cgtopcan be used for showing control groups resource utilization.
KVM timeline[edit]
- 2013 KVM virtual machine in ARM architecture Linux Kernel 3.9 in April 2013
- 2009 RHV
- 2007 Live Migration support
Activities[edit]
General[edit]
- Install KVM in an Ubuntu Server following https://help.ubuntu.com/community/KVM/Installation instructions.
- Connect to KVM using Virt Manager (
brew install virt-manager[16] - Create a KVM virtual machine with Ansible: ovirt-RHV module
- Read about raw files and qcow2 differences: https://www.berrange.com/posts/2017/02/10/the-surprisingly-complicated-world-of-disk-image-sizes/
- Read StackOverflow most popular questions https://stackoverflow.com/questions/tagged/kvm?tab=Votes
Snapshots[edit]
- Read KVM virsh external vs internal snapshots: https://rentry.co/644h6
- Read RedHat recommendations: https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/virtualization_deployment_and_administration_guide/sect-Troubleshooting-Workaround_for_creating_external_snapshots_with_libvirt
- Read this guide about handling snapshots: https://www.cyberciti.biz/faq/how-to-create-create-snapshot-in-linux-kvm-vmdomain/
Advanced[edit]
- Extend LVM on qcow2 images: https://www.technomenace.com/2014/08/how-to-extend-lvm-on-qcow2-images/
- Live Migrate a machine between two servers[17].
- Offline Migrate or move a virtual machine between two KVM servers without shared storage[18]:
virsh dumpxmlandvirsh define - Recover a VM using
virt-rescue
- Create Live backups using
virsh blockcommit - Review Bacula Enterprise KVM plugin: http://www.bacula.lat/kvm-plugin-bacula-enterprise-quick-guide/?lang=en
- Review Bacula solution with
bpipe: http://www.bacula.lat/kvm-hot-online-virtual-machines-backup-with-bacula-bpipe/?lang=en - Review Veritas Netbackup support for RHV
Related terms[edit]
- VM-Exits
- Amazon Firecracker
- MacVTap device driver
- Ansible ovirt-RHV module (ovirt_vm)
- KubeVirt
- QEMU Logs
- OVirt and RHV
/dev/kvm- vhost_net kernel module
- KVM switch
- PCI passthrough
- AWS Nitro System
See also[edit]
virtinst(package):virt-install,virt-clone,virt-convertandvirt-xmllibguestfs-tools:virt-sysprep,virt-clone,virt-builder,virt-customize,virt-resize,virt-rescue,virt-sparsify,guestmount,guestfish,virt-inspector,virt-cat,virt-log,virt-df,virt-ls,virt-filesystems,virt-list-filesystems,virt-editvirt-manager,virsh vncdisplay,virt-install- libvirtd:
systemctl status libvirtd,systemctl status libvirt-guests, Libvirt release notes, logs,libvirtd.conf,/etc/libvirt/,/var/log/libvirt/ - QEMU:
qemu-img,qemu-ga,qemu.conf,virsh qemu, QEMU guest agent (qemu-ga), qcow2,qemu-nbd, qemu-img map,qemu-io,/etc/libvirt/qemu.conf, QEMU releases, VENOM,qemu-nbd --help, qemu-system, uses: docker/setup-qemu-action - KVM, Installation, QEMU,
virsh,virtinst,libguestfs-tools, libvirt, qemu, Red Hat Virtualization (RHV), MacVTap, Virtio, oVirt, KVM services, KVM networking, KVM graphics, CPU, KVM on ARM - Virtualization: CPU Virtualization, KVM, Xen, AWS Nitro System, VirtualBox, multipass, containers, Vagrant, Packer, Hyper-V, VMware, Parallels, Bhyve, Virtual machine, IBM LPARs
Text is available under the Creative Commons Attribution-ShareAlike License; additional terms may apply. By using this site, you agree to the Terms of Use and Privacy Policy.
Source: https://en.wikiversity.org/wiki/KVM
- ↑ https://www.linux-kvm.org/page/FAQ#Is_dynamic_memory_management_for_guests_supported.3F
- ↑ https://www.linux-kvm.org/page/Migration
- ↑ https://www.redhat.com/en/topics/virtualization/what-is-KVM
- ↑ https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/6/html/virtualization_administration_guide/section-libvirt-dom-xml-example
- ↑ http://wiki.stoney-cloud.org/wiki/VM_CPU_Hotplug
- ↑ https://wiki.libvirt.org/page/Virtio
- ↑ https://www.ibm.com/support/knowledgecenter/en/linuxonibm/liaag/wkvm/l0wkvm00_2016.htm
- ↑ http://manpages.ubuntu.com/manpages/precise/man1/virsh.1.html#storage%20pool%20commands
- ↑ https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/6/html/virtualization_administration_guide/sect-virtualization-storage_pools-creating-local_directories-virsh
- ↑ http://manpages.ubuntu.com/manpages/xenial/man1/virsh.1.html#snapshot%20commands
- ↑ https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/virtualization_deployment_and_administration_guide/sect-managing_guests_with_the_virtual_machine_manager_virt_manager-managing_snapshots
- ↑ https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html-single/configuring_and_managing_virtualization/index
- ↑ https://www.cyberciti.biz/faq/how-to-create-create-snapshot-in-linux-kvm-vmdomain/
- ↑ https://wiki.libvirt.org/page/Live-disk-backup-with-active-blockcommit
- ↑ https://kashyapc.wordpress.com/2013/01/22/live-backup-with-external-disk-snapshots-and-libvirts-blockpull/
- ↑ https://help.ubuntu.com/community/KVM/VirtManager
- ↑ https://www.berrange.com/posts/2016/05/12/analysis-of-techniques-for-ensuring-migration-completion-with-kvm/
- ↑ https://serverfault.com/questions/434064/correct-way-to-move-kvm-vm
Advertising: