KVM

1.1 前言

1.1.1 什麼是虛擬化?

在計算機技術中,虛擬化(技術)或虛擬技術(英語:Virtualization)是一種資源管理技術,是將計算機的各類實體資源(CPU、內存、磁盤空間、網絡適配器等),予以抽象、轉換後呈現出來並可供分區、組合爲一個或多個電腦配置環境。html

 

圖 - 虛擬化示意圖linux

由此,打破實體結構間的不可切割的障礙,使用戶能夠比本來的配置更好的方式來應用這些電腦硬件資源。這些資源的新虛擬部分是不受現有資源的架設方式,地域或物理配置所限制。ubuntu

通常所指的虛擬化資源包括計算能力和數據存儲。windows

因爲目前信息技術領域的不少企業都曾在宣傳中將該企業的某種技術稱爲虛擬化技術,這些技術涵蓋的範圍能夠從Java虛擬機技術到系統管理軟件,這就使得準確的界定虛擬技術變得困難。所以各類相關學術論文在談到虛擬技術時經常提到的即是如前面所提到的那個不嚴格的定義。centos

1.1.2 爲何要用虛擬化

  🏆同一臺物理機運行多個不一樣版本應用軟件瀏覽器

  🏆硬件依賴性較低和便於數據遷移安全

 

圖 - 虛擬化先後對比服務器

   詳情參考<1.1.3 虛擬化技術的優點>。網絡

1.1.3 虛擬化技術的優點

  1.下降運營成本架構

  服務器虛擬化下降了IT基礎設施的運營成本,令系統管理員擺脫了繁重的物理服務器、OS、中間件及兼容性的管理工做,減小人工干預頻率,使管理更增強大、便捷。

  2.提升應用兼容性

  服務器虛擬化提供的封裝性和隔離性使大量應用獨立運行於各類環境中,管理人員不需頻繁根據底層環境調整應用,只需構建一個應用版本並將其發佈到虛擬化後的不一樣類型平臺上便可。

  3.加速應用部署

  採用服務器虛擬化技術只需輸入激活配置參數、拷貝虛擬機、啓動虛擬機、激活虛擬機便可完成部署,大大縮短了部署時間,免除人工干預,下降了部署成本。

  4.提升服務可用性

  用戶能夠方便地備份虛擬機,在進行虛擬機動態遷移後,能夠方便的恢復備份,或者在其餘物理機上運行備份,大大提升了服務的可用性。

  5.提高資源利用率

  經過服務器虛擬化的整合,提升了CPU、內存、存儲、網絡等設備的利用率,同時保證原有服務的可用性,使其安全性及性能不受影響。

  6.動態調度資源

  在服務器虛擬化技術中,數據中心從傳統的單一服務器變成了統一的資源池,用戶能夠即時地調整虛擬機資源,同時數據中心管理程序和數據中心管理員能夠靈活根據虛擬機內部資源使用狀況靈活分配調整給虛擬機的資源。

  7.下降能源消耗

  經過減小運行的物理服務器數量,減小CPU之外各單元的耗電量,達到節能減排的目的。

1.1.4 KVM簡介

 

  KVM,基於內核的虛擬機(英語:Kernel-based Virtual Machine,縮寫爲 KVM),是一種用於Linux內核中的虛擬化基礎設施,能夠將Linux內核轉化爲一個hypervisor。KVM在2007年2月被導入Linux 2.6.20核心中,以可加載核心模塊的方式被移植到FreeBSD及illumos上。

  KVM在具有Intel VT或AMD-V功能的x86平臺上運行。它也被移植到S/390,PowerPC與IA-64平臺上。在Linux內核3.9版中,加入ARM架構的支持。

  KVM目前由Red Hat等廠商開發,對CentOS/Fedora/RHEL等Red Hat系發行版支持極佳。

1.1.5 關於KVM

  1. KVM是開源軟件,全稱是kernel-based virtual machine(基於內核的虛擬機)。
  2. 是x86架構且硬件支持虛擬化技術(如 intel VT 或 AMD-V)的Linux全虛擬化解決方案。
  3. 它包含一個爲處理器提供底層虛擬化 可加載的核心模塊kvm.ko(kvm-intel.ko或kvm-AMD.ko)。
  4. KVM還須要一個通過修改的QEMU軟件(qemu-kvm),做爲虛擬機上層控制和界面。
  5. KVM能在不改變linux或windows鏡像的狀況下同時運行多個虛擬機,(它的意思是多個虛擬機使用同一鏡像)併爲每個虛擬機配置個性化硬件環境(網卡、磁盤、圖形適配器……)同時KVM還可以使用ksm技術幫助宿主服務器節約內存。
  6. 在主流的Linux內核,如2.6.20以上的內核均已包含了KVM核心。

