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