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

来源:https://www.cnblogs.com/udream/archive/2020/06/25/13193187.html
-Advertisement-
Play Games

KVM全稱"Kernel-based Virtual Machine",即基於內核的虛擬機,在linux內啟用kvm需要硬體,內核和軟體(qemu)支持,這篇文章教你如何配置並安裝KVM虛擬機. 檢查硬體和系統的相容性 檢查硬體虛擬化:LC_ALL=C lscpu | grep Virtualiza ...


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。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...