1.1.6 關於Virtual Machine Manager

  在電腦運算中,紅帽公司的Virtual Machine Manager是一個虛擬機管理員,可讓用戶管理多個虛擬機。

  基於內核的虛擬機libvirt與Virtual Machine Manager。 

Virtual Machine Manager可讓用戶

  🎃 建立、編輯、引導或中止虛擬機。

  🎃 查看並控制每一個虛擬機的控制檯。

  🎃 查看每部虛擬機的性能以及使用率。

  🎃 查看每部正在運行中的虛擬機以及主控端的即時性能及使用率信息。

  🎃 不管是在本機或遠程,皆可以使用KVM、Xen、QEMU。

 

圖 -  libvirt服務

1.1.7 其餘虛擬化軟件

🍪 Xen

  Xen是一個開放源代碼虛擬機監視器,由XenProject開發。它打算在單個計算機上運行多達128個有徹底功能的操做系統。

  在舊(無虛擬硬件)的處理器上執行Xen,操做系統必須進行顯式地修改(「移植」)以在Xen上運行(可是提供對用戶應用的兼容性)。這使得Xen無需特殊硬件支持,就能達到高性能的虛擬化。

🍪 QEMU

  QEMU是一套由Fabrice Bellard所編寫的模擬處理器的自由軟件。它與Bochs,PearPC近似,但其具備某些後二者所不具有的特性,如高速度及跨平臺的特性。經由KVM(早期爲kqemu加速器,如今kqemu已被KVM取代)這個開源的加速器,QEMU能模擬至接近真實電腦的速度。QEMU有兩種主要運做模式:

  User mode模擬模式,亦便是用戶模式。

  QEMU能引導那些爲不一樣中央處理器編譯的Linux程序。而Wine及Dosemu是其主要目標。

  System mode模擬模式,亦便是系統模式。

  QEMU能模擬整個電腦系統,包括中央處理器及其餘周邊設備。它使得爲系統源代碼進行測試及除錯工做變得容易。其亦能用來在一部主機上模擬數部不一樣虛擬電腦。

1.2 KVM部署與使用

系統環境說明

 

1.2.1 安裝KVM虛擬化軟件

安裝依賴包(可使用本地yum源)

 

安裝軟件說明內容:

 

啓動服務

 

安裝VNC軟件:

  下載vnc軟件方法,tightvnc官網:http://www.tightvnc.com

  VNC軟件,用於VNC(Virtual Network Computing),爲一種使用RFB協議的顯示屏畫面分享及遠程操做軟件。此軟件藉由網絡,可發送鍵盤與鼠標的動做及即時的顯示屏畫面。

  VNC與操做系統無關,所以可跨平臺使用,例如可用Windows鏈接到某Linux的電腦,反之亦同。甚至在沒有安裝客戶端程序的電腦中,只要有支持JAVA的瀏覽器,也可以使用。

  安裝VNC時,使用默認安裝便可,無需安裝server端。

 

圖 - vnc軟件

1.2.2 配置第一臺KVM虛擬機

使用命令

 

  注意:須要先將鏡像文件拷貝到 /data/CentOS-7-x86_64-DVD-1511.iso 。

使用參數說明: 

 

參數

參數說明

--virt-type HV_TYPE

要使用的管理程序名稱 (kvm, qemu, xen, ...)

--os-type

系統類型

--os-variant DISTRO_VARIANT

在客戶機上安裝的操做系統,例如:'fedora18'、'rhel6'、'winxp' 等。

-n NAME, --name NAME

客戶機實例名稱

--memory MEMORY

配置客戶機虛擬內存大小

--vcpus VCPUS

配置客戶機虛擬 CPU(vcpu) 數量。

--disk DISK

指定存儲的各類選項。

-cdrom CDROM    

光驅安裝介質

-w NETWORK, --network NETWORK

配置客戶機網絡接口。

--graphics GRAPHICS

配置客戶機顯示設置。

虛擬化平臺選項:

-v, --hvm          

這個客戶機應該是一個全虛擬化客戶機

