Centos KVM

一、Install kvm Virtual Machine Manager

yum -y install qemu-kvm qemu-img virt-manager libvirt libvirt-python libvirt-client virt-install virt-viewer


Start the libvirtd service:

# systemctl enable libvirtd
# systemctl start libvirtd

 二、Configure bridged networking

三、建立一個 240G 的 qcow2 格式 image

qemu-img create -f qcow2 Win10.qcow2 240G

動態調整大小的硬碟檔
List all VMs

# virsh list --all

四、使用圖形介面建立 VM

聯擬機管理員
新增VM

五、convert VirtualBox vdi to KVM qcow2

qemu-img convert -f vdi -O qcow2 avm.vdi avm.qcow2

六、virt-host-validate

[root@t310f3 ~]# virt-host-validate
  QEMU: Checking for hardware virtualization                                 : PASS
  QEMU: Checking if device /dev/kvm exists                                   : PASS
  QEMU: Checking if device /dev/kvm is accessible                            : PASS
  QEMU: Checking if device /dev/vhost-net exists                             : PASS
  QEMU: Checking if device /dev/net/tun exists                               : PASS
  QEMU: Checking for cgroup 'memory' controller support                      : PASS
  QEMU: Checking for cgroup 'memory' controller mount-point                  : PASS
  QEMU: Checking for cgroup 'cpu' controller support                         : PASS
  QEMU: Checking for cgroup 'cpu' controller mount-point                     : PASS
  QEMU: Checking for cgroup 'cpuacct' controller support                     : PASS
  QEMU: Checking for cgroup 'cpuacct' controller mount-point                 : PASS
  QEMU: Checking for cgroup 'cpuset' controller support                      : PASS
  QEMU: Checking for cgroup 'cpuset' controller mount-point                  : PASS
  QEMU: Checking for cgroup 'devices' controller support                     : PASS
  QEMU: Checking for cgroup 'devices' controller mount-point                 : PASS
  QEMU: Checking for cgroup 'blkio' controller support                       : PASS
  QEMU: Checking for cgroup 'blkio' controller mount-point                   : PASS
  QEMU: Checking for device assignment IOMMU support                         : PASS
  QEMU: Checking if IOMMU is enabled by kernel                               : WARN (IOMMU appears to be disabled in kernel. Add intel_iommu=on                  to kernel cmdline arguments)
   LXC: Checking for Linux >= 2.6.26                                         : PASS
   LXC: Checking for namespace ipc                                           : PASS
   LXC: Checking for namespace mnt                                           : PASS
   LXC: Checking for namespace pid                                           : PASS
   LXC: Checking for namespace uts                                           : PASS
   LXC: Checking for namespace net                                           : PASS
   LXC: Checking for namespace user                                          : PASS
   LXC: Checking for cgroup 'memory' controller support                      : PASS
   LXC: Checking for cgroup 'memory' controller mount-point                  : PASS
   LXC: Checking for cgroup 'cpu' controller support                         : PASS
   LXC: Checking for cgroup 'cpu' controller mount-point                     : PASS
   LXC: Checking for cgroup 'cpuacct' controller support                     : PASS
   LXC: Checking for cgroup 'cpuacct' controller mount-point                 : PASS
   LXC: Checking for cgroup 'cpuset' controller support                      : PASS
   LXC: Checking for cgroup 'cpuset' controller mount-point                  : PASS
   LXC: Checking for cgroup 'devices' controller support                     : PASS
   LXC: Checking for cgroup 'devices' controller mount-point                 : PASS
   LXC: Checking for cgroup 'blkio' controller support                       : PASS
   LXC: Checking for cgroup 'blkio' controller mount-point                   : PASS
   LXC: Checking if device /sys/fs/fuse/connections exists                   : PASS
[root@t310f3 ~]# grub2-editenv - set "$(grub2-editenv - list | grep kernelopts) intel_iommu=on"
[root@t310f3 ~]#

七、kvm backup and restore

virsh list --all
virsh list --all
 Id   名稱      狀態
----------------------
 -    Centos7   關機
 -    Centos8   機
 -    Win10     關機

virsh shutdown Centos8

將 VM 的資料備份成 XML 檔案

virsh dumpxml Centos7 > /home/backup/kvm/Centos7.xml

virsh dumpxml Centos7
<domain type='kvm'>
  <name>Centos7</name>
  <uuid>6f7b0cbf-32cd-44ac-b1b2-187f12cefb24</uuid>
  <metadata>
    <libosinfo:libosinfo xmlns:libosinfo="http://libosinfo.org/xmlns/libvirt/domain/1.0">
      <libosinfo:os id="http://centos.org/centos/7.0"/>
    </libosinfo:libosinfo>
  </metadata>
  <memory unit='KiB'>8388608</memory>
  <currentMemory unit='KiB'>4194304</currentMemory>
  <vcpu placement='static'>4</vcpu>
  <os>
    <type arch='x86_64' machine='pc-q35-rhel8.2.0'>hvm</type>
    <boot dev='hd'/>
  </os>
  <features>
    <acpi/>
    <apic/>
    <vmport state='off'/>
  </features>
  <cpu mode='host-model' check='partial'/>
  <clock offset='utc'>
    <timer name='rtc' tickpolicy='catchup'/>
    <timer name='pit' tickpolicy='delay'/>
    <timer name='hpet' present='no'/>
  </clock>
  <on_poweroff>destroy</on_poweroff>
  <on_reboot>restart</on_reboot>
  <on_crash>destroy</on_crash>

...
...
略
virsh domblklist Centos7

 Target   Source
------------------------------------------------
 vda      /home/storage/Centos7OS.qcow2
 vdb      /home/storage/Centos7OS_1TDisk.qcow2

八、KVM restore

virsh undefine Centos7
cp /home/kvm/Centos7.qcow2 /var/lib/libvirt/images
virsh define -file /home/kvm/Centos7.xml
virsh start Centos7

九、qemu-img convert

qemu-img convert -f qcow2 -O qcow2 Rocky8.5_SSP(來源) Rocky8.5_SSP2(目的)

檔案大小從 201G 轉成 6

preallocation=metadata

qemu-img create -f qcow2 -o preallocation=metadata /home/kvm/5G_metadata.qcow2 5G

建一個檔案大小為5G 的映象檔 5G_metadata.qcow2

檔案 metadata.qcow2 也是一個5G 容量大小的映象檔