1、KVM 介紹python
1.爲何須要cpu虛擬化linux
X86 操做系統是設計在直接運行在裸硬件設備上的,所以它們自動認爲它們徹底佔有計算機硬件。x86 架構提供四個特權級別給操做系統和應用程序來訪問硬件。 Ring 是指 CPU 的運行級別,Ring 0是高級別,Ring1次之,Ring2更次之…… 就 Linux+x86 來講, 操做系統(內核)須要直接訪問硬件和內存,所以它的代碼須要運行在高運行級別 Ring0上,這樣它可使用特權指令,控制中斷、修改頁表、訪問設備等等。 應用程序的代碼運行在低運行級別上ring3上,不能作受控操做。若是要作,好比要訪問磁盤,寫文件,那就要經過執行系統調用(函數),執行系統調用的時候,CPU的運行級別會發生從ring3到ring0的切換,並跳轉到系統調用對應的內核代碼位置執行,這樣內核就爲你完成了設備訪問,完成以後再從ring0返回ring3。這個過程也稱做用戶態和內核態的切換。api
那麼,虛擬化在這裏就遇到了一個難題,由於宿主操做系統是工做在 ring0 的,客戶 操做系統就不能也在 ring0了,可是它不知道這一點,之前執行什麼指令,如今仍是執行什 麼指令,可是沒有執行權限是會出錯的。因此這時候虛擬機管理程序(VMM)須要避免這件 事情發生。 虛機怎麼經過VMM實現 Guest CPU 對硬件的訪問,安全
根據其原理不一樣有三種實現 技術:bash
1. 全虛擬化 服務器
2. 半虛擬化 網絡
3. 硬件輔助的虛擬化架構
2、函數
KVM的總體結構:工具
1) virt-manager 一個用來管理VM的GUI/CUI用戶接口;它使用libvirt api 調用VM的各類功能。
2) libvirt 一個工具及接口,做爲較通用的服務器虛擬化軟件,它支持Xen,VMware ESXi/GSX,固然, 還有QEMU/KVM。
3) QEMU 一個和KVM內核模塊交互的模擬器,處理多種客戶機系統請求如I/O;一個QEMU進程對應一個 客戶機系統。
4) KVM內核模塊 從狹義上來講,KVM是一個Linux內核模塊,處理客戶機系統的VM Exits和執行VM Entry指 令。
5) Linux內核 既然QEMU做爲一個普通的用戶進程運行,相應客戶機系統的調度就由Linux內核本身來處 理。 全部的組件都是開放源碼軟件(OSS)。
3、KVM 的功能列表
KVM 所支持的功能包括:
Ø 支持CPU 和 memory 超分(Overcommit)
Ø 支持半虛擬化I/O (virtio)
Ø 支持熱插拔(cpu,塊設備、網絡設備等)
Ø 支持對稱多處理(Symmetric Multi-Processing,縮寫爲 SMP )
Ø 支持實時遷移(Live Migration)
Ø 支持 PCI 設備直接分配和單根I/O虛擬化(SR-IOV)
Ø 支持內核同頁合併(KSM )
Ø 支持NUMA (Non-Uniform Memory Access,非一致存儲訪問結構 )
4、KVM 工具集合
libvirt:操做和管理KVM虛機的虛擬化API,使用 C 語言編寫,能夠由 Python,Ruby, Perl, PHP, Java 等語言調用。能夠操做包括 KVM,vmware,XEN,Hyper-v, LXC 等 Hypervisor。
Virsh:基於libvirt 的命令行工具(CLI)
Virt-Manager:基於libvirt的GUI工具 virt-v2v:虛機格式遷移工具 virt-* 工具:包括Virt-install (建立KVM虛機的命令行工具),Virt-viewer (鏈接 到虛機屏幕的工具),Virt-clone(虛機克隆工具),virt-top 等
sVirt:安全工具和selinux相關
5、安裝部署虛擬化環境
1、)圖形化安裝
1.虛擬機安裝
①若是是物理服務器,須要在BIOS中打開虛擬化功能(Virtualization Technology),一 般的服務器默認是打開這個功能的。
②、若是是用VMware Workstation作實驗,創建的虛擬機的CPU要勾選虛擬化功能,這樣虛擬 機纔會支持KVM虛擬化
2.最簡單的安裝方法就是在安裝系統的時候,安裝上虛擬化功能,這裏以CentOS7.3爲例, 選擇安裝包的時候,以下圖選擇便可,選擇「帶GUI的服務器」,並勾選「虛擬化客戶 端」,「虛擬化Hypervisor」,「虛擬化工具」。
3.安裝完成後查看CPU是否能支持虛擬化
grep -e "vmx | svm" /proc/cpuinfo
4.啓動程序
systemctl enable libvirtd && systemctl start libvirtd
2、)若是你的系統是最小化安裝的,那你應該安裝如下所需軟件:
1.安裝軟件
yum groupinstall "GNOME 桌面" -y #//安裝GNOME桌面環境 yum install qemu-kvm -y #/KVM核心模塊 yum install qemu-kvm-tools -y #//KVM調試工具,能夠選擇性安裝 yum install qemu-img -y #//建立、轉換和修改鏡像,能處理被qemu支持的全部鏡像格式 yum install libvirt -y #//管理虛擬機的工具包 yum install virt-install -y #//virt-install是一個使用 libvirt庫構建新虛擬機的命令行工具 yum install virt-manager -y #//圖形界面管理虛擬機 yum install bridge-utils -y #//配置linux以太網橋
2.驗證
lsmod | grep kvm
3.啓動程序
若是libvirtd服務中止運行,那麼你將不能管理虛擬機,也就是不能使用virt-manager 等工具來管理虛擬機
systemctl status libvirtd
3、)圖形界面沒有虛擬化軟件
1.安裝虛擬化軟件
yum install qemu qemu-img qemu-kvm libvirt libvirt-python libguestfs-tools virt-install
2.安裝圖形化工具:
yum install virt-manager virt-viewer
3.開啓圖形化界面
systemctl enable libvirtd && systemctl start libvirtd
6、部署kvm虛擬化
1.上傳光盤鏡像
2.建立文件夾
mkdir /kvm-vm #放置虛擬機使用 mkdir /iso #放置鏡像
3.命令啓動程序
virt-manager
5.建立存儲池
6.建立鏡像池
7.建立虛擬機
建立儲存虛擬機卷(能夠提早建立也能夠在建立虛擬機選擇儲存位置時建立)
接下來正常安裝系統就能夠了
7、、使用virt-manager管理虛擬機
virt-manager應用程序是一個桌面用戶接口,用於經過libvirt管理虛擬機。它的主要 目標是管理KVM,不過也能夠管理Xen和LXC(Linux容器)。它提供了運行域的彙總視圖,當 前性能和資源利用統計。嚮導能夠容許建立新域,以及配置、調整域的資源分配和虛擬硬 件。內嵌的VNC和SPICE的客戶端提供了一個全圖形控制檯。
virt-manager主要功能:
Ø 定義和建立虛擬機
Ø 硬件管理
Ø 性能監視
Ø 虛擬機的保存和恢復、暫停和繼續、關閉和啓動
Ø 控制檯
Ø 在線和離線遷移
啓用virt-manager
應用程序----系統工具----虛擬系統管理器
或者 輸入 virt-manager命令
2.配置虛擬機啓動選項:
在1的位置若是勾選,能夠設置虛擬機隨物理主機啓動而啓動
在2的位置若是勾選,那麼虛擬機啓動的時候就會出現啓動菜單,而後能夠選擇從哪裏 啓動
在3的位置若是勾選,那麼可讓虛擬機啓動時候使用宿主機中的內核文件啓動
3.調整監視參數,默認只監視CPU。
先調整首選項,而後在「查看」--「圖形」中勾選監控參數便可