一、KVM定義
基於內核的虛擬機(英語:Kernel-based Virtual Machine,簡稱KVM),是一種用於Linux內核中的虛擬化基礎設施。
KVM眼下支持Intel VT及AMD-V的原生虛擬技術。
1)是x86架構且硬件支持虛擬化技術(如 intel VT 或 AMD-V)的Linux全虛擬化解決方式。
2)它包括一個為處理器提供底層虛擬化 可載入的核心模塊kvm.ko(kvm-intel.ko或kvm-AMD.ko)。
3)KVM還須要一個經過改動的QEMU軟件(qemu-kvm)。作為虛擬機上層控制和界面。
4)在主流的Linux內核,如2.6.20以上的內核均已包括了KVM核心。
5)KVM能在不改變linux或windows鏡像的情況下同一時候執行多個虛擬機,(它的意思是多個虛擬機使用同一鏡像)並為每個虛擬機配置個性化硬件環境(網卡、磁盤、圖形適配器……)。
能夠對kvm進行控制管理的組件主要有兩個:
QEMU-KVM:
在 Linux 系統中,首先我們能夠用 modprobe 系統工具去載入 KVM 模塊,假設用 RPM 安裝 KVM 軟件包,系統會在啟動時自己主動載入模塊。載入了模塊后,才干進一步通過其它工具創建虛擬機。
但僅有 KVM 模塊是遠遠不夠的。由於用戶無法直接控制內核模塊去做事情。還必須有一個用戶空間的工具。
關於用戶空間的工具,KVM 的開發人員選擇了已經成型的開源虛擬化軟件 QEMU。QEMU 是一個強大的虛擬化軟件。它能夠虛擬不同的 CPU 構架。比方說在 x86 的 CPU 上虛擬一個 Power 的 CPU。並利用它編譯出可執行在 Power 上的程序。KVM 使用了 QEMU 的基於 x86 的部分,並稍加改造,形成可控制 KVM 內核模塊的用戶空間工具 QEMU-KVM。
所以 Linux 發行版中分為 kernel 部分的 KVM 內核模塊和 QEMU-KVM 工具。這就是 KVM 和 QEMU 的關系。
Libvirt/Virsh/Virt-manager:
雖然 QEMU-KVM 工具能夠創建和管理 KVM 虛擬機。RedHat 為 KVM 開發了更通用的輔助工具libvirt。Libvirt 是一套提供了多種語言接口的 API,為各種虛擬化工具提供一套方便、可靠的編程接口,不僅支持 KVM,而且支持 Xen 等其它虛擬機。使用 libvirt,你僅僅須要通過 libvirt 提供的函數連接到 KVM 或 Xen 宿主機。便能夠用相同的命令控制不同的虛擬機了。
Libvirt 不僅提供了 API,還自帶一套基於文本的管理虛擬機的命令 virsh。你能夠通過使用 virsh 命令來使用 libvirt 的所有功能。
同一時候還能使用圖形界面進行管理操作,其工具是 Virt-manager。他是一套用 python 編寫的虛擬機管理圖形界面。用戶能夠通過它直觀地操作不同的虛擬機。
Virt-manager 就是利用 libvirt 的 API 實現的。
安裝說明:
在該篇博客中。我主要通過kvm虛擬化安裝2個操作系統
1、centos 6.7
2、windows 7
安裝前注意。須要在BIOS中開啟例如以下兩個功能:
VT(Virtualization Technology):處理器虛擬化硬件支持
VT-D(Virtualization Techonlogy for Directed I/O):I/O設備虛擬化硬件支持
准備工作:
系統鏡像(CentOS-6.7-x86_64-bin-DVD1)
系統鏡像(Source_WIN7_x64)
二、KVM安裝
1、設置時間
2、查看CPU是否支持
vmx:Intel系列CPU支持虛擬化標志
svm:AMD系列CPU支持虛擬化標志
3、Libvirt/Virsh/Virt-manager 組件安裝,並設置為開機執行。
記得先加入 /etc/hosts ,不然會報錯:Name or service not known
安裝包介紹:
libvirt-client # libvirt的client,最重要的功能之中的一個就是在宿主機關機時能夠通知虛擬機也關機 gpxe-roms-qemu # 虛擬機 iPXE 的啟動固件,支持虛擬機從網絡啟動 libvirt-python # libvirt 為 python 提供的 API python-virtinst # 一套 Python 的虛擬機安裝工具 qemu-kvm # KVM 在用戶空間執行的程序 libvirt # 用於管理虛擬機,它提供了一套虛擬機操作 API virt-manager # 基於 libvirt 的圖像化虛擬機管理軟件 virt-viewer # 顯示虛擬機的控制台 Console virt-top # 相似於 top 命令,查看虛擬機的資源使用情況 virt-what # 在虛擬機內部執行,查看虛擬機執行的虛擬化平台 qemu-img # 用於操作虛擬機硬盤鏡像的創建、查看和格式轉化
4、檢查kvm模塊並進行載入
kvm模塊:該模塊實現虛擬化核心基礎架構。與硬件平台無關
kvm_intel:該模塊主要涉及到硬件虛擬化
假設沒有檢測到模塊。則執行(一般用rpm安裝kvm包,系統會在啟動時自己主動載入模塊。
):
模塊文件在系統該位置:
5、校驗kvm是否成功安裝。假設以下為空,則表示沒問題
假設報錯。例如以下圖。則啟動 libvirtd 服務,而且設置開機啟動
三、kvm網絡配置
client安裝完畢后,須要為其設置網絡接口。以便和主機網絡、客戶機之間的網絡通信。其實,假設要在安裝時使用網絡通信,須要提前設置客戶機的網絡連接。
kvm客戶機網絡連接有兩種方式:
- 用戶網絡(User Networking):NAT方式,讓虛擬機訪問主機、互聯網或本地網絡上的資源的簡單方法,可是不能從網絡或其它的客戶機訪問客戶機。性能上也須要大的調整。
- 虛擬網橋(Virtual Bridge):Bridge方式。這樣的方式要比用戶網絡復雜一些,可是設置好客戶機與互聯網,客戶機與主機之間的通信都非常easy。
Bridge方式原理:
Bridge方式即虛擬網橋的網絡連接方式。是客戶機和子網里面的機器能夠互相通信。能夠使虛擬機成為網絡中具有獨立IP的主機。
橋接網絡(也叫物理設備共享)被用作把一個物理設備拷貝到一台虛擬機。網橋多用作高級設置。特別是主機多個網絡接口的情況。
Bridge方式的適用范圍:
服務器主機虛擬化。
Bridge方式配置網橋步驟:
注:網橋模式須要在真機 ifcfg-eth0 配置文件里加入 BRIDGE=”br0”,否則真機與虛擬機無法互通。
配置完畢后 eth0 口則不會顯示地址信息,新配置的 br0 口會取代 eth0 口成為真機網口,裝好的虛擬機 eth0 口將於真機 br0 口互通。
1、編輯改動網絡設備腳本文件。改動網卡設備eth0
NM_CONTROLLED這個屬性值,依據redhat公司的文檔是必須設置為“no”的(這個值為“yes”表示能夠由服務NetworkManager來管理。
NetworkManager服務不支持橋接,所以要設置為“no”。
)。但實際上發現設置為“yes”沒有問題。通訊正常。
2、編輯改動網絡設備腳本文件,添加網橋設備br0,而且重新啟動網卡
3、配置完畢之后查看網卡。原來的 eth0:10.1.0.51 地址已經變為 br0:10.1.0.50。而且查看橋接接口。
四、安裝圖形化界面及配置 VNC 服務
1、配置橋接網絡后,我們通過 Virt-manager 工具安裝。Virt-manager 是一個圖形化的虛擬機管理工具,它提供了一個簡易的虛擬機操作界面,要使用它,須要先安裝圖形化界面。(至於為什么使用圖形界面安裝虛擬機 …… 由於本人也是剛學kvm虛擬化……,所以臨時先這樣吧~):
2、一般來說,服務器都是在 IDC 機房的。為了看到宿主機的圖形化界面,還須要安裝配置 VNC。
安裝 VNC 程序軟件包 tigervnc 和 tigervnc-server
編輯 vncserver 配置文件 /etc/sysconfig/vncservers,配置宿主機 VNC 虛擬機顯示器為1,端口是5901;虛擬機顯示器[2]的監聽IP是 0.0.0.0,虛擬機顯示器[1]監聽127.0.0.1,分辨率 800x600
設置 VNC 密碼,而且重新啟動 vncserver 服務
通過client連接 vncserver,而且輸入 ip:port 及 password
四、使用 Virt-manager 創建kvm虛擬機
前面我們介紹過,Virt-manager 是圖形界面進行管理操作的工具,那接來下我就通過 Virt-manager 進行創建虛擬機,在這之前,先查看我前面提到須要准備的鏡像文件。
1、創建 kvm Centos-6.5 虛擬機
1)執行 Virt-manager 軟件
2)點擊 —> Computer圖標 —> 輸入虛擬機名稱 —> 選擇本地ISO —> 點擊 Forward
3)選擇 CentOS-6.5 ISO 文件 —> OS type —> Version —> 點擊 Forward
4)選擇 Memory(RAM) —> CPUs —> 點擊 Forward
5)分配磁盤大小 —> 點擊 Forward
6)選擇 Customize configuration before install —> 點擊 Advanced options —> 選擇 Host Device eth0 (Bridge ‘br0’) —> 選擇 Virt type:kvm —> 選擇 Architecture:x86_64 —> 點擊Finish
7)在自己定義界面中 —> NIC配置 —> 選擇 Device model:virtio —> 而且點擊 Begin installation
8)在下圖中能夠看到正在執行的虛擬機,開始安裝系統
9)虛擬機centos6.7 已經安裝完畢~ 通過 xshell 終端及 ping 進行測試,能否夠訪問外網
主機名:kvm-virtual-centos6.7
IP地址:10.1.0.60
至此,第一台虛擬機 Centos6.7 已經安裝完畢,而且能夠使用
2、創建 kvm Windows 7 虛擬機(后期添加)
創建windows虛擬機的配置和centos差點兒一樣,僅僅只是使用不同的ISO鏡像及操作系統選項。安裝過程在此略過 ……
五、查看 centos6.5 和 windows7 虛擬機磁盤文件
1)以樹狀查看 libvirt 下所有文件夾
2)查看虛擬機磁盤文件
3)虛擬機 socket 文件及 save、dump、snapshot 文件夾
4)虛擬機xml配置文件(注:改圖為后補,該實驗中名稱應該為Centos-6.5.xml)
http://www.cnblogs.com/zhchoutai/p/7400498.html