一文告訴你Linux如何配置KVM虛擬化--安裝篇

dream發表於2020-06-25

KVM全稱"Kernel-based Virtual Machine",即基於核心的虛擬機器,在linux內啟用kvm需要硬體,核心和軟體(qemu)支援,這篇文章教你如何配置並安裝KVM虛擬機器.

  • 檢查硬體和系統的相容性

    • 檢查硬體虛擬化:LC_ALL=C lscpu | grep Virtualization
      這行程式碼其中 LC_ALL=C為設定輸出語言用,lscpu輸出CPU資訊,在輸出的CPU資訊裡面查詢“Virtualization”(虛擬化),輸出結果如果有"AMD-V"(AMD CPU) 或者"VT-X"(Intel CPU),則說明你的電腦硬體支援並且已開啟虛擬化,可以下一步
      那如果沒有顯示以上兩種呢,就進入BIOS(或者UEFI)找到虛擬化/virtualization/VT-X/AMD-V一般來說是這四個名字裡面任意一個,當然,如果你的班子BIOS裡面是virtualization裡面有vt-x和vt-d兩個的話,就兩個都開。然後,理論上你就能繼續了,除非,你的硬體 根本不支援虛擬化(除非廠家手動閹割,現在一般不會有這問題,博主的本本一開始買來BIOS裡面就是沒有AMD-V的,後來就是靠BIOS更新加上的)。
      舉個例子:博主linux上的顯示是:Virtualization: AMD-V則證明該電腦支援AMD 的虛擬化技術

    • 檢查系統是否支援lsmod | grep kvm
      這行程式碼告訴你係統是否載入了KVM有關模組,如果有輸出相關模組,請看kvm配置,否則接著看kvm的安裝(kvm基於核心,需要核心模組才能正常工作)

  • KVM 安裝過程
    KVM的依賴項除了核心和核心模組主要有這些:firewalld(防火牆),dnsmasq,ebtables(網路方面),libvirt(虛擬化介面),qemu(虛擬機器本體)。另外,使用bridge-utils可以設定網路卡橋接。
    知道了需要的包,安裝就好了.
    如果你的系統是Centos(RHEL/Fedora同理)你完全可以在安裝的時候就選擇虛擬化伺服器的,如果要手動安裝,那麼需要跑這樣一條命令(CENTOS8/fedora可能需要把yum替換為dnf):
    sudo yum install -y virt-* libvirt bridge-utils qemu qemu-img qemu-kvm,需不需要操作selinux就看著辦,如果因為selinux的原因導致無法開機,那就改,沒問題就不需要動了(博主不是專業的運維。平時主玩ARCH,對這塊不是特別瞭解)

玩Ubuntu系列(ubuntu/deepin/mate/kali……)的同學安裝kvm的話也類似,不過這包名可能和上面有所不同,程式碼如下:
sudo apt install qemu qemu-kvm libvirt-bin bridge-utils

Arch使用者
sudo pacman -S qemu libvirt ebtables dnsmasq firewalld bridge-utils

安裝完軟體包,接下來開啟防火牆和libvirt守護程式
sudo systemctl start firewalld && sudo systemctl start libvirtd需不需要enable看你們自己的需要,如果是虛擬化母機或者經常用到虛擬機器的話,那麼建議enable,開機自動把虛擬化服務啟動。

講完了基礎安裝工作,剩下的就是你如何控制kvm的事情了。圖形化/命令列

圖形化控制KVM一般使用virt-manager(中文名:虛擬系統管理器),剩下的就是圖形化設定的工作了。

嗯,沒錯,就是這個東西,建立虛擬機器的話,只需要點建立虛擬機器按鈕就好了(就是圖上那個亮著的按鈕)。

