1. 程式人生 > >kvm 虛擬化概述及 virt-manager 安裝虛擬機器

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)

這裡寫圖片描述