KVM虛擬化配置

KVM虛擬化

虛擬化概念

KVM虛擬化概念詳講

虛擬化配置

  • 首先開啟虛擬化的支持 並且增加一個50g的硬盤

image-20210318080747269

  • free查看內存 image-20210318081031204

  • grep -Ei 'vmx|svm' /proc/cpuinfo查看虛擬機是支持虛擬化

image-20210317084204026

  • lsblk 查看是否增加了一塊新的磁盤 這裡我們看到新增了一塊50g的內存

image-20210317084245190

  • 接下來我們格式化硬盤格式化為ext4格式 mkfs.ext4 /dev/sdb
  • blkid /dev/sdb查看磁盤信息

image-20210317084320436

  • 創建掛載目錄 mkdir /kvm_data
  • mount /dev/sdb /kvm_data 掛載到/kvm_data
  • 為使/kvm_data開機自動掛載 需要修改『/etc/fstab』
    • 添加 /dev/sdb /kvm_data ext4 defaults 0 0
  • 關閉防火牆 和 seLinux

安裝KVM

  • yum install -y virt-* libvirt bridge-utils qemu-img

啟動KVM

  • 配置網卡 首先複製原先的網卡 image-20210318082206762

  • 接下來修改ifcfg-bro

    • TYPE="Bridge"
      BOOTPROTO="none"
      DEFROUTE="yes"
      NAME="bro"
      DEVICE="bro"
      ONBOOT="yes"
      IPADDR="192.168.207.143"
      NETMASK="255.255.255.0"
      GATEWAY="192.168.207.2"
      DNS1=114.114.114.114
      DNS2=8.8.8.8
      
  • 修改ifcfg-ens33

    • TYPE="Ethernet"
      NAME="ens33"
      DEVICE="ens33"
      ONBOOT="yes"
      BOOTPROTO="none"
      BRIDGE="bro"
      
  • systemctl restart network 重啟網卡

image-20210317085553750

啟動libvirtd服務

首先檢查KVM模塊是否加載,命令如下(lsmod命令用於顯示已載入系統的模塊):

  • lsmod|grep kvm

    • image-20210317085616209
  • systemctl start libvirtd開啟libvirtd

image-20210317085654011

  • brctl show 查看有兩個網卡

    • image-20210317085731624
  • 上傳Centos7到/tmp/目錄下

  • virt-install --name=test --memory=512,maxmemory=1024
    --vcpus=1,maxvcpus=2 --os-type=linux --os-variant=rhel7
    --location=/tmp/CentOS-7-x86_64-DVD-1511.iso
    --disk path=/kvm_data/test.img,size=10 
    --bridge=br0
    --graphics=none
    --console=pty,target_type=serial 
    --extra-args="console=tty0 console=ttyS0"
    
  • 輸入上面的命令開始安裝虛擬機

  • 命令解釋:

     --name:指定虛擬機的名稱。
     --memory:指定分配給虛擬機的內存資源大小。
     maxmemory:指定可調節的最大內存資源大小,因為KVM支持熱調整虛擬機的資源。
     --vcpus:指定分配給虛擬機的CPU核心數量。
     maxvcpus:指定可調節的最大CPU核心數量。
     --os-type:指定虛擬機安裝的操作系統類型。
     --os-variant:指定系統的發行版本。
     --location:指定ISO鏡像文件所在的路徑,支持使用網絡資源路徑,也就是說可以使用URL。
     --disk path:指定虛擬硬盤所存放的路徑及名稱,size則是指定該硬盤的可用大小,單位是G。
     --bridge:指定使用哪一個橋接網卡,也就是說使用橋接的網絡模式。
     --graphics:指定是否開啟圖形。
     --console:定義終端的屬性,target_type 則是定義終端的類型。
     --extra-args:定義終端額外的參數。
    
  • 開機後進入設置界面 對時區 root密碼等進行設置

虛擬機管理

  • virsh list 查看虛擬機列表 只能看見已經開啟的虛擬機

image-20210317101516415

  • virsh list --all查看所有的虛擬機
  • virsh console test進入指定的虛擬機

vrish常用命令,命令如下:

virsh shutdown test 
//關閉虛擬機
virsh start test 
//開啟虛擬機
virsh destroy test
//類似stop,這個是強制停止
virsh undefine test
//徹底銷毀虛擬機,會刪除虛擬機配置文件,virsh list --all就看不到
virsh autostart test
//宿主機開機該虛擬機也開機
virsh autostart --disable test
//解除開機啟動
virsh suspend test
//掛起
virsh resume test
//恢復

克隆虛擬機

  • 克隆虛擬機之前必須要關閉虛擬機

  • virt-clone --original test --name test02 --file

image-20210317102111130

 --original:指定克隆源虛擬機。
 --name:指定克隆後的虛擬機名字。
 --file:指定目標虛擬機的虛擬磁盤文件
  • 查看虛擬機是否增加 test02 ls /etc/libvirt/qemu/

image-20210317102254381

快照