-p, --paravirt     

這個客戶機應該是一個半虛擬化客戶機

--container        

這個客戶機應該是一個容器客戶機

--virt-type HV_TYPE

要使用的管理程序名稱 (kvm, qemu, xen, ...)

--arch ARCH        

模擬 CPU 架構

--machine MACHINE

機器類型爲仿真類型

其它選項:

--noautoconsole

不要自動嘗試鏈接到客戶端控制檯

--autostart

主機啓動時自動啓動域。

--noreboot  

安裝完成後不啓動客戶機。

以上信息經過 " virt-install --help " 得到。

   在啓動的同時使用vnc鏈接

 

   下面就進入到安裝系統的操做,關於系統安裝的方法參考:http://www.cnblogs.com/clsn/p/7489784.html

1.2.3 KVM虛擬機管理操做

  virsh命令經常使用參數總結

 

參數

參數說明

基礎操做

list

查看虛擬機列表,列出域

start

啓動虛擬機,開始一個(之前定義的)非活躍的域

shutdown

關閉虛擬機,關閉一個域

destroy(危險)

強制關閉虛擬機,銷燬(中止)域

vncdisplay

查詢虛擬機vnc端口號

配置管理操做

dumpxml

導出主機配置信息

undefine

刪除主機

define

導入主機配置

domrename

對虛擬機進行重命名

掛起與恢復

suspend

掛起虛擬機

resume

恢復虛擬機

自啓動管理

autostart

虛擬機開機啓動

autostart --disable

取消虛擬機開機啓動

以上參數經過  「virsh  --help」 得到。

操做過程:

KVM虛擬機配置文件位置

 

修改KVM虛擬機配置的方法

 

   使用該命令修改能夠對文件進行語法校驗。

備份與恢復

備份虛擬機配置(關機時備份):

 

刪除虛擬機配置

 

導入虛擬機

 

修改虛擬機名稱

 

虛擬機掛起與恢復

 

恢復虛擬機

 

查詢虛擬機vnc端口

 

開機自啓動設置

 

   設置宿主機開機虛擬機在其餘

 

取消開機自啓動

 

1.3 kvm虛擬機console登陸

1.3.1 CentOS 7.X 版本console登陸

配置console登陸

在clsn7虛擬機內操做(該操做僅限centos7):

 

重啓完成後,使用virsh console 鏈接虛擬機。

 

1.3.2 CentOS 6.X 版本console登陸

使用virsh console鏈接CentOS 6虛擬主機方法:

  安裝一臺centos6的kvm虛擬機

 

  新安裝一臺虛擬機後,是沒法經過virsh console 命令連入虛擬機中的,這時咱們須要開啓虛擬機的console功能。

  如下操做都在虛擬機中進行

一、添加ttyS0的許可,容許root登錄

 

二、編輯/etc/grub.conf中加入console=ttyS0

   在該文件的第16行。kernel選項後添加

 

三、編輯/etc/inittab

  在最後一行加入內容 S0:12345:respawn:/sbin/agetty ttyS0 115200

 

四、以上操做都完成後,重啓虛擬機

 

  如下操做在kvm宿主機上執行

一、檢查虛擬機的狀態

 

二、進行鏈接測試

 

1.4 KVM虛擬機磁盤、快照與克隆

1.4.1 磁盤管理

  KVM qcow二、raw、vmdk等鏡像格式說明:http://blog.csdn.net/zhengmx100/article/details/53887162

 

查看當前虛擬機硬盤信息

 

raw轉qcow2格式:

 

轉換原有磁盤格式

 

修改clsn7 虛擬機配置文件

 

刪除原磁盤文件

 

啓動虛擬機

 

1.4.2 KVM虛擬機添加硬盤

進入硬盤存放目錄

 

建立一塊新的硬盤

 

查看建立的硬盤信息

 

爲虛擬機添加硬盤

 

參數說明:

 

 

參數

參數說明

vdb 

第二塊硬盤

--live

熱添加

--subdriver

驅動類型

調整已添加硬盤的大小

 

將已掛載的磁盤卸載下來

 

調整磁盤大小

 

   增長1G容量

 

從新講磁盤添加到虛擬機

 

  如下在虛擬機中操做

格式化磁盤

 

掛載磁盤

 

使用 xfs_growfs 刷新磁盤的信息

 

1.4.3 快照管理

  注意:raw格式的磁盤沒法建立快照

