KVM 虛擬化的實現

一、KVM 虛擬化服務的構成

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

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

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

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

二、虛擬化服務的必備軟件

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

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

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

libvirt-daemon-driver-qemu:libvirt 連接 qemu 的驅動

可選軟件

virt-install :系統安裝工具

virt-manager :圖形管理工具

virt-v2v :虛擬機遷移工具

virt-p2v :物理機遷移工具

三、虛擬機的組成

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

2、系統設備仿真(QEMU)

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

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

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

四、虛擬機管理

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

a、查看虛擬機信息

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

virsh nodeinfo

2、列出虛擬機

virsh list [--all]

3、列出虛擬網絡

virsh net-list [--all]

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

virsh nodeinfo 虛擬機名稱

b、開關機操作

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

virsh start|reboot|shutdown 虛擬機名稱

2、強制關閉指定虛擬機

virsh destory 虛擬機名稱

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

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

五、常用鏡像盤類型對比

clipboard

經過以上表格的鏡像盤格式對比,我們可以很肯定的知道,KVM 使用 QCOW2 格式的鏡像盤時,對服務器資源的利用率最高的,當然系統默認的鏡像盤格式。

六、虛擬機磁盤管理

使用命令 qemu-img

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

b、qemu-img 支持非常多的磁盤格式,例如 raw、qcow2、vdi、vmdk 等等。

c、qemu-img 命令格式


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

七、COW 技術原理

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

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

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

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

如下圖所示:

clipboard

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

八、KVM 虛擬機的遠程管理

a、使用 virsh 客戶端工具

1、連接本地

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

2、連接遠程

[root@localhost ~]# virsh -c qemu+ssh://[email protected]:port/system

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

1、virt-manager 也可以通過 add connection 管理其它機器上的虛擬機,一般通過 “ remote tunnel over ssh ” 就可以了。

2、需要注意的是 virt-manager 需要使用 ssh 免密登陸,如果沒有免密登陸,需要單獨安裝 python 的 ssh 相關模塊,這裏我們可以使用部署 key 的方法解決。

九、創建虛擬交換機

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

十、XML 管理

a、XML 配置文件說明

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

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

b、導出 XML 配置文件

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

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

c、編輯虛擬機設置

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

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

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

2、定義虛擬機

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

virsh define XML描述文件

3、刪除虛擬機

必要時可以刪除多餘的 XML 配置

①、比如虛擬機改名的情況

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

③、virsh undefine 虛擬機名稱

十一、創建模板虛擬機

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 寫時複製技術。

十二、總結

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章