KVM?介紹及作用詳解
一、虛擬化
1、背景
美國(guó)環(huán)境保護(hù)EPA報(bào)告中曾經(jīng)統(tǒng)計(jì)過一組統(tǒng)計(jì)數(shù)據(jù):EPA研究服務(wù)器和數(shù)據(jù)中心得能源效率時(shí)發(fā)現(xiàn),實(shí)際上服務(wù)器只有5%得時(shí)間時(shí)在工作的,其他時(shí)間一直處于休眠狀態(tài),這樣服務(wù)器的利用率就會(huì)很低,而且這些服務(wù)器一直處于開機(jī)狀態(tài),消耗的能源自然就很多
2、虛擬化技術(shù)介紹
通過虛擬化技術(shù)將一臺(tái)計(jì)算機(jī)虛擬為多臺(tái)邏輯計(jì)算機(jī),在一臺(tái)計(jì)算機(jī)上同時(shí)運(yùn)行多個(gè)邏輯計(jì)算機(jī),同時(shí)每個(gè)邏輯計(jì)算機(jī)可運(yùn)行不同的操作系統(tǒng),應(yīng)用程序都可以在相互獨(dú)立的空間內(nèi)運(yùn)行而互相不影響,從而提高計(jì)算機(jī)的工作效率
3、虛擬化技術(shù)發(fā)展
雛形:
1961年,IBM709機(jī)器實(shí)現(xiàn)了分時(shí)系統(tǒng),將CPU占用切分為多個(gè)極短的時(shí)間片(1/100sec)每一個(gè)時(shí)間片執(zhí)行不同的工作,通過對(duì)這些時(shí)間片進(jìn)行輪詢
從而將一個(gè)CPU偽裝成多個(gè)CPU
1972年, IBM正式將system370機(jī)的分時(shí)系統(tǒng)命名為虛擬機(jī)
1990年, IBM推出的system390機(jī)支持邏輯分區(qū)(將一個(gè)CPU分為多份,相互獨(dú)立,也就是邏輯分割)
Xen 2003年問世,是一個(gè)外部的hypervisor程序(虛擬機(jī)管理程序),能夠控制虛擬機(jī)和給多個(gè)客戶機(jī)分配資源
KVM:2007年問世,現(xiàn)已內(nèi)置在kernel內(nèi)核中的
Xen 支持的虛擬化技術(shù):全虛擬化,半虛擬化
KVM:支持的虛擬化技術(shù):全虛擬化
4、虛擬化類型
1)全虛擬化:將物理硬件資源全部通過軟件的方式抽象化,最后進(jìn)行調(diào)用
使用的方法:使用hypervisor(VMM)軟件,其原理是在底層硬件和服務(wù)器之間建立一個(gè)抽象層,而基于核心的虛擬機(jī)是面向Linux系統(tǒng)的開源產(chǎn)品hypervisor(VMM)可以捕捉CPU的指令,為指令訪問硬件控制器和外設(shè)充當(dāng)中介。
2)半虛擬化:需要修改操作系統(tǒng)
3)直通:直接使用物理硬件資源(需要支持,還不完善)
5、虛擬化的特性特性:
優(yōu)勢(shì):
- 集中化管理(遠(yuǎn)程管理、維護(hù))
- 提高硬件利用率(物理資源利用 率低-例如峰值,虛擬化解決了“空閑”容量)
- 動(dòng)態(tài)調(diào)整機(jī)器/資源配置(虛擬化把系統(tǒng)的應(yīng)用程序和服務(wù)硬件分離、提高了靈活性)
- 高可靠(可部署額外的功能和方案,可提高透明負(fù)載均衡、遷移、恢復(fù)復(fù)制等應(yīng)用環(huán)境)
劣勢(shì):
- 前期高額費(fèi)用( 初期的硬件支持)
- 降低硬件利用率(特定場(chǎng)景-例如極度吃資源的應(yīng)用不一定適合虛擬化)
- 更大的錯(cuò)誤影響面(本地物理機(jī)down機(jī)會(huì)導(dǎo)致虛擬機(jī)均不可用,同時(shí)可能虛擬機(jī)中文件全部損壞)
- 實(shí)施配置復(fù)雜、管理復(fù)雜(管理人員運(yùn)維、排障困難)
- 一定的限制性(虛擬化技術(shù)涉及各種限制,必須與支持/兼容虛擬化的服務(wù)器、應(yīng)用程序及供應(yīng)商結(jié)合使用)
- 安全性(虛擬化技術(shù)自身的安全隱患)
二、KVM概述
1、KVM簡(jiǎn)介
KVM 是基于虛擬化擴(kuò)展(Intel VT 或者 AMD-V)的 X86 硬件的開源的 Linux 原生的全虛擬化解決方案。KVM 中,虛擬機(jī)被實(shí)現(xiàn)為常規(guī)的 Linux 進(jìn)程,由標(biāo)準(zhǔn) Linux 調(diào)度程序進(jìn)行調(diào)度;虛機(jī)的每個(gè)虛擬 CPU 被實(shí)現(xiàn)為一個(gè)常規(guī)的 Linux 線程。這使得 KMV 能夠使用 Linux 內(nèi)核的已有功能。
Kernel-based Virtual Machine的簡(jiǎn)稱,是一個(gè)開源的系統(tǒng)虛擬化模塊,是RHEL 5.4推出的最新虛擬化技術(shù),目前紅帽只支持在64位的RHEL l5.4以上運(yùn)行KVM,同時(shí)硬件需要支持VT技術(shù),必須在64位bit環(huán)境中使用KVM。自Linux 2.6.20之后集成在Linux的各個(gè)主要發(fā)行版本中。它使用Linux自身的調(diào)度器進(jìn)行管理,所以相對(duì)于Xen,其核心源碼很少。KVM已成為學(xué)術(shù)界的主流VMM之一。
KVM的虛擬化需要硬件支持(如Intel VT技術(shù)或者AMD V技術(shù))。是基于硬件的完全虛擬化。而Xen早期則是基于軟件模擬的Para-Virtualization,新版本則是基于硬件支持的完全虛擬化。但Xen本身有自己的進(jìn)程調(diào)度器,存儲(chǔ)管理模塊等,所以代碼較為龐大。廣為流傳的商業(yè)系統(tǒng)虛擬化軟件VMware ESX系列是基于軟件模擬的Full-Virtualization。
通過一下命令可以查看系統(tǒng)是否支持VT
cat /proc/cpuinfo | grep ‘vmx'
KVM的前身是QEMU,08年被紅帽收購(gòu)并獲得一項(xiàng)技術(shù)hypervisor,不過RedHat的KVM被認(rèn)為是將成為未來Linux hypervisor的主流。
2、KVM的作用
- 提高物理服務(wù)器的資源利用率(較少的在硬件上的投入)
- 可以批量部署
- 實(shí)現(xiàn)實(shí)時(shí)快照技術(shù)
- 支持克隆技術(shù)
- 可以實(shí)現(xiàn)虛擬機(jī)的離線遷移和動(dòng)態(tài)遷移(提高IT部署的靈活性)
- 可以將資源動(dòng)態(tài)調(diào)整(傳統(tǒng)的IT架構(gòu)資源是固定的,無法動(dòng)態(tài)分配)
3、KVM 虛擬化架構(gòu)/三種模式
- 客戶模式(guestOS):VM中的OS為GuestOS
客戶機(jī)在操作系統(tǒng)中運(yùn)行的模式,客戶機(jī)分為用戶模式和Linux內(nèi)核模式,作用如下:
- 用戶模式:
為用戶提供虛擬機(jī)管理的用戶空間工具以及代表用戶執(zhí)行I/O,Qemu工作在此模式下(Qemu的主要功能)
- Linux內(nèi)核模式:
模擬CPU、內(nèi)存,實(shí)現(xiàn)客戶模式切換,處理從客戶模式的推出,KVM即運(yùn)行在此模式下
4、KVM核心組件及作用
- Guest:客戶機(jī)系統(tǒng),包括CPU(vCPU)、內(nèi)存、驅(qū)動(dòng)(Console、網(wǎng)卡、I/O 設(shè)備驅(qū)動(dòng)等),被 KVM 置于一種受限制的 CPU 模式下運(yùn)行。
- KVM:運(yùn)行在內(nèi)核空間,提供CPU 和內(nèi)存的虛級(jí)化,以及客戶機(jī)的 I/O 攔截。Guest 的 I/O 被 KVM 攔截后,交給 QEMU 處理。
- QEMU:修改過的為 KVM 虛機(jī)使用的 QEMU 代碼,運(yùn)行在用戶空間,提供硬件 I/O 虛擬化,通過 IOCTL /dev/kvm 設(shè)備和 KVM 交互。
5、KVM工作流程
用戶模式的 Qemu 利用接口 libkvm 通過 ioctl 系統(tǒng)調(diào)用進(jìn)入內(nèi)核模式。 KVM驅(qū)動(dòng)為虛擬機(jī)創(chuàng)建虛擬 CPU 和虛擬內(nèi)存,然后執(zhí)行 VMLAU·NCH 指令進(jìn)入客戶模式,裝載 Guest OS 并運(yùn)行。Guest OS 運(yùn)行過程中如果發(fā)生異常,則暫停Guest OS的運(yùn)行并保存當(dāng)前狀態(tài)同時(shí)退出到內(nèi)核模式來處理這些異常。
內(nèi)核模式處理這些異常時(shí)如果不需要 I/O則處理完成后重新進(jìn)入客戶模式。如果需要 I/O 則進(jìn)入到用戶模式, 則由 Qemu 來處理 I/O,處理完成后進(jìn)入內(nèi)核模式,再進(jìn)入客戶模式
6、KVM的優(yōu)勢(shì)
1)KVM與VMware的優(yōu)勢(shì)
ESX的底層是VMkernel + linux,VMkernel啟動(dòng)后開始接管對(duì)硬件管理,然后啟動(dòng)第一個(gè)linux虛擬機(jī),協(xié)助VMkernel一起來管理和調(diào)度硬件資源。
KVM是直接將linux kernel變成hypervisor,只需要從標(biāo)準(zhǔn)linux內(nèi)核啟動(dòng)即可,linux kernel擁有的特性可以全部利用上。KVM架構(gòu)上的優(yōu)勢(shì)使得它非常簡(jiǎn)潔,在開發(fā)出來僅三個(gè)多月就被合并到了標(biāo)準(zhǔn)內(nèi)核。
2)KVM與Xen的優(yōu)勢(shì)
Kvm和xen的最大區(qū)別就是架構(gòu),KVM是直接構(gòu)建在linux kernel之上,把linux kernel變成hypervisor,是利用kernel已有的的功能基礎(chǔ)上開發(fā)KVM所不具備的功能。
Xen的hypervisor是自己從頭開始構(gòu)建的,對(duì)硬件資源的調(diào)度管理,虛擬機(jī)的管理,還有很多接口與linux kernel不兼容,然后對(duì)于xen,hypervisor需要通過Domain0對(duì)虛擬機(jī)提供硬件訪問驅(qū)動(dòng)支持。
雖然說現(xiàn)在3.0的kernel中結(jié)合了xen,但是大部分linux OS的內(nèi)核還是2.6,即便是一些新的發(fā)行版OS,也還是2.6的內(nèi)核,新內(nèi)核要單獨(dú)去升級(jí)。
三、KVM虛擬化平臺(tái)部署
1、虛擬機(jī)資源
CPU:雙核雙線程-CPU虛擬化開啟
內(nèi)存:8G
硬盤:300G
雙網(wǎng)卡:?jiǎn)尉W(wǎng)卡
操作系統(tǒng):Centos 7.4(1708)
2、實(shí)驗(yàn)環(huán)境
1)修改主機(jī)名
[root@kvm ~]# hostnamectl set-hostname kvm [root@kvm ~]# bash
2)將鏡像光盤設(shè)為自動(dòng)/永久掛載
[root@kvm ~]# vim /etc/fstab /dev/cdrom /mnt iso9660 defaults 0 0 [root@kvm ~]# mount -a [root@kvm ~]# df -hT /dev/sr0 iso9660 4.3G 4.3G 0 100% /mnt
3)環(huán)境優(yōu)化
#是否反解DNS,設(shè)置為NO可以讓客戶端連接服務(wù)器更快
[root@kvm ~]# vim /etc/ssh/sshd_config UseDNS no #取消DNS注釋,改為NO
4)制作本地YUM倉庫
[root@kvm ~]# mkdir /abc [root@kvm ~]# cd /etc/yum.repos.d/ [root@kvm yum.repos.d]# ls CentOS-Base.repo CentOS-Debuginfo.repo CentOS-Media.repo CentOS-Vault.repo CentOS-CR.repo CentOS-fasttrack.repo CentOS-Sources.repo [root@kvm yum.repos.d]# mkdir bak [root@kvm yum.repos.d]# mv CentOS-* bak [root@kvm yum.repos.d]# ls bak [root@kvm yum.repos.d]# vim local.repo [local] name=kvm baseurl=file:///abc gpgcheck=0 enabled=1 [root@kvm yum.repos.d]# yum clean all [root@kvm yum.repos.d]# yum repolist
5)關(guān)閉防火墻、核心防護(hù)
[root@kvm yum.repos.d]# systemctl stop firewalld [root@kvm yum.repos.d]# systemctl disable firewalld Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service. Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service. [root@kvm yum.repos.d]# setenforce 0
3、安裝KVM
1) 安裝KVM基本組件
# 安裝 GNOME 桌面環(huán)境 如果裝了圖形界面可以不需要裝 yum groupinstall -y "GNOME Desktop" # KVM 模塊 yum -y install qemu-kvm # 安裝KVM 調(diào)試工具,可不安裝 yum -y install qemu-kvm-tools # 構(gòu)建虛擬機(jī)的命令行工具 yum -y install virt-install # qemu 組件,創(chuàng)建磁盤、啟動(dòng)虛擬機(jī)等 yum -y install qemu-img # 網(wǎng)絡(luò)支持工具 yum -y install bridge-utils # 虛擬機(jī)管理工具 yum -y install libvirt # 圖形界面管理虛擬機(jī) yum -y install virt-manager
2)檢測(cè)CPU是否支持虛擬化
[root@kvm ~]# cat /proc/cpuinfo | grep vmx flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon nopl xtopology tsc_reliable nonstop_tsc eagerfpu pni pclmulqdq vmx ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch ssbd ibrs ibpb stibp tpr_shadow vnmi ept vpid fsgsbase tsc_adjust bmi1 avx2 smep bmi2 invpcid mpx rdseed adx smap clflushopt xsaveopt xsavec arat spec_ctrl intel_stibp flush_l1d arch_capabilitie
3)查看KVM模塊是否已安裝
Lsmod:顯示已載入的系統(tǒng)模塊
[root@kvm ~]# lsmod | grep kvm kvm_intel 183621 0 kvm 586948 1 kvm_intel irqbypass 13503 1 kvm
4) 設(shè)置開啟啟動(dòng)界面的顯示模式
[root@kvm ~]# ln -sf /lib/systemd/system/graphical.target /etc/systemd/system/default.target
4、設(shè)置KVM網(wǎng)絡(luò)
1)KVM網(wǎng)絡(luò)的兩種模式:
① NAT: 默認(rèn)設(shè)置,數(shù)據(jù)包由 NAT 方式通過主機(jī)的接口進(jìn)行
傳送,可以訪問外網(wǎng),但是無法從外部訪問虛擬機(jī)網(wǎng)絡(luò)
**② 網(wǎng)橋:**這種模式允許虛擬機(jī)像一臺(tái)獨(dú)立的主機(jī)一樣擁有網(wǎng)絡(luò),外部的機(jī)器可以直接訪問到虛擬機(jī)內(nèi)部,但需要網(wǎng)卡支持(一般有線網(wǎng)卡都支持)
使用Bridge網(wǎng)橋模式進(jìn)行部署
[root@bdqn ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33TYPE=EthernetPROXY_METHOD=noneBROWSER_ONLY=noBOOTPROTO=noneDEFROUTE=yesIPV4_FAILURE_FATAL=noIPV6INIT=noIPV6_AUTOCONF=yesIPV6_DEFROUTE=yesIPV6_FAILURE_FATAL=noIPV6_ADDR_GEN_MODE=stable-privacyNAME=ens33UUID=aac61931-47a6-40e5-9511-68adf20e97c5DEVICE=ens33ONBOOT=yes#IPADDR=192.168.100.46#PREFIX=24#GATEWAY=192.168.100.1BRIDGE=br0 #刪除原先地址,設(shè)置為網(wǎng)橋模式,關(guān)聯(lián)br0網(wǎng)卡
2)創(chuàng)建、編輯橋接網(wǎng)卡
[root@bdqn ~]# vim /etc/sysconfig/network-scripts/ifcfg-br0TYPE=BridgeBOOTPROTO=staticDEFROUTE=yesPEERDNS=yesPEERROUTES=yesIPV4_FAILURE_FATAL=noIPV6INIT=yesIPV6_AUTOCONF=yesIPV6_DEFROUTE=yesIPV6_PEERDNS=yesIPV6_PEERROUTES=yesIPV6_FAILURE_FATAL=noIPV6_ADDR_GEN_MODE=stable-privacyNAME=br0DEVICE=br0ONBOOT=yesIPADDR=192.168.226.200NETMASK=255.255.255.0GATEWAY=192.168.226.2
5、KVM部署與管理
1)創(chuàng)建KVM存儲(chǔ)和鏡像數(shù)據(jù)的目錄、上傳centos7鏡像
[root@kvm network-scripts]# mkdir -p /data_kvm/iso[root@kvm network-scripts]# mkdir -p /data/_kvm/store[root@kvm network-scripts]# mkdir /abc[root@kvm network-scripts]# mount.cifs //192.168.226.1/LAMP-C7 /mntPassword for root@//192.168.226.1/LAMP-C7: [root@kvm network-scripts]# cd /abc[root@kvm abc]# cp -p CentOS-7-x86_64-DVD-1806.iso /data_kvm/iso/#查看鏡像[root@kvm abc]# ll /data_kvm/iso/總用量 4481024-rwxr-xr-x. 1 root root 4588568576 2月 20 2019 CentOS-7-x86_64-DVD-1810.iso
2)使用虛擬系統(tǒng)管理器管理虛擬機(jī)
[root@kvm kvmdata]# virt-manager
3)操作步驟
① 第一步:創(chuàng)建存儲(chǔ)池
一樣的操作創(chuàng)建iso存儲(chǔ)池
② 在store存儲(chǔ)池中創(chuàng)建存儲(chǔ)卷
③ 創(chuàng)建虛擬機(jī)
啟用最小化安裝,節(jié)省空間
到此這篇關(guān)于KVM 介紹的文章就介紹到這了,更多相關(guān)KVM 介紹內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
kvm虛擬化學(xué)習(xí)筆記(一)之kvm虛擬化環(huán)境安裝的步驟
這篇文章主要介紹了kvm虛擬化學(xué)習(xí)筆記(一)之kvm虛擬化環(huán)境安裝的步驟,非常具有實(shí)用價(jià)值,需要的朋友可以參考下。2016-12-12CentOS?8?安裝調(diào)試KVM的詳細(xì)步驟
這篇文章主要介紹了CentOS?8?KVM?的安裝調(diào)試,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-04-04KVM虛擬機(jī)實(shí)現(xiàn)在線熱遷移的方法步驟(圖文)
這篇文章主要介紹了KVM虛擬機(jī)實(shí)現(xiàn)在線熱遷移的方法步驟(圖文),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-10-10