kvm 虛擬化概述及 virt-manager 安裝虛擬機器
一、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的客戶端,最重要的功能之一就是在宿主機關機時可以通知虛擬機器也關機
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網路配置
客戶端安裝完成後,需要為其設定網路介面,以便和主機網路、客戶機之間的網路通訊。事實上,如果要在安裝時使用網路通訊,需要提前設定客戶機的網路連線。
kvm客戶機網路連線有兩種方式:
- 使用者網路(User Networking):NAT方式,讓虛擬機器訪問主機、網際網路或本地網路上的資源的簡單方法,但是不能從網路或其他的客戶機訪問客戶機,效能上也需要大的調整。
- 虛擬網橋(Virtual Bridge):Bridge方式,這種方式要比使用者網路複雜一些,但是設定好客戶機與網際網路,客戶機與主機之間的通訊都很容易。
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 服務
通過客戶端連線 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)