Both sides previous revision Previous revision Next revision | Previous revision Next revisionBoth sides next revision |
home_server:home_server_setup:kvm [2022-10-01 Sat wk39 22:25] – [Mount a qcow2 image directly] baumkp | home_server:home_server_setup:kvm [2024-02-18 Sun wk07 18:06] – [Change the Disk Allocated Size] baumkp |
---|
*[[https://linuxhint.com/install_kvm_debian_10/|Installing KVM on Debian 10]] | *[[https://linuxhint.com/install_kvm_debian_10/|Installing KVM on Debian 10]] |
*[[https://computingforgeeks.com/how-to-install-kvm-virtualization-on-debian/|How To Install KVM Hypervisor on Debian 11|10]] | *[[https://computingforgeeks.com/how-to-install-kvm-virtualization-on-debian/|How To Install KVM Hypervisor on Debian 11|10]] |
Basically to install the KVM Hypervisor: ''sudo apt install qemu qemu-kvm qemu-system qemu-utils libvirt-clients libvirt-daemon-system virtinst bridge-utils'' bridge-utils is optional. | *[[https://www.cyberciti.biz/faq/install-kvm-server-debian-linux-9-headless-server/|How to install KVM server on Debian 9/10 Headless Server]] |
| Basically to install the KVM Hypervisor: ''sudo apt install qemu-kvm qemu-system qemu-utils libvirt-clients libvirt-daemon-system virtinst bridge-utils'' bridge-utils is optional. |
| |
| *''genisoimage'' is a package to create iso images |
| *''libguestfs-tools'' is a library to access and modify VM disk images |
| *''libosinfo-bin'' is a library with guest operating systems information to assist VM creation |
| |
Use the built-in clone facility: ''sudo virt-clone %%--%%connect=qemu:%%//%%example.com/system -o this-vm -n that-vm %%--%%auto-clone''. | Use the built-in clone facility: ''sudo virt-clone %%--%%connect=qemu:%%//%%example.com/system -o this-vm -n that-vm %%--%%auto-clone''. |
| |
====Windows10 on KVM==== | ====Windows10 on KVM==== |
| I have not used Windows on a VM now since circa 2021. Just no need. I do have a dual boot on my main desk top that I default to Debian testing and can boot to Windows 11 when I need to use Windows based software. My sons all still use Windows exclusively on their computers and game consoles..... So I still have a family MSOffice 365 subscription. This give access to MSoffice and 1TB of MS Cloud each. |
I had poor performance on Windows 7, 8/8.1, and 10 running on KVM a few years back. A large frustration was that I could not seem to get more than 2 CPUs functioning on the Windows VM even though I assigned 4. Performance was very poor, with CPU usage usually saturated with any use and relatively high even when idle. I found out early that Windows has limitations on the number of CPUs that could be used; 1 on Home, 2 on professional and 4 on Workstation and more on Server versions, at least that was my understanding. As I did not have a great need for the Windows VM I did not try too hard and basically did not use. | I had poor performance on Windows 7, 8/8.1, and 10 running on KVM a few years back. A large frustration was that I could not seem to get more than 2 CPUs functioning on the Windows VM even though I assigned 4. Performance was very poor, with CPU usage usually saturated with any use and relatively high even when idle. I found out early that Windows has limitations on the number of CPUs that could be used; 1 on Home, 2 on professional and 4 on Workstation and more on Server versions, at least that was my understanding. As I did not have a great need for the Windows VM I did not try too hard and basically did not use. |
| |
- Create a snapshot of the VM and direct all changes to the snapshot allowing safe backup of main VM file | - Create a snapshot of the VM and direct all changes to the snapshot allowing safe backup of main VM file |
- Active back commit the snapshot and verify back commit worked | - Active back commit the snapshot and verify back commit worked |
| |
| ====KVM Offline Backup==== |
| <fc #ff0000>Note this only works on VMs that are shut down</fc> |
| -''sudo virsh list --all'' to list all KVM virtual machines. |
| -''%%sudo virsh dumpxml VM_name | grep -i "source file"%%'' to list the VM source file location noted in the VM XML file. |
| -''sudo virsh dumpxml vm-name > /path/to/xm_file.xml'' to archive/backup the VM XML definition file. |
| -''sudo cp -p /working/path/VM_image.qcow2 /path/to/'' to archive/move the VM file. |
| -''%%sudo virsh undefine vm-name --remove-all-storage%%'' to undefine the VM and remove its storage. <color #ed1c24>(Be careful with this one!)</color> |
| -''sudo virsh define --file <path-to-xml-file>'' to import (define) a VM from an XML file. |
| |
| |
| References: |
| *[[https://ostechnix.com/export-import-kvm-virtual-machines-linux/|How To Export And Import KVM Virtual Machines In Linux]] |
====kvm back-up links==== | ====kvm back-up links==== |
*[[https://schh.medium.com/backup-and-restore-kvm-vms-21c049e707c1|Backup and Restore KVM Vms]] | *[[https://schh.medium.com/backup-and-restore-kvm-vms-21c049e707c1|Backup and Restore KVM Vms]] |
How to change the amount of disk space assigned to a KVM *[[https://fatmin.com/2016/12/20/how-to-resize-a-qcow2-image-and-filesystem-with-virt-resize/|How to Resize a qcow2 Image and Filesystem with Virt-Resize]] | How to change the amount of disk space assigned to a KVM *[[https://fatmin.com/2016/12/20/how-to-resize-a-qcow2-image-and-filesystem-with-virt-resize/|How to Resize a qcow2 Image and Filesystem with Virt-Resize]] |
*First turn off the virtual machine to be checked | *First turn off the virtual machine to be checked |
*Next find the file location of the firtual machine to be checked | *Next find the file location of the virtual machine to be checked |
*Next query the file: ''sudo qemu-img info /path_vm/vm_name.img'' | *Next query the file: ''sudo qemu-img info /path_vm/vm_name.img'' |
*Next increase the allowed size of the vm disk: ''sudo qemu-img resize /path_vm/vm_name.img +20G'' | *Next increase the allowed size of the vm disk: ''sudo qemu-img resize /path_vm/vm_name.img +20G'' |
*We need to make a backup of the VM disk: ''sudo cp /path_vm/vm_name.img /path_vm/vm_name_backup.img'' | *We need to make a backup of the VM disk: ''sudo cp /path_vm/vm_name.img /path_vm/vm_name_backup.img'' |
| *We can check the file system on the VM: ''%%virt-filesystems --long -h --all -a /path_vm/vm_name.img'' |
| *We the backup VM disk to create a new expanded drive: ''%%sudo virt-resize --expand /dev/sda1 /path_vm/vm_name_backup.img /path_vm/vm_name.img%%'' |
| |
| The ''virt-filesystems'' command may not be installed by default and can be installed with the following ''sudo apt install guestfs-tools'' |
| |
[[https://computingforgeeks.com/how-to-extend-increase-kvm-virtual-machine-disk-size/|How To extend/increase KVM Virtual Machine (VM) disk size]] | [[https://computingforgeeks.com/how-to-extend-increase-kvm-virtual-machine-disk-size/|How To extend/increase KVM Virtual Machine (VM) disk size]] |
| |
The nbd (network block device) kernel module needs to be loaded to mount qcow2 images. | The nbd (network block device) kernel module needs to be loaded to mount qcow2 images. |
*''sudo modprobe nbd max_part=8'' will load it with support for 8 block devices. (If more blocks are required use 16, 32 or 64 as required.) | *''sudo modprobe nbd max_part=16'' will load it with support for 8 block devices. (If more blocks are required use 16, 32 or 64 as required.) |
*Check VMs ''%%sudo virsh list --all%%''. | *Check VMs ''%%sudo virsh list --all%%''. |
*If the VM to be mounted is active shutdown with ''sudo virsh shutdown <domain-name or ID>''. | *If the VM to be mounted is active shutdown with ''sudo virsh shutdown <domain-name or ID>''. |
*Use ''sudo virsh domblklist <domain-name>'' to get the full path and file name to the VM image file. | *Use ''sudo virsh domblklist <domain-name>'' to get the full path and file name to the VM image file. |
*Use ''ls -l /dev/nbd*'' to check if any devices named nbd have already been defined. | *Use ''ls -l /dev/nbd*'' to check if any devices named nbd have already been defined. |
*Use ''sudo qemu-nbd -c /dev/nbd0 <image.qcow2>'' to create the block devices on the VM. | *Use ''sudo qemu-nbd -c /dev/nbd0 <image.qcow2>'' to create the block devices on the VM. |
| *''sudo fdisk /dev/nbd0 -l'' will list the available partitions in /dev/nbd0. |
*Use ''sudo partprobe /dev/nbd0'' to update the kernel device list. | *Use ''sudo partprobe /dev/nbd0'' to update the kernel device list. |
*Use ''ls -l /dev/nbd0*'' to see available partitions on image. | *Use ''ls -l /dev/nbd0*'' to see available partitions on image. |
*[[https://medium.com/@aysadx/linux-nbd-introduction-to-linux-network-block-devices-143365f1901b|linux NBD: Introduction to Linux Network Block Devices]] | *[[https://medium.com/@aysadx/linux-nbd-introduction-to-linux-network-block-devices-143365f1901b|linux NBD: Introduction to Linux Network Block Devices]] |
*[[http://alexeytorkhov.blogspot.com/2009/09/mounting-raw-and-qcow2-vm-disk-images.html|Mounting raw and qcow2 VM disk images]] | *[[http://alexeytorkhov.blogspot.com/2009/09/mounting-raw-and-qcow2-vm-disk-images.html|Mounting raw and qcow2 VM disk images]] |
| *[[https://www.xmodulo.com/mount-qcow2-disk-image-linux.html|How to mount qcow2 disk image on Linux]] |
=====KVM Guest Corrupted - Recovery Options and Related===== | =====KVM Guest Corrupted - Recovery Options and Related===== |
| |