只用VMware開虛擬機?來了解一下更強大KVM虛擬化技術(shù)
1. 前言
本文講解KVM虛擬化的優(yōu)勢以及如何在Ubuntu 20.04 系統(tǒng)上安裝KVM虛擬化套件。
先來了解了一下KVM虛擬化技術(shù):
以下引用摘自紅帽官網(wǎng):
1.1 KVM是什么?
KVM是基于內(nèi)核的虛擬機 Kernel-based Virtual Machine(KVM)是一種內(nèi)建于 Linux® 中的開源虛擬化技術(shù)。具體而言,KVM 可幫助您將 Linux 轉(zhuǎn)變?yōu)樘摂M機監(jiān)控程序,使主機計算機能夠運行多個隔離的虛擬環(huán)境,即虛擬客戶機或虛擬機(VM)。
KVM 是 Linux 的一部分。Linux 2.6.20 或更新版本包括 KVM。KVM 于 2006 年首次公布,并在一年后合并到主流 Linux 內(nèi)核版本中。由于 KVM 屬于現(xiàn)有的 Linux 代碼,因此它能立即享受每一項新的 Linux 功能、修復和發(fā)展,無需進行額外工程。
Ubuntu 20.04如何安裝和創(chuàng)建KVM虛擬機
1.2 Linux KVM虛擬化有什么優(yōu)勢?
安全性: KVM 利用安全增強型 Linux(SELinux) 和安全虛擬化(sVirt) 組合來加強虛擬機的安全性和隔離性。SELinux 在虛擬機周圍建立安全邊界。sVirt 則擴展 SELinux 的功能,使強制訪問控制 (MAC)安全機制應用到客戶虛擬機,并且預防手動標記錯誤。
存儲:KVM 能夠使用 Linux 支持的任何存儲,包括某些本地磁盤和網(wǎng)絡附加存儲(NAS)。還可以利用多路徑 I/O 來增強存儲并提供冗余能力。KVM 還支持共享文件系統(tǒng),因此虛擬機鏡像可以由多個主機共享。磁盤鏡像支持精簡置備,可以按需分配存儲,不必預先備妥一切。
硬件支持:KVM 可以使用多種多樣的認證 Linux 兼容硬件平臺。由于硬件供應商經(jīng)常助力內(nèi)核開發(fā),所以 Linux 內(nèi)核中通常能快速采用最新的硬件功能。
內(nèi)存管理:KVM 繼承了 Linux 的內(nèi)存管理功能,包括非統(tǒng)一內(nèi)存訪問和內(nèi)核同頁合并。虛擬機的內(nèi)存可以交換,也可通過大型宗卷支持來提高性能,還可由磁盤文件共享或支持。
實時遷移:KVM 支持實時遷移,也就是能夠在物理主機之間移動運行中的虛擬機,而不會造成服務中斷。虛擬機保持開機狀態(tài),網(wǎng)絡連接保持活躍,各個應用也會在虛擬機重新定位期間正常運行。KVM 也會保存虛擬機的當前狀態(tài),從而存儲下來供日后恢復。
性能和可擴展性:KVM 繼承了 Linux 的性能,針對客戶機和請求數(shù)量的增長進行擴展,滿足負載的需求。KVM 可讓要求最苛刻的應用工作負載實現(xiàn)虛擬化,而這也是許多企業(yè)虛擬化設(shè)置的基礎(chǔ),如數(shù)據(jù)中心和私有云等(通過 OpenStack®)。
調(diào)度和資源控制:在 KVM 模型中,虛擬機是一種 Linux 進程,由內(nèi)核進行調(diào)度和管理。通過 Linux 調(diào)度程序,可對分配給 Linux 進程的資源進行精細的控制,并且保障特定進程的服務質(zhì)量。在 KVM 中,這包括完全公平的調(diào)度程序、控制組、網(wǎng)絡命名空間和實時擴展。
更低延遲,更高優(yōu)先級: Linux 內(nèi)核提供實時擴展,允許基于虛擬機的應用以更低的延遲、更高的優(yōu)先級來運行(相對于裸機恢復)。內(nèi)核也將需要長時間計算的進程劃分為更小的組件,再進行相應的調(diào)度和處理。
了解完KVM的特性與優(yōu)勢后,我們開始在Linux系統(tǒng)上安裝KVM套件和嘗試啟動一臺虛擬機。
2. 先檢查我們自己服務器的硬件條件
2.1 檢查CPU是否支持虛擬化
我們先檢查本機CPU是否可以支持虛擬化。
- grep -Eoc '(vmx|svm)' /proc/cpuinfo
輸出結(jié)果
- 96
Ubuntu 20.04檢查CPU是否支持虛擬化
我的輸出結(jié)果表明,被匹配了96次。為什么是96次呢?因為我的服務器的每個CPU都帶虛擬化,共96個CPU,每個CPU都匹配一次。所以在每臺機器上執(zhí)行該命令都可能不一樣。只要輸出結(jié)果大于0即表明您的CPU支持虛擬化。
注:Linux系統(tǒng)上的CPU數(shù)量與CPU的線程數(shù)一致,即一個線程數(shù)一個CPU
2.2 檢查主板是否開啟虛擬化
CPU支持虛擬化就可以正常使用KVM加速功能了嗎?不一定的,我們還需要在主板BIOS上開啟虛擬化的功能。
使用下面的指令檢查KVM加速是否可用。
先安裝檢查工具:
Ubuntu系統(tǒng)執(zhí)行以下命令:
- sudo apt update && sudo apt install cpu-checker -y
Ubuntu 20.04安裝KVM加速檢測套件
筆者在CentOS系統(tǒng)上查找kvm-ok命令對應的軟件包時,被提示所有EPEL倉庫移除了該命令對應的軟件包。
查找kvm-ok命令對應的軟件包
- yum provides kvm-ok
查找kvm-ok命令對應的軟件包
輸出結(jié)果:
- https://centos.anexia.at/epel/7/x86_64/repodata/83cce7d719a366a5ebc50fd9a1ff70f575d9df83a6994f948f582850213897f7-filelists.sqlite.bz2: [Errno 14] HTTPS Error 404 - Not Found
提示找不到文件。
Ubuntu 安裝完成后,執(zhí)行以下命令:
- kvm-ok
Ubuntu 20.04檢測KVM虛擬化加速是否已經(jīng)啟用
我的服務器上輸出的結(jié)果如下:
- INFO: /dev/kvm exists
- KVM acceleration can be used
表明kvm加速可用。
3. 安裝KVM虛擬化套件
確認CPU和主板都可支持后。接下來安裝kvm虛擬化套件:
Ubuntu系統(tǒng):
- sudo apt install qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils virtinst virt-manager -y
qemu-kvm: 提供硬件底層虛擬化。
libvirt-daemon-system: 為 libvirt作為系統(tǒng)服務的守護程序運行。
libvirt-clients: 為不同的虛擬機提供長期穩(wěn)定的C API
bridge-utils:提供網(wǎng)絡橋接功能
virtinst: 為libvirt創(chuàng)建虛擬機提供一系列的命令行工作
virt-manager: KVM虛擬機管理圖形界面,如果服務器沒有安裝圖形化界面,沒有必要安裝它。
檢查libvirtd是否正在運行:
- sudo systemctl is-active libvirtd
輸出結(jié)果:
- active
表明我的服務器上正在運行l(wèi)ibvirtd
想要創(chuàng)建和管理虛擬機,你需要添加你的用戶到libvirt 和 kvm用戶組。輸入:
- sudo usermod -aG libvirt $USER
- sudo usermod -aG kvm $USER
如果不把用戶加入組中,那就要在每條命令之前添加sudo獲取更高的權(quán)限。
4. 查看虛擬網(wǎng)絡
查看虛擬網(wǎng)橋,您可以理解為一個多接口的虛擬交換機:
- brctl show
查看虛擬網(wǎng)絡
我的服務器輸出結(jié)果:
該網(wǎng)橋用于為虛擬機提供連接物理網(wǎng)絡的功能,即虛擬機可以訪問其它機器,其它機器也可以直接訪問它。
但本文不討論它,因為接下來我只演示NAT模式。
5. 創(chuàng)建KVM虛擬機
先準備好操作系統(tǒng)的ISO鏡像文件:
我已經(jīng)準備好了CentOS 7.8的安裝鏡像,它的位置是:
- /var/lib/libvirt/images/CentOS-7-x86_64-Minimal-2003.iso
先規(guī)劃好虛擬機參數(shù):
- 名字:centos7_2003
- 內(nèi)存:4096M
- CPU:2
- 類型:linux
- 模版:centos7.0
- 虛擬顯示器:VNC,定義密碼,定義端口號5911
- 網(wǎng)絡模式:NAT
- 虛擬磁盤文件:/var/lib/libvirt/images/CentOS7.qcow2
- ISO安裝鏡像: /var/lib/libvirt/images/CentOS-7-x86_64-Minimal-2003.iso
命令行創(chuàng)建:
- sudo virt-install --name=centos7_2003 --ram=4096 --vcpus=2 --virt-type=kvm --os-type=linux --os-variant=centos7.0 --network default,model=virtio --graphics=vnc,password=linuxrumen.com,port=5911,listen=0.0.0.0 --noautoconsole --accelerate --cdrom=/var/lib/libvirt/images/CentOS-7-x86_64-Minimal-2003.iso --disk path=/var/lib/libvirt/images/CentOS7.qcow2,device=disk,format=qcow2,bus=virtio,cache=writeback,size=40
在Ubuntu 20.04 上創(chuàng)建KVM虛擬機
輸出以下結(jié)果即表明創(chuàng)建成功:
- 開始安裝......
- 正在分配 'CentOS7.qcow2' | 40 GB 00:00:00
- 域安裝仍在進行。您可以重新連接
- 到控制臺以便完成安裝進程。
當然,您也可以在Linux桌面環(huán)境中使用圖形界面的virt-manager創(chuàng)建它。
6. 連接KVM虛擬機顯示器
在Windows系統(tǒng)上安裝VNC viewer客戶端:
連接新創(chuàng)建虛擬機的顯示器:
VNC服務器地址:
IP+端口
比如192.168.20.35:5911
在VNC viewer客戶端:
添加一臺VNC主機:
連接KVM虛擬機顯示器
輸入創(chuàng)建KVM虛擬機時配置的密碼:
輸入KVM虛擬機顯示器密碼
成功連接到KVM虛擬機
7. 結(jié)論:
本文主要演示如何在Ubuntu 20.04 系統(tǒng)上安裝KVM與使用KVM基本功能。Linux KVM虛擬化平臺非常值得深入研究和學習。它能提供穩(wěn)定高性能的虛擬化技術(shù)。維護也比Exsi簡單。命令行套件可以覆蓋所有的功能。我一般使用命令行創(chuàng)建,一個SSH終端窗口可以搞定一切。如果您有更酷的用法。請留言。
本文已同步至博客站,尊重原創(chuàng),轉(zhuǎn)載時請在正文中附帶以下鏈接:
https://www.linuxrumen.com/rmxx/1866.html