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

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服務開啟的狀態下,點擊文件,添加連接。
        ![](//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。

Tags: