KVM虛擬化之基礎概念
1.1 在認識虛擬化之前,聊聊在業務中,我們想要實現什麽?
1. 滿足性能前提下,保證業務穩定可靠,其次是安全性
2. 最大程度的平衡調度資源,提高資源的利用率,節省成本
3. 靈活快速,可以針對並發數量對架構實現動態伸縮
4. 擴展靈活的機櫃,集群
5. 管理方便,平臺化,自動化(puppet;ansible;saltstack;shell;python;)
6. 磁盤IO:硬件是高性能的---HBA,RAID,SAN(光纖,以太網),軟件上高性能的---緩沖;緩存
7. 網絡吞吐(帶寬大小)和發包---tcpdump
第2章 虛擬化的概念
在計算機技術中,虛擬化或者虛擬技術是一種資源管理技術,是將計算機的各種實體資源如CPU;內存;磁盤空間;網卡等予以抽象,轉換厚呈現出來並可供分區,組合成多個電腦配置環境
簡單一句話計算存儲網絡都變成軟件就是虛擬化
1.1 為什麽要使用虛擬化?
1. 是同一臺物理機運行多個不同版本的應用軟件
2. 硬件依賴性較低和便於數據遷移
3. 提高資源利用率
1.1 虛擬化技術有哪些優勢?
? 降低運行成本
服務器虛擬化降低了IT基礎設施的運營成本,令系統管理員擺脫了繁重的物理服務器,OS.中間件及兼容性的管理工作,減少人工幹預頻率,使管理更加強大,便捷
? 提高應用兼容性
服務器虛擬化提供的封裝性和隔離性使大量應用獨立運行與各種環境中
? 加速應用部署
采用服務器虛擬技術只需輸入激活配置參數,拷貝虛擬機,啟動虛擬機,激活虛擬機即可完成部署,大大縮短了部署時間,免除人工幹預,降低了部署成本
? 提高服務可用性
用戶可以方便的備份虛擬機,在進行虛擬機動態遷移後,可以方便的恢復備份,或者在其他物理機上運行備份,大大提高了服務的可用性
? 提升資源利用率:
通過服務器虛擬化的整合,提高了CPU;內存;存儲;網絡等設備的利用率,同時保證原有服務的可用性,使其安全性及性能不受影響
? 動態調度資源(動態伸縮)
在服務器虛擬化技術中,數據中心從傳統的單一服務器變成了統一的資源池
? 降低能源消耗
通過減少運行的物理服務器數量,減少cpu以外各單元的耗電量,達到節能減排的目的
1.2 虛擬化的分類
? 全虛: HD + OS + hypervisor
又叫硬件輔助虛擬化技術,最初所使用的虛擬化技術就是全虛擬化(Full Virtualization)技術,它在虛擬機(vm)和硬件之間加了一個軟件層-Hypervisor,或者叫做虛擬管理程序(VMM),
1.2.1 hypervisor可以劃分為兩大類 :
? 類型1
這種hypervisor是直接運行在物理機上,是基於你內核的虛擬機(KVM本身也是基於操作系統的hypervisor)
? 類型2
這種hypervisor運行在另一個操作系統(運行在物理硬件之上),hypervisor包括qemu和wine,因為運行在虛擬機上的操作系統是通過hypervisor來最終分享硬件,所以虛擬機發出的指令需要經過hypervisor捕獲並處理,為此每個客戶操作系統所發出的指令都要被翻譯成CPU能識別的指令格式,這裏的客戶操作系統即是運行的虛擬機,所以hypervisor的工作負荷會很大,因此會占用一定的資源,所以在性能上肯定不如裸機,但是運行速度要快於硬件模擬,全虛擬化最大的優點就是運行在虛擬機上的操作系統沒有經過任何修改,唯一的限制就是操作系統必須能夠支持底層的硬件,不過目前的操作系統一般會支持底層硬件,所以這個限制就變得微不足道了
? 半虛: HD + hypervisor
半虛擬化技術是後來才出現的技術,半虛技術英文: paravirtualization,也叫作準虛擬化技術,現在比較熱門,它就是在全虛擬化的基礎上,把客戶操作系統進行修改,增加了一個專門的API,這個API可以將客戶操作系統發出的指令進行優化,即不需要hypervisor耗費一定的資源進行翻譯操作,因此hypervisor的工作負擔變得非常的小,因此整體的性能也有很大的提高,不過缺點就是要修改包含該API的操作系統,但是對於某些不含該API的操作系統,想windows來說,就不能用這種方法,Xen就是一個典型的半虛技術
1.1 硬件虛擬化包含哪些硬件?
cpu 內存 邏輯內存 物理內存 磁盤
1.2 實現虛擬化的方式:
? 單機虛擬化
? 集群虛擬化
? 分布式虛擬化***不支持數據庫
1.3 虛擬化的引擎有哪些?
? Vmware esxi:x86
? htper-v
微軟公司的虛擬化技術,可以實現桌面虛擬化
? xen
使用較少
xen與kvm的主要區別:
kvm內置於linux的內核,xen是linux的一個應用,所以kvm可以直接利用linux來做一些xen中需要利用hypervisor來做的事情,比如任務調度,內存管理等,所以相比較之下,kvm更加輕量級,易於管理,並且版本的更新也隨著內核更新
? kvm
第2章 KVM簡介:
KVM基於內核的虛擬機(英語:Kernel-based Virtual Machine,縮寫為 KVM),是一種用於linux內核中的虛擬化基礎設備,可以將linux內核轉化為一個hypervisor,KVM在2007年輩導入linux內核中,以可加載核心模塊的方式被移植到系統中
KVM在具備inter VT或AMD-V功能的x86平臺上運行,它也被移植到s/390,powerPC與IA-64平臺上,在linux內核3.9版本中,加入ARM架構支持
KVM目前有RedHat等廠商開發,對Centos支持性極佳
1.1 關於KVM
? KVM是開源軟件,全稱是kernel-based virtual machine(基於內核的虛擬機)。
? 是x86架構且硬件支持虛擬化技術(如 intel VT 或 AMD-V)的Linux全虛擬化解決方案。
? 它包含一個為處理器提供底層虛擬化 可加載的核心模塊kvm.ko(kvm-intel.ko或kvm-AMD.ko)。
? KVM還需要一個經過修改的QEMU軟件(qemu-kvm),作為虛擬機上層控制和界面。
? KVM能在不改變linux或windows鏡像的情況下同時運行多個虛擬機,(它的意思是多個虛擬機使用同一鏡像)並為每一個虛擬機配置個性化硬件環境(網卡、磁盤、圖形適配器……)同時KVM還能夠使用ksm技術幫助宿主服務器節約內存。
? 在主流的Linux內核,如2.6.20以上的內核均已包含了KVM核心。
1.2 Qemu與KVM
qemu是一個開源項目,實際就是一臺硬件模擬器,可以模擬許多硬件如 : 磁盤,網卡等設備
也包括x86架構處理器,AMD架構處理器
qemu的好處是純軟件模擬,可以在支持的平臺模擬設備,也正是因為這一點,所以很慢
KVM虛擬機 = KVM內核模塊 + qemu模擬器
1.3 libvirt與KVM
livirt是開源的虛擬化管理工具,主要有三部分組成:
一套API的lib庫,支持主流的編程語言包括C;python;ruby
一個守護進程libvirtd
一個命令行實用程序virsh
1.3.1 關於Virtual Machine Manager
在電腦運算中,紅帽公司的Virtual Machine Manager是一個虛擬機管理員,可以讓用戶管理多個虛擬機。
基於內核的虛擬機libvirt與Virtual Machine Manager。
1.3.2 Virtual Machine Manager : 可以讓用戶:
1. 創建;編輯;引導或停止虛擬機
2. 查看並控制每個虛擬機的控制臺
3. 查看每部虛擬機的性能及使用率
4. 查看每部正在運行中的虛擬機以及主控端的即時性及使用率信息
5. 不論實在本機或遠程,皆可使用KVM;Xen;Qemu
由於使用mac本,裝的雙系統,開啟虛擬化的方法暫時沒有找到,沒有測試環境,這裏暫時學習理論部分
後續調好本子之後會馬上進行測試實踐
KVM虛擬化之基礎概念