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