ID:wljsghq
KVM 虛擬化環(huán)境部署和管理方法
KVM 簡介
KVM — 全稱是基于內(nèi)核的虛擬機(jī)(Kernel-based Virtual Machine)是一個開源軟件,基于內(nèi)核的虛擬化技術(shù),實(shí)際是嵌入系統(tǒng)的一個虛擬化模塊,通過優(yōu)化內(nèi)核來使用虛擬技術(shù),該內(nèi)核模塊使得Linux 變成了一個Hypervisor,虛擬機(jī)使用Linux自身的調(diào)度器進(jìn)行管理。
KVM 是基于虛擬化擴(kuò)展(Intel VT 或者AMD-V)的X86 硬件的開源的Linux 原生的全虛擬化解決方案。KVM 中,虛擬機(jī)被實(shí)現(xiàn)為常規(guī)的Linux 進(jìn)程,由標(biāo)準(zhǔn)Linux 調(diào)度程序進(jìn)行調(diào)度;虛機(jī)的每個虛擬CPU 被實(shí)現(xiàn)為一個常規(guī)的Linux 進(jìn)程。這使得KVM 能
夠使用Linux 內(nèi)核的已有功能。但是,KVM 本身不執(zhí)行任何硬件模擬,需要客戶空間程序通過/dev/kvm 接口設(shè)置一個客戶機(jī)虛擬服務(wù)器的地址空間,向它提供模擬的I/O,并將它的視頻顯示映射回宿主的顯示屏。目前這個應(yīng)用程序是QEMU。
QEMU 是一套由Fabrice Bellard 所編寫的模擬處理器的自由軟件。它與Bochs,PearPC 近似,但其具有某些后兩者所不具備的特性,如高速度及跨平臺的特性。經(jīng)由kqemu 這個開源的加速器,QEMU 能模擬至接近真實(shí)電腦的速度。
libvirt 是管理虛擬機(jī)和其他虛擬化功能的軟件,比如存儲管理,網(wǎng)絡(luò)管理的軟件集合。它包括一個API 庫,一個守護(hù)程序(libvirtd)和一個命令行工具(virsh);libvirt 本身構(gòu)建于一種抽象的概念之上。它為受支持的虛擬機(jī)監(jiān)控程序?qū)崿F(xiàn)的常用功能提供通用的API。libvirt的主要目標(biāo)是為各種虛擬化工具提供一套方便、可靠的編程接口,用一種單一的方式管理多種不同的虛擬化提供方式。
注意:我們通常所說和使用的KVM 虛擬機(jī),實(shí)際上是這三個軟件的結(jié)合
安裝kvm、qemu、libvirtd:
查看和打開CPU 虛擬化支持:
egrep"(svm|vmx)"/proc/cpuinfo#查看cpu是否支持虛擬化 注: ?vmx對應(yīng)inter的cpu ?svm對應(yīng)amd的cpu ?需在主板bios打開虛擬化選項(xiàng),多數(shù)計(jì)算機(jī)默認(rèn)處于打開狀態(tài)
查看內(nèi)核kvm 支持
lsmod|grepkvm
安裝所需軟件包
apt-getinstalllibvirt0libvirt-daemonqemuvirt-managerbridge-utilslibvirt-clients python-libvirtqemu-efiuml-utilitiesvirtinstqemu-system
#安裝KVM 和相關(guān)虛擬化工具
啟動libvirtd
systemctlrestartlibvirtd.service#啟動libvirtd systemctlstatuslibvirtd.service#查看啟動狀態(tài)
兩種管理虛擬機(jī)的方法:
?virt-manager 是圖形化方式,相對直觀。
?virsh 是命令行方式
KVM 配置與應(yīng)用
virsh 命令行管理工具詳解
virsh(虛擬shell),基于命令行的管理工具,可以實(shí)現(xiàn)簡單的資源管理。支持交互模式 virshshutdowndeepin1#正常關(guān)閉vm虛擬機(jī) virshstartdeepin1#啟動kvm虛擬機(jī) virshdestroydeepin1#強(qiáng)制關(guān)閉kvm虛擬機(jī) virshlist#顯示本地活動虛擬機(jī) virshlist--all#查看所有虛擬機(jī) virshsuspenddeepin1#掛起kvm虛擬機(jī) virshresumedeepin1#恢復(fù)被掛起虛擬機(jī) virshdominfodeepin1#查看指定虛擬機(jī)的配置摘要信息 virshundefinedeepin1#刪除kvm虛擬機(jī)(如果虛擬機(jī)處于runing,一旦關(guān)閉就會消失) virshdumpxmldeepin1#顯示虛擬機(jī)的當(dāng)前配置文件 virshdefinedeepin2.xml#通過配置文件定義一個虛擬機(jī)(這個虛擬機(jī)還不是活動的) virshautostartdeepin1#虛擬機(jī)設(shè)為自動啟動(成/etc/libvirt/qemu/autostart/) virshautostart--disabledeepin1#取消自動啟動 virsheditdeepin1#編輯配置文件(一般是在剛定義完虛擬機(jī)之后) virshsetmemdeepin1512000#給虛擬機(jī)設(shè)置內(nèi)存大小 virshsetvcpusdeepin14#給虛擬機(jī)設(shè)置cpu個數(shù)
qemu-img 是一個功能強(qiáng)制磁盤鏡像管理工具
qemu-img--help包括以下功能 ?check檢查完整性 ?create創(chuàng)建鏡像 ?commit提交更改 ?compare比較 ?convert轉(zhuǎn)換 ?info獲得信息 ?map映射 ?snapshot快照管理 ?rebase在已有的鏡像的基礎(chǔ)上創(chuàng)建新的鏡像 ?resize調(diào)整大小 ?amend修訂鏡像格式選
KVM 虛擬機(jī)的xml 配置文件說明
xml 配置文件也就是通常所說的虛擬機(jī)的描述文件,主要用來定義一個虛擬機(jī)的名稱、UUID、CPU、內(nèi)存、虛擬磁盤、網(wǎng)卡等各種參數(shù)設(shè)置
/etc/libvirt/qemu/ #配置文件默認(rèn)路徑
deepin.xml 配置文件說明:
deepin #虛擬機(jī)的名字16e9cb49-8b05-4b34-9325-3bcf169dd32e #uuid值4194304 #虛擬機(jī)的最大內(nèi)存4194304 #虛擬機(jī)當(dāng)前的內(nèi)存4 #該虛擬機(jī)的cpu數(shù)。。。。。。。。。。 hvm #hvm表示全虛擬化#hd表示從硬盤啟動 /usr/bin/qemu-system-x86_64 #二進(jìn)制模擬器設(shè)備的完整路徑#disk是用來描述磁盤的主要容器 #指定磁盤上文件的絕對路徑 #MAC地址
KVM 虛擬機(jī)重命名技術(shù)
生成新的UUID 字串,并復(fù)制備用
uuidgen
76d5dc2c-5eef-4e30-8b6c-e58851814f84
virsh edit deepin #編輯虛擬機(jī)配置
deepin2 #新名稱76d5dc2c-5eef-4e30-8b6c-e58851814f84 #新UUID值
virsh list --all #確認(rèn)導(dǎo)入的新配置
IdNameState ----------------------- -deepin1shutoff -deepin2shutoff#新名稱的虛擬機(jī)
virsh undefine deepin1 #刪除舊名稱的虛擬機(jī)
virsh list --all #確認(rèn)結(jié)果
IdNameState ----------------------- -deepin2shutoff
KVM 虛擬機(jī)的復(fù)制技術(shù)
生成新UUID,并復(fù)制備用
uuidgen
7b292992-a86e-4386-951f-a577365cc721
導(dǎo)出配置
virshdumpxmldeepin2>/etc/libvirt/qemu/deepin3.xml
修改導(dǎo)出后的配置
vim /etc/libvirt/qemu/deepin3.xml
vim/etc/libvirt/qemu/deepin3.xmldeepin3 #新名稱3d7f2197-8dad-473c-99af-0570cd02ae5c #新UUID值4194304 #內(nèi)存大小,單位KB4194304 #虛擬機(jī)分配的內(nèi)存大 小,單位KB2 #虛擬CPU核數(shù) .............. #新磁盤路徑 #虛擬機(jī)網(wǎng)絡(luò)連接方式 #修改MAC地址 #當(dāng)前主機(jī)網(wǎng)橋的名稱 .......
確認(rèn)結(jié)果
virsh list --all
定義新虛擬機(jī)
virsh define deepin3.xml
IdNameState ----------------------- -deepin2shutoff -deepin3shutoff#新虛擬機(jī)
虛擬機(jī)快照建立的方式
快照(raw 格式的磁盤無法創(chuàng)建快照)
#qemu-imgsnapshot-l/kvm/img/test12.qcow2#查看磁盤快照 virshsnapshot-listtest12#查看快照 virshsnapshot-createtest12#生成快照 virshsnapshot-create-astest12snap1#自定義快照名 virshsnapshot-reverttest12snap1#快照恢復(fù)虛擬機(jī) virshsnapshot-deletetest12snapname#刪除指定快照 virshsnapshot-currenttest12
項(xiàng)目實(shí)戰(zhàn)
1. 使用命令行工具創(chuàng)建虛擬機(jī)
用法: virt-install --name NAME --memory MB STORAGE INSTALL [options]
用途:從指定安裝源創(chuàng)建新虛擬機(jī)。
示例
創(chuàng)建鏡像文件
qemu-imgcreate-fqcow2-osize=20G/data/kvm/deepin-server3.qcow2
通過cdrom 鏡相引導(dǎo)安裝系統(tǒng):
virt-install-ndeepin-server3--vcpus2-r4096-c /home/yanght/ISO/uniontechos-desktop-20-professional-1021_amd64.iso--disk /data/kvm/deepin-server3.qcow2,bus=virtio,size=20--graphicsvnc,listen=0.0.0.0--network bridge=virbr0,model=virtio
2. 利用已有的虛擬機(jī)配置文件創(chuàng)建新的虛擬機(jī)
把deepin2 當(dāng)做模板機(jī),提取deepin2 的虛擬機(jī)磁盤、xml 配置文件
qemu-imginfo/var/lib/libvirt/images/deepin2.qcow2
輸出:
image:/var/lib/libvirt/images/deepin.qcow2 fileformat:qcow2 virtualsize:64G(68719476736bytes)#虛擬機(jī)磁盤容量 disksize:8.1G#在KVM服務(wù)器占用容量 cluster_size:65536 Formatspecificinformation: compat:1.1 lazyrefcounts:true refcountbits:16 corrupt:false
復(fù)用deepin2 模板機(jī)的磁盤數(shù)據(jù)
qemu-imgcreate-fqcow2-b/var/lib/libvirt/images/deepin2.qcow2 /var/lib/libvirt/images/deepin4.qcow2
復(fù)制配置
cd/etc/libvirt/qemu/ cpdeepin2.xmldeepin4.xml
修改配置文件
vim deepin4.xml
deepin4 #新虛擬機(jī)名稱da2478f0-abf0-11ea-a912-6f46e76df6b1 #新UUID值#文件類型 #磁盤類型 #新虛擬卷位置 #虛擬機(jī)的網(wǎng)絡(luò)接口類型 #刪除MAC地址 #虛擬機(jī)的網(wǎng)卡的源網(wǎng)絡(luò)名稱
根據(jù)配置文件定義虛擬機(jī)
virshdefine/etc/libvirt/qemu/deepin4.xml
查看所有虛擬主機(jī)
virsh list --all
IdNameState ----------------------- -deepin2shutoff -deepin4shutoff
開啟deepin 虛擬機(jī)
virshstartdeepin4
3. 使用命令行工具完成磁盤設(shè)備的熱插拔
virsh attach-disk (添加磁盤設(shè)備)
用法:
attach-disk
示例:
1、用qemu-img 創(chuàng)建一塊100G 的qcow2 硬盤
SOURCEFILE=/data/kvm/deepin-server1-disk1.qcow2 qemu-imgcreate-fqcow2$SOURCEFILE20G
2、附加磁盤到指定虛擬機(jī)
DOMAIN=deepin-server1 TARGET=sdb virshattach-disk--domain$DOMAIN--source$SOURCEFILE--target$TARGET --subdriverqcow2--config--live
TARGET:一般為vdb,vdc…
–subdriver:這一項(xiàng)是必須的,如果不加的話,虛擬機(jī)不知道鏡像文件的格式,掛載
就會失敗。
Virsh detach-disk (刪除磁盤設(shè)備)
用法:
detach-disk[--persistent][--config][--live][--current][--print-xml]
示例:
virshdetach-diskdeepinserver1sdb
輸出:
Diskdetachedsuccessfully
-
開源軟件
+關(guān)注
關(guān)注
0文章
210瀏覽量
15900 -
內(nèi)核
+關(guān)注
關(guān)注
3文章
1372瀏覽量
40276 -
Linux
+關(guān)注
關(guān)注
87文章
11292瀏覽量
209323 -
虛擬機(jī)
+關(guān)注
關(guān)注
1文章
914瀏覽量
28160 -
KVM
+關(guān)注
關(guān)注
0文章
188瀏覽量
12947
原文標(biāo)題:KVM 虛擬機(jī)管理和基本使用
文章出處:【微信號:網(wǎng)絡(luò)技術(shù)干貨圈,微信公眾號:網(wǎng)絡(luò)技術(shù)干貨圈】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論