0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

KVM虚拟机管理和基本使用

网络技术干货圈 来源:网络技术干货圈 2023-02-07 09:20 次阅读

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.xml

deepin3#新名称
3d7f2197-8dad-473c-99af-0570cd02ae5c#新UUID值
4194304#内存大小,单位KB
4194304#虚拟机分配的内存大
小,单位KB
2#虚拟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[--targetbus][--driver]
[--subdriver][--iothread][--cache][--io][--type]
[--mode][--sourcetype][--serial][--wwn][--alias]
[--rawio][--address][--multifunction][--print-xml][--persistent][--config][--live]
[--current]

示例:
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

    浏览量

    15901
  • 内核
    +关注

    关注

    3

    文章

    1372

    浏览量

    40288
  • Linux
    +关注

    关注

    87

    文章

    11302

    浏览量

    209428
  • 虚拟机
    +关注

    关注

    1

    文章

    914

    浏览量

    28178
  • KVM
    KVM
    +关注

    关注

    0

    文章

    188

    浏览量

    12950

原文标题:KVM 虚拟机管理和基本使用

文章出处:【微信号:网络技术干货圈,微信公众号:网络技术干货圈】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    如何在KVM上使用CCA RME虚拟机

    之前介绍了CCA设计的一个目的是让hypervisor可以创建和调度RME虚拟机和vCPU,并且给它分配内存等资源,但是一旦这些资源分配给RME虚拟机之后,hypervisor就失去了访问这些RME所有的内存内容的权限。
    的头像 发表于 09-11 14:59 1680次阅读
    如何在<b class='flag-5'>KVM</b>上使用CCA RME<b class='flag-5'>虚拟机</b>?

    什么是虚拟机虚拟机真的那么好用吗?

    在日新月异的科技世界中,虚拟化技术如同一座桥梁,连接着现实与数字的鸿沟,为我们打开了全新的计算维度。虚拟机,这一概念,自其诞生以来,就以其独特的魅力和强大的功能,深深地影响了软件开发、系统测试和云
    的头像 发表于 07-06 08:05 463次阅读
    什么是<b class='flag-5'>虚拟机</b>?<b class='flag-5'>虚拟机</b>真的那么好用吗?

    VM虚拟机管理程序上的NVIDIA GRID vGPU有适当的测试计划来协助测试吗?

    你好,我搜索了这些william hill官网 ,我发现了一些关于在基于KVM虚拟机管理程序(RHEL / CentOS)下使用NVIDIA GRID vGPU功能的问题。这仍在开发中吗?如果是,是否有适当的测试计划来协助
    发表于 09-18 16:14

    Java虚拟机向ARM平台的移植

    介绍Java 虚拟机的概念,以常用的KVM 为例,讲述了将Java 虚拟机移植到ARM 平台的方法,重点介绍了移植过程中的编译选项。
    发表于 09-23 11:54 38次下载

    Java虚拟机向ARM平台的移植

    介绍Java 虚拟机的概念,以常用的KVM 为例,讲述了将Java 虚拟机移植到ARM 平台的方法,重点介绍了移植过程中的编译选项。
    发表于 09-23 11:54 22次下载

    误删除KVM虚拟机的数据恢复案例

    服务器上的KVM虚拟机被误操作删除,每台虚拟机包含一个qcow2格式的磁盘文件和一个raw格式的磁盘文件,需要恢复raw格式的磁盘文件,虚拟机里面存放的是数据库和程序代码。
    的头像 发表于 04-12 13:56 719次阅读
    误删除<b class='flag-5'>KVM</b><b class='flag-5'>虚拟机</b>的数据恢复案例

    【服务器数据恢复】服务器误删除KVM虚拟机数据恢复案例

    服务器中有3台KVM虚拟机:一台运行Mysql数据库,一台存放数据库备份,一台存放程序代码文件。
    的头像 发表于 05-09 14:39 595次阅读
    【服务器数据恢复】服务器误删除<b class='flag-5'>KVM</b><b class='flag-5'>虚拟机</b>数据恢复案例

    Linux下误删除KVM虚拟机的数据恢复案例

    Linux操作系统服务器,EXT4文件系统。服务器上部署3台KVM虚拟机
    的头像 发表于 06-27 13:36 553次阅读
    Linux下误删除<b class='flag-5'>KVM</b><b class='flag-5'>虚拟机</b>的数据恢复案例

    linux虚拟机系统基本指令

    Linux虚拟机系统是一种通过虚拟化技术在物理服务器上部署多个独立的虚拟机实例的操作系统。它可以帮助用户更有效地利用硬件资源,并方便地部署和管理多个操作系统环境。本文将介绍一些常用的L
    的头像 发表于 11-17 10:04 1626次阅读

    Docker与虚拟机的区别

    的操作系统实例来实现虚拟化的技术。其实现方式是通过Hypervisor来实现的。Hypervisor是一个运行在物理机上的软件或硬件,负责管理和分配虚拟机的硬件资源。 1.2 Docker Docker是一种容器化技术,它利用L
    的头像 发表于 11-23 09:37 9782次阅读

    虚拟机ubuntu怎么联网

    虚拟机ubuntu怎么联网  虚拟机(Virtual Machine)是运行在物理(Host Machine)上的虚拟操作系统环境。在虚拟机
    的头像 发表于 12-27 16:51 981次阅读

    虚拟机数据恢复—EXT4文件系统下KVM虚拟机数据恢复案例

    发行版本中。KVM使用Linux自身的调度器进行管理。 本案例中的服务器操作系统为Linux,文件系统为EXT4。操作系统上的部署的几台KVM虚拟机被删除,每台
    的头像 发表于 04-17 14:22 377次阅读
    <b class='flag-5'>虚拟机</b>数据恢复—EXT4文件系统下<b class='flag-5'>KVM</b><b class='flag-5'>虚拟机</b>数据恢复案例

    服务器数据恢复—KVM虚拟机raw格式磁盘文件数据恢复案例

    服务器数据恢复环境: 一台服务器安装Linux操作系统+EXT4文件系统。服务器上运行数台KVM虚拟机,每台虚拟机包含一个qcow2格式的磁盘文件和一个raw格式的磁盘文件。 服务器故障
    的头像 发表于 05-17 13:33 444次阅读
    服务器数据恢复—<b class='flag-5'>KVM</b><b class='flag-5'>虚拟机</b>raw格式磁盘文件数据恢复案例

    服务器数据恢复—误删除KVM虚拟机的数据恢复案例

    1台服务器,Linux操作系统+EXT4文件系统,部署了数台KVM虚拟机,每台虚拟机包含一个qcow2格式的磁盘文件,和一个raw格式的磁盘文件。 工作人员操作失误删除了3台服务器上的KVM
    的头像 发表于 06-17 15:10 358次阅读
    服务器数据恢复—误删除<b class='flag-5'>KVM</b><b class='flag-5'>虚拟机</b>的数据恢复案例

    虚拟机数据恢复—KVM虚拟机被误删除的数据恢复案例

    虚拟机数据恢复环境: Linux操作系统服务器,EXT4文件系统。服务器中有数台KVM虚拟机虚拟机1:主数据库服务器 虚拟磁盘
    的头像 发表于 08-07 13:33 456次阅读
    <b class='flag-5'>虚拟机</b>数据恢复—<b class='flag-5'>KVM</b><b class='flag-5'>虚拟机</b>被误删除的数据恢复案例