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文章
209浏览量
15884 -
内核
+关注
关注
3文章
1362浏览量
40216 -
Linux
+关注
关注
87文章
11219浏览量
208872 -
虚拟机
+关注
关注
1文章
908浏览量
28064 -
KVM
+关注
关注
0文章
186浏览量
12918
原文标题:KVM 虚拟机管理和基本使用
文章出处:【微信号:网络技术干货圈,微信公众号:网络技术干货圈】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
评论