KVM 虛擬化的實現

1、KVM 虛擬化服務的構成前端

KVM 虛擬化主要由三大組件構成,即:KVM、QEMU、LIBVIRTDnode

一、KVM:KVM 是 Linux 內核的模塊,他須要 CPU 的支持,採用硬件輔助虛擬化技術 Intel-VT,AMD-V,內存的相關如 Intel 的EPT 和 AMD 的 RVI 技術。python

二、QEMU:QEMU是一個虛擬化的仿真工具,經過 ioctl 與內核 kvm 交互完成對硬件虛擬化的支持。vim

三、LIBVIRTD:Libvirtd 是一個對虛擬化管理的接口和工具,提供用戶端程序 virsh,virt-install,virt-manager,virt-view 與用戶交互。後端

2、虛擬化服務的必備軟件centos

qemu-kvm:爲 KVM 提供底層仿真支持bash

libvirt-daemon:守護進程,管理虛擬機服務器

libvirt-client:用戶端軟件,提供客戶端管理命令網絡

libvirt-daemon-driver-qemu:libvirt 鏈接 qemu 的驅動ssh

可選軟件

virt-install :系統安裝工具

virt-manager :圖形管理工具

virt-v2v :虛擬機遷移工具

virt-p2v :物理機遷移工具

3、虛擬機的組成

一、內核虛擬化模塊(KVM)

二、系統設備仿真(QEMU)

三、虛擬機管理程序(LIBVIRT)

四、XML 文件(虛擬機配置聲明文件,位置 /etc/libvirt/qemu/ )

五、磁盤鏡像文件(虛擬機的硬盤,位置 /var/lib/libvirt/iamges/ )

4、虛擬機管理

使用 virsh 命令對 kvm 虛擬機進行常規管理。

a、查看虛擬機信息

一、查看 KVM 節點(服務器)信息

virsh nodeinfo

二、列出虛擬機

virsh list [--all]

三、列出虛擬網絡

virsh net-list [--all]

四、查看指定虛擬機的信息

virsh nodeinfo 虛擬機名稱

b、開關機操做

一、運行|重啓|關閉 指定的虛擬機

virsh start|reboot|shutdown 虛擬機名稱

二、強制關閉指定虛擬機

virsh destory 虛擬機名稱

三、將指定虛擬機設置爲開機自動運行

virsh autostart [--disable] 虛擬機名稱

5、經常使用鏡像盤類型對比

clipboard

通過以上表格的鏡像盤格式對比,咱們能夠很確定的知道,KVM 使用 QCOW2 格式的鏡像盤時,對服務器資源的利用率最高的,固然系統默認的鏡像盤格式。

6、虛擬機磁盤管理

使用命令 qemu-img

a、使用 qemu-img 命令對虛擬機的磁盤進行管理。

b、qemu-img 支持很是多的磁盤格式,例如 raw、qcow二、vdi、vmdk 等等。

c、qemu-img 命令格式


qemu-img 命令 參數 塊文件名稱 大小
經常使用命令有:
create           建立一個磁盤
convert          轉換磁盤格式
info             查看磁盤信息
snapshot         管理磁盤快照
一、建立鏡相盤文件
qemu-img create -f 格式 磁盤路徑 大小
例如:
qemu-img create -f qcow2 disk.img 50G
表示建立一個名爲 disk.img,大小爲 50G,格式爲 qcow2 的鏡像盤文件
二、查看鏡像盤文件的信息
qemu-img info 磁盤路徑
例如:
qemu-img info disk.img
三、加 -b 參數使用後端模板文件
例如:
qemu-img create -b disk.img -f qcow2 disk1.img
表示之後端鏡像盤 disk.img 爲模板,建立一個名爲 disk1.img 格式爲 qcow2 的鏡像盤,這裏沒有指定大小,表示與後端鏡像盤 disk.img 相同大小。

7、COW 技術原理

COW,即:Copy On Write 寫時複製,該技術主要實現如下功能

a、直接映射原始盤的數據內容

b、當原始的舊數據有修改時,再修改以前自動將舊數據存入前端盤

c、對前端盤的修改不回寫到原始盤

以下圖所示:

clipboard

在 KVM 虛擬化中,對於 COW 技術的運用可謂是無處不在,最明顯的莫過於虛擬機的克隆。

8、KVM 虛擬機的遠程管理

a、使用 virsh 客戶端工具

一、鏈接本地

