基於內核的虛擬機(英語:Kernel-based Virtual Machine,簡稱KVM),是一種用於Linux內核中的虛擬化基礎設施。KVM目前支持Intel VT及AMD-V的原生虛擬技術。python
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進行控制管理的組件主要有兩個:linux
QEMU-KVM:shell
在 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:windows
儘管 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 實現的。centos
安裝說明:服務器
在該篇博客中,我主要經過kvm虛擬化安裝2個操做系統
一、centos 6.7
二、windows 7網絡
安裝前注意,須要在BIOS中開啓以下兩個功能:架構
VT(Virtualization Technology):處理器虛擬化硬件支持
VT-D(Virtualization Techonlogy for Directed I/O):I/O設備虛擬化硬件支持socket
準備工做:
系統鏡像(CentOS-6.7-x86_64-bin-DVD1)
系統鏡像(Source_WIN7_x64)
一、設置時間
二、查看CPU是否支持
vmx:Intel系列CPU支持虛擬化標誌
svm:AMD系列CPU支持虛擬化標誌
三、Libvirt/Virsh/Virt-manager 組件安裝,並設置爲開機運行。
記得先添加 /etc/hosts ,否則會報錯:Name or service not known
安裝包介紹:
libvirt-client # libvirt的客戶端,最重要的功能之一就是在宿主機關機時能夠通知虛擬機也關機 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 # 用於操做虛擬機硬盤鏡像的建立、查看和格式轉化
四、檢查kvm模塊並進行加載
kvm模塊:該模塊實現虛擬化核心基礎架構,與硬件平臺無關
kvm_intel:該模塊主要涉及到硬件虛擬化
若是沒有檢測到模塊,則執行(通常用rpm安裝kvm包,系統會在啓動時自動加載模塊。):
模塊文件在系統該位置:
五、校驗kvm是否安裝成功,若是下面爲空,則表示沒問題
若是報錯,以下圖,則啓動 libvirtd 服務,而且設置開機啓動
客戶端安裝完成後,須要爲其設置網絡接口,以便和主機網絡、客戶機之間的網絡通訊。事實上,若是要在安裝時使用網絡通訊,須要提早設置客戶機的網絡鏈接。
kvm客戶機網絡鏈接有兩種方式:
Bridge方式原理:
Bridge方式即虛擬網橋的網絡鏈接方式,是客戶機和子網裏面的機器可以互相通訊。可使虛擬機成爲網絡中具備獨立IP的主機。
橋接網絡(也叫物理設備共享)被用做把一個物理設備複製到一臺虛擬機。網橋多用做高級設置,特別是主機多個網絡接口的狀況。
Bridge方式的適用範圍:
服務器主機虛擬化。
Bridge方式配置網橋步驟:
注:網橋模式須要在真機 ifcfg-eth0 配置文件中添加 BRIDGE=」br0」,不然真機與虛擬機沒法互通。
配置完畢後 eth0 口則不會顯示地址信息,新配置的 br0 口會代替 eth0 口成爲真機網口,裝好的虛擬機 eth0 口將於真機 br0 口互通。
一、編輯修改網絡設備腳本文件,修改網卡設備eth0
NM_CONTROLLED這個屬性值,根據redhat公司的文檔是必須設置爲「no」的(這個值爲「yes」表示能夠由服務NetworkManager來管理。NetworkManager服務不支持橋接,因此要設置爲「no」。),但實際上發現設置爲「yes」沒有問題。通信正常。
二、編輯修改網絡設備腳本文件,增長網橋設備br0,而且重啓網卡
三、配置完成以後查看網卡,原來的 eth0:10.1.0.51 地址已經變爲 br0:10.1.0.50,而且查看橋接接口。
一、配置橋接網絡後,咱們經過 Virt-manager 工具安裝,Virt-manager 是一個圖形化的虛擬機管理工具,它提供了一個簡易的虛擬機操做界面,要使用它,須要先安裝圖形化界面。(至於爲何使用圖形界面安裝虛擬機 …… 因爲本人也是剛學kvm虛擬化……,因此暫時先這樣吧~):
二、通常來講,服務器都是在 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 服務
經過客戶端鏈接 vncserver,而且輸入 ip:port 及 password
前面咱們介紹過,Virt-manager 是圖形界面進行管理操做的工具,那接來下我就經過 Virt-manager 進行建立虛擬機,在這以前,先查看我前面提到須要準備的鏡像文件。
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 已經安裝完成,而且可使用
建立windows虛擬機的配置和centos幾乎同樣,只不過使用不一樣的ISO鏡像及操做系統選項。安裝過程在此略過 ……
1)以樹狀查看 libvirt 下全部目錄
2)查看虛擬機磁盤文件
3)虛擬機 socket 文件及 save、dump、snapshot 目錄
4)虛擬機xml配置文件(注:改圖爲後補,該實驗中名稱應該爲Centos-6.5.xml)