Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
home_server:home_server_setup:kvm [2022-10-01 Sat wk39 22:30] – [Mount a qcow2 image directly] baumkphome_server:home_server_setup:kvm [2024-02-18 Sun wk07 18:09] (current) – [Change the Disk Allocated Size] baumkp
Line 6: Line 6:
   *[[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''.
Line 44: Line 49:
  
 ====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.  
  
Line 66: Line 72:
     - 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]]
Line 105: Line 124:
 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%%'', <fc #ff0000>//**we can also use this to confirm the correct partition to expand**//</fc>.
 +    *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]]
Line 147: Line 170:
  
 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.