[root@localhost ~]# virsh -c qemu:///system (默認選項)

二、鏈接遠程

[root@localhost ~]# virsh -c qemu+ssh://user@ip.xx.xx.xx:port/system

b、使用 virt-manager 客戶端工具

一、virt-manager 也能夠經過 add connection 管理其它機器上的虛擬機,通常經過 「 remote tunnel over ssh 」 就能夠了。

二、須要注意的是 virt-manager 須要使用 ssh 免密登錄,若是沒有免密登錄,須要單獨安裝 python 的 ssh 相關模塊,這裏咱們可使用部署 key 的方法解決。

9、建立虛擬交換機

a、原理:調用 dnsmasp 提供 DNS、DHCP 等功能

b、建立配置文件 /etc/libvirt/qemu/networks/default.xml,並粘貼如下內容:

<network>
   <name>default</name>
   <bridge name="virbr0"/>
   <forward mode="nat"/>
   <ip address="192.168.20.254" netmask="255.255.255.0">
      <dhcp>
         <range start="192.168.20.1" end="192.168.1.200"/>
      </dhcp>
   </ip>
</network>
[root@localhost ~]# cd /etc/libvirt/qemu/networks/
[root@localhost networks]# vim default.xml

image

注意:bridge name="virbr0",這裏時網卡名稱,必定要與服務器的網卡名稱相同,否則會報錯。

c、使用 virsh 管理虛擬網絡

net-list                          查看虛擬網絡
net-define default.xml                  建立虛擬網絡
net-undefine default                   刪除虛擬網絡
net-start default                     啓動虛擬網絡
net-destroy default                    中止虛擬網絡
net-edit default                     修改 default 的網絡配置
net-autostart default                   設置 default 虛擬網絡開機啓動

建立虛擬網絡

[root@localhost networks]# virsh net-define eth1.xml

10、XML 管理

a、XML 配置文件說明

一、定義了一個虛擬機的名稱、CPU、內存、虛擬磁盤、網卡等各類參數。

二、默認位於 /etc/libvirt/qemu/虛擬機名稱.xml。

b、導出 XML 配置文件

一、查看:virsh dumpxml 虛擬機名稱。

二、備份:virsh dumpxml 虛擬機名稱 > 虛擬機名稱.xml。

c、編輯虛擬機設置

一、對虛擬機的配置進行調整

①、編輯:virsh edit 虛擬機名稱。

②、若修改 name、memory、disk、network,可自動保存爲新虛擬機配置。

二、定義虛擬機

根據修改後的獨立的 xml 文件定義新虛擬機。

virsh define XML描述文件

三、刪除虛擬機

必要時能夠刪除多餘的 XML 配置

①、好比虛擬機更名的狀況

②、避免出現多個虛擬機的磁盤或者 MAC 地址衝突

③、virsh undefine 虛擬機名稱

11、建立模板虛擬機

a、使用 virt-manager 命令調出虛擬系統管理器,新建虛擬機

[root@localhost ~]# virt-manager

image

b、選擇網絡安裝,並前進

image

c、在 URL 框中輸入咱們本身的內部 yum 源地址(centos 目錄爲掛載的光盤目錄,對於光盤的掛載,這裏省略)

image

d、設置內存、CPU

image

注意:這裏內存最好時大於 2048M,CPU 最小爲 2 ,不然後面的虛擬機系統沒法安裝。

e、設置磁盤鏡像,選擇建立自定義存儲,建立存儲卷,以下圖所示的過程。

imageimageimageimageimage

f、設置虛擬機名稱並指定網絡,完成以後,就會進入 Centos 的系統安裝界面,至於系統的安裝,咱們就再也不一步步演示了。

image

通過上面的 6 步,咱們已經建立了一個 kvm 虛擬機的模板,這個模板時最小化安裝,徹底純淨的。若是要使用雲,則這個模板將會是關鍵性的存在,由於 KVM 使用了 COW 寫時複製技術。

12、總結

通過一系列的闡述與演示,咱們是否有對 KVM 虛擬化有個大體的瞭解?其實 KVM 虛擬化,除了命令多以外,其餘的跟 vsphere、xen 虛擬化沒多少區別。並且,如今不少企業中都在使用 KVM ,而不少雲環境的搭建也會有 KVM 的身影存在,所以,關於 KVM ,各位老鐵們還得不斷的瞭解啊。

相關文章
相關標籤/搜索