一跟畅、虛擬化分類
1咽筋、虛擬化
是指通過虛擬化技術(shù)將一臺(tái)計(jì)算機(jī)虛擬為多臺(tái)邏輯計(jì)算機(jī)。在一臺(tái)計(jì)算機(jī)上同時(shí)運(yùn)行多個(gè)邏輯計(jì)算機(jī)徊件,每個(gè)邏輯計(jì)算機(jī)可運(yùn)行不同的操作系統(tǒng)奸攻,并且應(yīng)用程序都可以在相互獨(dú)立的空間內(nèi)運(yùn)行而互相不影響,從而顯著提高計(jì)算機(jī)的工作效率虱痕。
虛擬化使用軟件的方法重新定義劃分 IT 資源舞箍,可以實(shí)現(xiàn) IT 資源的動(dòng)態(tài)分配、靈活調(diào)度皆疹、跨域共享疏橄,提高 IT 資源利用率,使 IT 資源能夠真正成為社會(huì)基礎(chǔ)設(shè)施,服務(wù)于各行各業(yè)中靈活多變的應(yīng)用需求捎迫。
2晃酒、虛擬化層次種類:
(1) 完全虛擬化 --- 最流行的虛擬化方法使用名為 hypervisor 的一種軟件,在虛擬服務(wù)器和底層硬件之間建立一個(gè)抽象層窄绒。 VMware 和微軟的VirtualPC 是代表該方法的兩個(gè)商用產(chǎn)品贝次,而基于核心的虛擬機(jī) (KVM) 是面向 Linux 系統(tǒng)的開源產(chǎn)品hypervisor 可以捕獲 CPU 指令彰导,為指令訪問硬件控制器和外設(shè)充當(dāng)中介。因而位谋,完全虛擬化技術(shù)幾乎能讓任何一款操作系統(tǒng)不用改動(dòng)就能安裝到虛擬服務(wù)器上,而它們不知道自己運(yùn)行在虛擬化環(huán)境下掏父。主要缺點(diǎn)是笋轨, hypervisor 給處理器帶來開銷
(2)準(zhǔn)虛擬化 --- 完全虛擬化是處理器密集型技術(shù),因?yàn)樗?hypervisor管理各個(gè)虛擬服務(wù)器赊淑,并讓它們彼此獨(dú)立。減輕這種負(fù)擔(dān)的一種方法就是钾挟,改動(dòng)客戶端操作系統(tǒng),讓它以為自己運(yùn)行在虛擬環(huán)境下饱岸,能夠與hypervisor 協(xié)同工作等龙。這種方法就叫準(zhǔn)虛擬化 (para-virtualization)Xen 是開源準(zhǔn)虛擬化技術(shù)的一個(gè)例子。操作系統(tǒng)作為虛擬服務(wù)器在 Xen hypervisor 上運(yùn)行之前伶贰,它必須在核心層面進(jìn)行某些改變。因此黍衙, Xen 適用于 BSD 、 Linux 位仁、 Solaris 及其他開源操作系統(tǒng)方椎,但不適合對(duì)像Windows 這些專有的操作系統(tǒng)進(jìn)行虛擬化處理,因?yàn)樗鼈儫o法改動(dòng)棠众。準(zhǔn)虛擬化技術(shù)的優(yōu)點(diǎn)是性能高有决。經(jīng)過準(zhǔn)虛擬化處理的服務(wù)器可與hypervisor 協(xié)同工作空盼,其響應(yīng)能力幾乎不亞于未經(jīng)過虛擬化處理的服務(wù)器。準(zhǔn)虛擬化與完全虛擬化相比優(yōu)點(diǎn)明顯揽趾,以至于微軟和 VMware 都在開發(fā)這項(xiàng)技術(shù)篱瞎,以完善各自的產(chǎn)品。
(3)系統(tǒng)虛擬化 --- 就操作系統(tǒng)層的虛擬化而言俐筋,沒有獨(dú)立的hypervisor 層。相反两波,主機(jī)操作系統(tǒng)本身就負(fù)責(zé)在多個(gè)虛擬服務(wù)器之間分配硬件資源闷哆,并且讓這些服務(wù)器彼此獨(dú)立。一個(gè)明顯的區(qū)別是抱怔,如果使用操作系統(tǒng)層虛擬化嘀倒,所有虛擬服務(wù)器必須運(yùn)行同一操作系統(tǒng) ( 不過每個(gè)實(shí)例有各自的應(yīng)用程序和用戶。
賬戶 ) 测蘑。雖然操作系統(tǒng)層虛擬化的靈活性比較差碳胳,但本機(jī)速度性能比較高。此外挨约,由于架構(gòu)在所有虛擬服務(wù)器上使用單一味混、標(biāo)準(zhǔn)的操作系統(tǒng),管理起來比異構(gòu)環(huán)境要容易诫惭。
(4)桌面虛擬化 --- 服務(wù)器虛擬化主要針對(duì)服務(wù)器而言翁锡,而虛擬化最接近用戶的還是要算的上桌面虛擬化了夕土,桌面虛擬化主要功能是將分散的桌面環(huán)境集中保存并管理起來,包括桌面環(huán)境的集中下發(fā)哈踱,集中更新,集中管理开镣。桌面虛擬化使得桌面管理變得簡單,不用每臺(tái)終端單獨(dú)進(jìn)行維護(hù)陕壹,每臺(tái)終端進(jìn)行更新。終端數(shù)據(jù)可以集中存儲(chǔ)在中心機(jī)房里糠馆,安全性相對(duì)傳統(tǒng)桌面應(yīng)用要高很多怎憋。桌面虛擬化可以使得一個(gè)人擁有多個(gè)桌面環(huán)境绊袋,也可以把一個(gè)桌面環(huán)境供多人使用。
3癌别、虛擬化架構(gòu)分類
(1)1型虛擬化
Hypervisor 直接安裝在物理機(jī)上展姐,多個(gè)虛擬機(jī)在 Hypervisor 上運(yùn)行。Hypervisor 實(shí)現(xiàn)方式一般是一個(gè)特殊定制的 Linux 系統(tǒng)圾笨。Xen 和 VMWare 的 ESXi 都屬于這個(gè)類型。
(2)2型虛擬化
物理機(jī)上首先安裝常規(guī)的操作系統(tǒng)土铺,比如 Redhat谍婉、Ubuntu 和 Windows。Hypervisor 作為 OS 上的一個(gè)程序模塊運(yùn)行镀迂,并對(duì)管理虛擬機(jī)進(jìn)行管理唤蔗。KVM窟赏、VirtualBox 和 VMWare Workstation 都屬于這個(gè)類型箱季。
二、虛擬化 ---KVM
** 1藏雏、虛擬化kvm發(fā)展:**
2006 年 10 月由以色列的 Qumranet 組織開發(fā)的一種新的“虛擬機(jī)”方案掘殴,并將其貢獻(xiàn)給開源世界
2007 年 2 月于 Linux Kernel-2.6.20 中第一次包含了 KVM
2008 年 9 月,紅帽收購了 Qumranet 奏寨,由此入手了 KVM 的虛擬化技術(shù)病瞳。在之前紅帽決是將Xen 加入到自己的默認(rèn)特性當(dāng)中——那是 2006 年,因?yàn)楫?dāng)時(shí)Xen技術(shù)脫離了內(nèi)核的維護(hù)方式套菜,也許是因?yàn)椴捎?Xen 的 RHEL 在企業(yè)級(jí)虛擬化方面沒有贏得太多的市場,也許是因?yàn)樗冀芨④涀叩奶肆龋N種原因嚎于,導(dǎo)致其萌生了放棄 Xen挟冠。而且在正式采用 KVM 一年后,就宣布在新的產(chǎn)品線中徹底放棄 Xen 肋僧,集中資源和精力進(jìn)行 KVM 的工作控淡。
2009 年 9 月,紅帽發(fā)布其企業(yè)級(jí) Linux 的 5.4 版本( RHEL5.4 )掺炭,在原先的 Xen 虛擬化機(jī)制之上,將 KVM 添加了進(jìn)來
2010 年 11 月炕矮,紅帽發(fā)布其企業(yè)級(jí) Linux 的 6.0 版本( RHEL6.0 ),這個(gè)版本將默認(rèn)安裝的 Xen 虛擬化機(jī)制徹底去除肤视,僅提供 KVM 虛擬化機(jī)制
2011 年初邢滑,紅帽的老搭檔 IBM 找上紅帽,表示 KVM 這個(gè)東西值得加大力度去做遭垛。于是到了 5 月操灿, IBM 和紅帽,聯(lián)合惠普和英特爾一起趾盐,成立了開放虛擬化聯(lián)盟( Open Virtualization Alliance ),一起聲明要提升 KVM 的形象救鲤,加速 KVM 投入市場的速度本缠,由此避免 VMware 一家獨(dú)大的情況出現(xiàn)。聯(lián)盟成立之時(shí)稀颁,紅帽的發(fā)言人表示楣黍, 大家都希望除 “ VMware 之外還有一種開源選擇。未來的云基礎(chǔ)設(shè)施一定會(huì)基于開源
自 Linux 2.6.20 之后逐步取代 Xen 被集成在Linux 的各個(gè)主要發(fā)行版本中阶女,使用 Linux 自身的調(diào)度器進(jìn)行管理哩治。
** 2 秃踩、KVM --- 全稱是基于內(nèi)核的虛擬機(jī)(Kernel-based Virtual Machine)**
是一個(gè)開源軟件业筏,基于內(nèi)核的虛擬化技術(shù)驾孔,實(shí)際是嵌入系統(tǒng)的一個(gè)虛擬化模塊惯疙,通過優(yōu)化內(nèi)核來使用虛擬技術(shù)妖啥,該內(nèi)核模塊使得 Linux 變成了一個(gè)Hypervisor,虛擬機(jī)使用 Linux 自身的調(diào)度器進(jì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 進(jìn)程岳瞭。這使得 KMV 能夠使用 Linux 內(nèi)核的已有功能蚊锹。但是牡昆,KVM 本身不執(zhí)行任何硬件模擬,需要客戶空間程序通過 /dev/kvm 接口設(shè)置一個(gè)客戶機(jī)虛擬服務(wù)器的地址空間丢烘,向它提供模擬的 I/O铅协,并將它的視頻顯示映射回宿主的顯示屏捷沸。目前這個(gè)應(yīng)用程序是 QEMU狐史。
3说墨、Linux 上的用戶空間尼斧、內(nèi)核空間、虛機(jī):
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 交互。
4粗仓、KVM有一個(gè)內(nèi)核模塊叫 kvm.ko,只用于管理虛擬 CPU 和內(nèi)存塘淑。IO 的虛擬化蚂斤,就交給 Linux 內(nèi)核和qemu來實(shí)現(xiàn)曙蒸。
Libvirt:是 KVM 的管理工具岗钩。Libvirt 除了能管理 KVM 這種 Hypervisor肖油,還能管理 Xen,VirtualBox 等构韵。OpenStack 底層也使用 Libvirt。
Libvirt 包含 3 個(gè)東西:后臺(tái) daemon 程序 libvirtd凶朗、API 庫和命令行工具 virsh
(1)libvirtd是服務(wù)程序显拳,接收和處理 API 請(qǐng)求杂数;
(2)API 庫使得其他人可以開發(fā)基于 Libvirt 的高級(jí)工具,比如 virt-manager揍移,這是個(gè)圖形化的 KVM 管理工具那伐,后面我們也會(huì)介紹;
(3)virsh 是我們經(jīng)常要用的 KVM 命令行工具罕邀,后面會(huì)有使用的示例。作為 KVM 和 OpenStack 的實(shí)施人員日熬,virsh 和 virt-manager 是一定要會(huì)用的肾胯。
三、虛擬化VT開啟確認(rèn)
KVM 本身也有一些弱點(diǎn)怕敬,那就是相比裸金屬虛擬化架構(gòu)的 Xen 帘皿、 VMware ESX 和 HyperV 畸陡, KVM 是運(yùn)行在 Linux 內(nèi)核之上的寄居式虛擬化架構(gòu),會(huì)消耗比較多的計(jì)算資源斋日;不過針對(duì)這一點(diǎn)墓陈, Intel 、 AMD 已經(jīng)在處理器設(shè)計(jì)上有專門的VT-x 和 AMD-V 擴(kuò)展兔港,這種特性在每次硬件更新的時(shí)候也會(huì)更新仔拟,往往每次更新后都對(duì)虛擬化性能和速度上有明顯的提升利花,所以長遠(yuǎn)來看,也不是什么大問題臀栈。
KVM 的虛擬化需要硬件支持(需要處理器支持虛擬化:如 Intel 廠商的 Intel-VT ( vmx )技術(shù)&&AMD 廠商的 AMD-V ( svm )技術(shù)挠乳。是基于硬件的完全虛擬化。而 Xen 早期則是基于軟件模擬的半虛擬化( Para-Virtualization )崭闲,新版本則是基于硬件支持的完全虛擬化威蕉。但 Xen 本身有自己的進(jìn)程調(diào)度器,存儲(chǔ)管理模塊等韧涨,所以代碼較為龐大虑粥。
你當(dāng)前的 CPU 是否支持 VT 技術(shù)?當(dāng)不確定你當(dāng)前 CPU 是否支持 VT 技術(shù)時(shí)
1. 可以在 windows 下使用 cpu-z 軟件來進(jìn)行測試
2. 可以在 Linux 下查看 CPU 的相信信息來確定
CPU 虛擬化給我們帶來了哪些好處第晰?
CPU 的虛擬化技術(shù)可以將單 CPU 模擬多 CPU 并行,允許一個(gè)平臺(tái)同時(shí)運(yùn)行多個(gè)操作系統(tǒng)品抽,并且應(yīng)用程序都可以在相互獨(dú)立的空間內(nèi)運(yùn)行而互不影響圆恤,從而顯著提高計(jì)算機(jī)的工作效率腔稀。
虛擬化技術(shù)與多任務(wù)超線程的技術(shù)的區(qū)別?
虛擬化技術(shù)與多任務(wù)以及超線程技術(shù)是完全不同的淡喜。多任務(wù)是指在一個(gè)操作系統(tǒng)中多個(gè)程序同時(shí)并行運(yùn)行炕淮,而在虛擬化技術(shù)中涂圆,則可以同時(shí)運(yùn)行多個(gè)操作系統(tǒng),而且每一個(gè)操作系統(tǒng)中都有多個(gè)程序運(yùn)行模狭,每一個(gè)操作系統(tǒng)都運(yùn)行在一個(gè)虛擬的 CPU 或者是虛擬主機(jī)上踩衩;而超線程技術(shù)只是單 CPU 模擬雙 CPU 來平衡程序運(yùn)行性能驱富,這兩個(gè)模擬出來的 CPU 是不能分離的,只能協(xié)同工作
安裝kvm前準(zhǔn)備工作
1. 確定處理器有 VT
命令行: grep vmx /proc/cpuinfo (INTEL 芯片 )
grep svm /proc/cpuinfo (AMD 芯片 )
cat /proc/cpuinfo | grep -e vmx -e nx -e svm
不知道芯片的生產(chǎn)廠商則輸入:egrep '(vmx|svm)' /proc/cpuinfo
如果 flags: 里有 vmx 或者 svm 就說明支持 VT 褐鸥;如果沒有任何的輸出叫榕,說明你的 cpu 不支持,將無法成功安裝 KVM 虛擬機(jī)寓落。
2. 當(dāng)你硬件本身支持虛擬化荞下,但查詢相應(yīng)參數(shù)無果時(shí)史飞,請(qǐng)檢查 BIOS 設(shè)定会宪,確認(rèn)你的 BIOS 中開啟了硬件支持虛擬化的功能掸鹅!
將如下選項(xiàng)設(shè)為Enabled
Intel(R) Virtualization Tech [Enabled]
四巍沙、KVM虛擬化安裝
1. 安裝 KVM 要求
(1)64bitCPU( 支持虛擬化 VT-x or AMD-V)
(2)2G 以上空閑內(nèi)存句携,確認(rèn)內(nèi)存大小
grep -e MemTotal /proc/meminfo
free -m
(3)6GB 空閑存儲(chǔ)空間
2. 安裝 KVM 并檢測
(1)YUM 安裝 KVM
yum install kvm virt-manager libvirt libvirt-python python-virtinst libvirt-client qemu-kvm qemu-img
(2)YUM 安裝 KVM( 簡單版 )
yum install kvm virt-manager libvirt*
(3)如果無法連入互聯(lián)網(wǎng) , 可自行建立源來完成安裝并避免各種關(guān)聯(lián)削咆。建立一個(gè)本地的 YUM 源:
< 掛載 RHEL 光盤 >
#mount /dev/cdrom /mnt/cdrom
< 建立 YUM 本地源 >
#cd /etc/yum.repos.d
#vim kvms.repo
kvms.repo 內(nèi)容
[kvms]
name=Red Hat
baseurl=file:///mnt/cdrom/
enabled=1
gpgcheck=0
(4)kvm虛擬化所需組件介紹
kvm: 核心套件
virt-manager: 圖形化 KVM 管理軟件
libvirt: 提供虛擬機(jī)與宿主相互通信的機(jī)制
libvirt-python: 允許使用 libvirt API
python-virtinst:CLI 下創(chuàng)建 KVM 的工具
libvirt-client: 提供 client 訪問 kvm 服務(wù)器的機(jī)制 ,并包含 virsh 命令進(jìn)行
管理和控制 VMs
qemu-kvm: 提供用戶級(jí) KVM 環(huán)境
qemu-img:VMs 磁盤管理
3.啟動(dòng) KVM
(1)modprobe kvm 加載 kvm 模塊
(2)lsmod | grep kvm 查看加載成功
(3)systemctl start libvirtd
(4)systemctl status libvirtd
4. 啟動(dòng)并檢測 KVM
virsh list --all
如出現(xiàn)
Id Name State
則安裝成功
5. 在 GUI 模式下安裝虛擬機(jī),啟動(dòng)虛擬系統(tǒng)管理器
五瞻惋、KVM網(wǎng)絡(luò)模式設(shè)置
1. NAT ( 默認(rèn)上網(wǎng) ) :虛擬機(jī)利用 host 機(jī)器的 ip 進(jìn)行上網(wǎng) . 對(duì)外顯示一個(gè) ip,
virbr0 是 KVM 默認(rèn)創(chuàng)建的一個(gè) Bridge援岩,其作用是為連接其上的虛機(jī)網(wǎng)卡提供 NAT 訪問外網(wǎng)的功能享怀,默認(rèn)ip為192.168.122.1
2. 自帶的Bridge : 將虛擬機(jī)橋接到 host 機(jī)器的網(wǎng)卡上 ,vm和 host 機(jī)器都通過 bridge 上網(wǎng) . 對(duì)外有同網(wǎng)段的不通 ip凹蜈,此種方式host卻不能和vm聯(lián)通
3. Linux Bridge : 基本原理就是創(chuàng)建一個(gè)橋接接口 br0 ,在物理網(wǎng)卡和虛擬網(wǎng)絡(luò)接口之間傳遞數(shù)據(jù)履植。此種方式host卻可以和vm聯(lián)通
Linux Bridge 是 Linux 上用來做 TCP/IP 二層協(xié)議交換的設(shè)備玫霎,其功能大家可以簡單的理解為是一個(gè)二層交換機(jī)或者 Hub。多個(gè)網(wǎng)絡(luò)設(shè)備可以連接到同一個(gè) Linux Bridge翁脆,當(dāng)某個(gè)設(shè)備收到數(shù)據(jù)包時(shí)鼻种,Linux Bridge 會(huì)將數(shù)據(jù)轉(zhuǎn)發(fā)給其他設(shè)備
(1)添加 br0 網(wǎng)卡的配置文件
cd /etc/sysconfig/network-scripts
cp ifcfg-eth0 ifcfg-br0
(2)修改網(wǎng)卡配置文件
Vim ifcfg-eth0
TYPE=Ethernet
NAME=eth0
DEVICE=eth0
ONBOOT=yes
BRIDGE=br0
Vim ifcfg-br0
TYPE=Bridge
NAME=br0
DEVICE=br0
ONBOOT=yes
BOOTPROTO=none
IPADDR=192.168.254.20
PREFIX=24(NETMASK=255.255.255.0)
GATEWAY=192.168.254.1
DNS=192.168.254.251
(3)重啟host:reboot
(4)檢查
# ethtool br0
# brctl show
# ifconfig br0