​ 快照是在我們使用Vmware的時候,很常用的一個功能。它可以回到之前的某一狀態。在KVM中RAW格式的虛擬磁盤不支持做快照,qcow2支持。

  • 創建快照 virsh snapshot-create test

  • qemu-img info /kvm_data/test.img 查看test.img信息 並且同時查看 快照列表

    • image-20210317102412346
  • virsh snapshot-list test 列出所有快照

    • image-20210317102445073
  • virsh snapshot-current test 查看當前快照詳細信息

  • ls /var/lib/libvirt/qemu/snapshot/test/查看所有快照配置文件

  • 恢復指定快照 virsh snapshot-revert test 1588485687

  • 刪除指定快照 virsh snapshot-delete test 1588485687

磁盤格式

  • qemu-img info /kvm_data/test.img 查看磁盤格式信息

    • image-20210317102757799
  • 創建2 GB的RAW格式磁盤 qemu-img create -f raw /kvm_data/test_1.img 2G

    • -f 指定磁盤類型 後面跟3個參數 磁盤類型、磁盤文件、大小
  • qemu-img convert -O qcow2 /kvm_data/test_1.img /kvm_data/test_1.qcow2 將磁盤轉換為qcow2格式

    • convert -O 進行格式轉換
  • ls -lh /kvm_data/test_1.img

image-20210317103717474

可以看到qcow2文件比較小,raw文件大小和我們指定空間大小一樣是2G raw格式的磁盤性能比qcow2要好,但是raw格式的磁盤無法做快照

  • qemu-img convert -O raw /kvm_data/test02.img /kvm_data/test02_2.img 將test02轉換為raw格式

    • image-20210317103943312
  • 更改磁盤格式和文件路徑,然後啟動test02虛擬機,命令如下: virsh edit test02

    • /找到上面這部分將qcow修改為raw,/kvm_data/test02.img改為

image-20210318085418170

磁盤擴容

  • 首先擴容RAW格式,命令如下: qemu-img resize /kvm_data/test02_2.img +2G

image-20210317105727178

  • qemu-img info /kvm_data/test02_2.img 查看磁盤信息 大小增加了2g

image-20210317105820954

  • 進入虛擬機 virsh console test02 使用 fdisk -l 查看磁盤列表

image-20210317110132772

  • 發現這時虛擬機的磁盤大小還是10g 所以我們需要重新啟動虛擬機後 再進行測試

image-20210317110147004

  • 這樣我們看到已經變為12g了 接下來對該磁盤進行分區 fdisk /dev/vda

  • 分區完成後 使用p查看磁盤列表:

image-20210317110608577

  • 除了對已有磁盤擴容外,還可以額外增加磁盤,命令如下:
    • qemu-img create -f raw /kvm_data/test02_3.raw 5G 創建一塊新的5g的磁盤
  • virsh edit test02 編輯虛擬機test02
  • 主要修改source file名稱為/kvm_data/test02_3.raw,target dev改為vdb,slot改為0x09,不與0x06衝突即可。

image-20210317111328412

  • 關閉虛擬機進行測試:

image-20210317111522073

接下來,我們擴容qcow2格式的磁盤,命令如下:

  • qemu-img resize /kvm_data/test.img +2G 若提示qemu-img: Can't resize an image which has snapshots,需要刪除快照

  • 使用命令 qemu-img info test.img 查看虛擬機信息

image-20210317111750108

  • 重啟虛擬機 進行查看 fdisk -l

image-20210317112528721

調整CPU內存、網卡

  • 查看虛擬機配置信息 virsh dominfo test
  • 修改配置文件 virsh edit test

image-20210317141143424

  • 再次查看配置信息 virsh dominfo test

image-20210317141031960

  • 還可以動態修改 內存和cpu信息 動態修改重啟後失效
    • virsh setmem test 800m 修改動態內存
    • virsh setvcpus test 2 修改cpu數 只能增加不能減少
  • 再次查看虛擬機配置信息

image-20210317141412875

  • virsh dumpxml test > /etc/libvirt/qemu/test.xml把配置寫到配置文件中

配置網卡

  • virsh domiflist test 列出網卡列表

image-20210317141550289

  • 增加一塊新的網卡,並設置為NAT網絡模式(virbr0類似VMware的VMnet8),這裡如果寫–source br0,則網絡模式為橋接,命令如下:
    • virsh attach-interface test --type bridge --source virbr0
    • virsh domiflist test

image-20210317141807147

  • virsh dumpxml test > /etc/libvirt/qemu/test.xml把配置文件進行備份

  • 進入虛擬機查看網卡信息 ip a

image-20210317150816752

  • 此方法在重啟虛擬機後 網卡自動消失 如果想要網卡永久存在 需要將網卡添加到配置文件中
    • image-20210318091356364

遷移虛擬機

  • 遷移虛擬機必須要先關閉
    • virsh domblklist test 查看虛擬磁盤所在目錄
  • virsh dumpxml test > /etc/libvirt/qemu/test03.xml 如果是遠程虛擬機需要把該文件拷貝到遠程上去
  • rsync -av /kvm_data/test.img /kvm_data/test03.img 如果是遷移到遠程,則需要把該磁盤文件拷貝到遠程機器上

image-20210317151623330

  • 因為是遷移到本機,配置文件用的是test子機的配置,不改會有衝突,所以需要修改該文件。如果是遠程機器不用修改,命令如下:

    • vi /etc/libvirt/qemu/test03.xml
    • image-20210318091754643
  • virsh define /etc/libvirt/qemu/test03.xml 定義新的虛擬機

  • virsh list --all查看所有的虛擬機

image-20210317151910428