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、經常使用鏡像盤類型對比
通過以上表格的鏡像盤格式對比,咱們能夠很確定的知道,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、對前端盤的修改不回寫到原始盤
以下圖所示:
在 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
注意: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
b、選擇網絡安裝,並前進
c、在 URL 框中輸入咱們本身的內部 yum 源地址(centos 目錄爲掛載的光盤目錄,對於光盤的掛載,這裏省略)
d、設置內存、CPU
注意:這裏內存最好時大於 2048M,CPU 最小爲 2 ,不然後面的虛擬機系統沒法安裝。
e、設置磁盤鏡像,選擇建立自定義存儲,建立存儲卷,以下圖所示的過程。
f、設置虛擬機名稱並指定網絡,完成以後,就會進入 Centos 的系統安裝界面,至於系統的安裝,咱們就再也不一步步演示了。
通過上面的 6 步,咱們已經建立了一個 kvm 虛擬機的模板,這個模板時最小化安裝,徹底純淨的。若是要使用雲,則這個模板將會是關鍵性的存在,由於 KVM 使用了 COW 寫時複製技術。
12、總結
通過一系列的闡述與演示,咱們是否有對 KVM 虛擬化有個大體的瞭解?其實 KVM 虛擬化,除了命令多以外,其餘的跟 vsphere、xen 虛擬化沒多少區別。並且,如今不少企業中都在使用 KVM ,而不少雲環境的搭建也會有 KVM 的身影存在,所以,關於 KVM ,各位老鐵們還得不斷的瞭解啊。