建立快照

 

查看主機快照列表

 

查看快照信息

 

登錄虛擬機,進行刪除操做

 

還原快照

 

刪除快照

 

快照配置文件位置

 

1.4.4 kvm虛擬機克隆

  複製一個虛擬機,需修改如 MAC 地址,名稱等全部主機端惟一的配置。

  虛擬機的內容並無改變:virt-clone 不修改任何客戶機系統內部的配置,它只複製磁盤和主機端的修改。因此像修改密碼,修改靜態 IP 地址等操做都在本工具複製範圍內。如何修改此類型的配置,請參考 virt-sysprep。

  克隆經常使用命令:

 

參數說明:

 

 

參數

參數說明

--auto-clone   

從原始客戶機配置中自動生成克隆名稱和存儲路徑。

-o ORIGINAL_GUEST, 

--original ORIGINAL_GUEST

原始客戶機名稱;必須爲關閉或者暫停狀態。

1.5 kvm虛擬機網絡管理

1.5.1 橋接網絡配置

一、設置橋接網絡

 

   查看網卡配置文件

 

二、修改虛擬機網絡配置

 

   查看宿主機網橋

 

   查看防火牆規則:

 

三、修改kvm虛擬機網卡配置文件

 

測試網絡連通性

 

1.6 KVM虛擬機冷/熱遷移

  在進行遷移以前須要準備一臺與KVM配置相同的機器(KVM02),部署好kvm環境。

1.6.1 虛擬機冷遷移

  在kvm02中安裝kvm組件

 

  配置橋接網絡

 

  將虛擬機關機,導出配置文件

 

  將虛擬機文件傳輸到kvm02上

 

  導入配置文件

 

  啓動虛擬機

 

  查看虛擬機狀態

 

    至此,一次KVM冷遷移就完成了

1.6.2 virt-manager和kvm虛擬機熱遷移(準備)

  實現kvm虛擬機熱遷移核心:共享存儲。在這裏使用的時NFS共享存儲,關於nfs的詳情參考:http://www.cnblogs.com/clsn/p/7694456.html

一、安裝virt-manager所需桌面及vnc-server

 

二、配置vnc服務

複製vnc配置文件

 

修改配置文件,主要修改<USER>參數。

 

官方提供修改方法

 

設置vnc鏈接時的密碼,

 

啓動vnc服務,設置開機自啓動

 

查看密碼文件及其餘配置文件位置

 

三、配置NFS存儲

安裝軟件

 

修改配置文件

 

啓動nfs程序

 

在kvm02上安裝nfs

 

   查看共享信息

 

   掛載目錄

 

1.6.3 KVM虛擬機熱遷移(實現)

vnc鏈接KVM宿主機:

 

圖 - 鏈接地址

 

圖 - 輸入vnc密碼

 

圖 - 使用vmm 虛擬系統管理器

添加KVM02宿主機

 

圖 - 添加新鏈接

注:鏈接上KVM02機器便可

 

圖 - 添加上kvm02主機

 

圖 - 主機添加完成

主機熱遷移

 

圖 - 遷移1

 

圖 - 遷移2,選擇要遷移到目的主機

 

圖 - 遷移過程

 

圖 - 遷移完成

在kvm02上查看虛擬機狀態

 

虛擬機配置查看方法:

 

圖 - clsn7 虛擬機配置信息

說明:在熱遷移的過程當中可能會參數丟包的狀況,通常不會超過1個包。

 

  至此,一次熱遷移就完成了

1.7 KVM連接克隆

連接克隆腳本

 

說明:

1.7.1 手動克隆

第一步:複製虛擬磁盤文件
第二步:修改xml配置文件
  1)name
  2)uuid
  3)虛擬磁盤存儲路徑
  4)mac地址

1.7.2腳本實現思路

 

1.8 參考文獻

[1]  https://zh.wikipedia.org/wiki/

[2]  http://virtual.51cto.com/art/201303/386133.htm

[3]  https://virt-manager.org

[4]  https://zh.wikipedia.org/wiki/基於內核的虛擬機

[5]  https://libvirt.org

[6]  [ kvm ] 四種簡單的網絡模型 http://www.javashuo.com/article/p-fmmyaulg-en.html

[7]  http://www.javashuo.com/article/p-eahmcwen-eu.html

[8]  http://wiki.ubuntu.org.cn/Kvm教程

相關文章
相關標籤/搜索