然後,連線這裡選擇QEMU/KVM,就是使用KVM虛擬機器建立.

    番外內容:[有的同學可能先裝了libvirt和virt-manager後裝qemu的,就會出現沒有連線或者連線裡面沒有KVM的,那麼,在確保kvm服務開啟的狀態下,點選檔案,新增連線。
        ![](https://img2020.cnblogs.com/blog/2045563/202006/2045563-20200625211926555-1690702968.png)
    出來這個頁面,這裡不用動,直接確定,不出意外,你就能匯入KVM的連線了,需要知道的是,如果你之前使用virsh或者qemu命令列管理的話,你能夠在這裡匯入kvm連線,但是,並不能接管原來建立的虛擬機器。]

至於以何種方式建立虛擬機器,就看你需要,不過一般使用第一項使用ISO安裝系統,如果你之前有kvm/qemu的磁碟映象(qcow2),你也可以用第四個(匯入現有磁碟映象).

這裡選擇需要使用的ISO映象檔案.
點選瀏覽彈出這個視窗

然後本地瀏覽選擇映象

選擇CPU/執行記憶體資源

然後建立虛擬硬碟,這裡如果你有現成的qcow2/row映象,你也可以直接拿來用。
番外內容:[需要注意這點:通過libvirt 建立qemu映象的大小是固定的,就是分多少它馬上就吃多少的,不像vmware這樣會動態擴充套件,當然,也可以實現,需要參考下面使用程式碼建立虛擬機器]
然後沒有什麼問題了,就直接點完成,開始安裝系統,安裝系統過程,這裡就不贅述了,至於基礎的管理工作,進去虛擬機器的視窗,點選那個管理按鈕,會進入類似於vmware虛擬機器設定的頁面,在裡面可以進行操作(部分操作需要關機)。

下面是程式碼建立虛擬機器的介紹(高階玩法可能需要手動修改XML檔案,這裡就暫時不介紹了)

  • 首先,你需要使用virsh這個命令來管理虛擬機器,先建立儲存卷(磁碟映象)
    virsh vol-create-as poolname volumename 10GiB --format aw|bochs|raw|qcow|qcow2|vmdk
    一般QEMU/KVM支援的映象為qcow/qcow2/row
    或者使用qemu-img來建立映象
    敲黑板:qemu-img除了可以建立映象以外,也和virsh一樣支援映象修改,另外,qemu-img建立映象可以選擇預分配模式,從而解決上面使用圖形化映象過大的問題.
    qemu-img create -f 'qcow2' -o preallocation=off /home/udream/test.qcow2 10G 這樣就可以建立一個10G大小的,關閉預分配的qcow2映象,這個映象檔案沒安裝系統之前的大小是192.2Kb,預設直接建立的大小為10G
    然後,有了磁碟映象,就可以建立虛擬機器了
    舉例程式碼如下:
             virt-install  \
  -        --name test \
           --memory 4096             \
           --vcpus=2,maxvcpus=4      \
           --cpu host                \
           --cdrom $HOME/test.iso \
           --disk  /home/udream/test.qcow2,size=10GiB  \
           --network user            \
           --virt-type kvm   

這段程式碼指定了虛擬機器名字test,記憶體1g,CPU最少2核最大4核,安裝盤位置:$HOME/test.iso,盤的大小,網路型別,虛擬化介面KVM,使用之前建立的虛擬盤 /home/udream/test.qcow2 大小 10G

  建立完成虛擬機器以後使用```virsh start 虛擬機器名字```啟動虛擬機器
  關閉虛擬機器把start改為shutdown,強制關機為destory,重啟是reboot
  管理虛擬網路,使用virsh net-後面跟操作(start/destory/create……)
  當然,還有pool設定儲存池,vol設定儲存卷,snapshot設定快照,具體的,因為字數原因(怕某些同學太長不看),就不一個個碼了,你可以敲virsh --help檢視具體幫助資訊,不過。這幾個最常用的也就是create/start/stop/destory/list了,
  這裡舉個例子,啟動虛擬網路:```virsh net-start 虛擬網路名``` 建立儲存池```virsh pool-create XML描述檔名```,其他的命令可以按照這樣的方式操作,下一篇是virsh命令的具體玩(配)法(制)介紹。

這次就講到這裡了,本次內容原創純手碼,部分命令為了確認正確性,參考了arch wiki,測試環境為ARCHLINUX 5.7.4-arch1-1 桌面環境kde plasma。

相關文章