KVM是指基于Linux内核的虚拟机(Kernel-base Virtual Machine),增加到Linux内核是Linux发展的一个重要里程碑,这也是第一个整合到Linux主线内核的虚拟化技术。在KVM模型中,每一个虚拟机都是一个由Linux调度程序管理的标准进程,你可以在用户空间启动客户机操作系统,一个普通的Linux进程有两种运行模式:内核和用户,KVM增加了第三种模式:客户模式(有自己的内核和用户模式)。
KVM仅仅是 Linux 内核的一个模块。管理和创建完整的 KVM 虚拟机,需要更多的辅助工具。
在 Linux 系统中,可以使用 modprobe 系统工具去加载 KVM 模块,如果用 RPM 安装 KVM软件包,系统会在启动时自动加载模块。加载了模块后,才能进一步通过其它工具创建虚拟机。
但仅有 KVM 模块是远远不够的,因为用户无法直接控制内核模块进行操作,因而必须有一个用户空间的工具。关于用户空间的工具,KVM 的开发者选择了已经成型的开源虚拟化软件 QEMU。
QEMU 是一个强大的虚拟化软件,它可以虚拟不同的CPU构架。比如说在x86的CPU上虚拟一个Power的CPU,并利用它编译出可运行在Power上的程序。
KVM 使用了 QEMU 的基于x86的部分,并稍加改造,形成可控制KVM内核模块的用户空间工具QEMU-KVM。
所以Linux发行版中分为kernel部分的KVM内核模块和QEMU-KVM工具。这就是 KVM 和 QEMU 的关系。
虽然QEMU-KVM工具可以创建和管理KVM虚拟机,但是由于QEMU 工具效率不高,不易于使用,RedHat 为 KVM 开发了更多的辅助工具,比如 libvirt、libguestfs 等。
Libvirt 是一套提供了多种语言接口的 API,为各种虚拟化工具提供一套方便、可靠的编程接口,不仅支持 KVM,而且支持 Xen 等其他虚拟机。
使用 libvirt,只需要通过libvirt提供的函数连接到KVM或Xen宿主机,便可以用同样的命令控制不同的虚拟机了。
Libvirt 不仅提供了 API,还自带一套基于文本的管理虚拟机的命令virsh,可以通过使用 virsh 命令来使用 libvirt 的全部功能。
如果用户希望通过图形用户界面管理KVM,这就是virt-manager工具使用的功能。他是一套用python编写的虚拟机管理图形界面,用户可以通过它直观地操作不同的虚拟机。Virt-manager就是利用 libvirt 的 API 实现的。
宿主机是虚拟机的物理基础,虚拟机存在于宿主机中,与宿主机共享使用硬件。宿主机的运行是虚拟机运行的前提与基础。也称宿主机为主机(host)。
虚拟机(Virtual Machine)指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。也称虚拟机为客户机(guest)。
宿主机支持虚拟化技术是使用KVM的前提,因此在开始使用KVM之前需要确认宿主机是否支持虚拟化。
通过如下命令查看CPU是否支持虚拟机:
如果看到有输出结果,即证明cpu支持虚拟化。vmx属于inter处理器,svm属于amd处理器。
使用KVM虚拟化,还需要开启VT(Virtualization Technology),因此需要确认BIOS中是否开启VT,如果没有启用,虚拟机将会变得很慢,无法使用。
当安装好kvm,会自动新建一个虚拟网卡,这个虚拟网卡就是NAT模式的网卡
如果希望主机的网卡是NAT模式,直接指定这个网卡就可以了
如果需要桥接网卡,就还需要手动配置
原网卡配置
新建ens32网卡的桥接网卡
生效
查看网络
新建一个50G的磁盘,格式为qcow2
此时,可通过vnc viewer连接此安装进程开启的vnc连接端口(默认是5900端口)
查看端口
参数说明
- --name 指定虚拟机名称
- --memory 分配内存大小,单位M。
- --vcpus 分配CPU核心数,最大与实体机CPU核心数相同
- --disk 指定虚拟机镜像,size 指定分配大小单位为G。
- --network 网络类型,此处用的是默认,一般用的都是bridge桥接,这个br0就是在之前宿主机上创建好的一个桥接设备。
- --accelerate 加速参数,在linux系统安装开始就要注意添加提高性能的一些参数,后面就不需要做一些调整了。
- --cdrom 指定安装镜像iso
- --vnc 启用VNC远程管理,一般安装系统都要启用。
- --vncport 指定VNC 监控端口,默认端口为5900,端口不能重复。一般不设置此参数。
- --vnclisten 指定VNC 绑定IP,默认绑定127.0.0.1,这里改为 0.0.0.0。
- --noautoconsole 使用本选项指定不自动试图连接到客户机控制台。默认行为是调用一个VNC客户端显示图形控制台,或者运行 "virsh" "console"命令显示文本控制台。
通过VNC Viewer连接宿主机的5900端口
点击连接,就可以连接到虚拟机,看到安装页面
在安装完成系统后,会提示重启,但是,但是,但是,虚拟机并不会重启,而是关机
可以看到,虚拟机已经看不到了
但是可以通过查看所有虚拟机来查看
可以看到,是关机的
这个时候,只要开机就好了
每次安装虚拟机比较浪费时间,KVM提供了虚拟机克隆技术,可以几分钟内克隆出一个新的虚拟机,并不需要安装系统,非常方便迅速。
kvm虚拟机的克隆分为两种情况,
- KVM本机虚拟机直接克隆。
- 通过复制配置文件与磁盘文件复制克隆(适用于异机的静态迁移)。
虚拟机克隆通过 命令来实现
例如,我们的虚拟机是 mylinux1
现在我们需要克隆 mylinux1 虚拟机
如果直接克隆,会直接报错
所以需要先将原虚拟机关机
然后再克隆
这个时候就会有两个虚拟机
那么这个时候就会有个小疑问,那如果两个主机同时启动,vnc的端口会不会冲突呢
这个是不会的,因为我们在创建虚拟机的时候,并没有明确指定vnc的端口,所以如果遇到多个虚拟机需要开启vnc端口,就会在端口5900后延
例如此时同时启动了两个虚拟机,那么端口就是5900和5901
注意: 这里vnc的端口虽然可以平滑克隆,但是虚拟机内部的ip地址是无法平滑克隆的,还是需要手动修改(如果是手动设置的ip地址的话)
当我们有异机迁移的需求时,该如何来迁移主机呢
KVM虚拟机跨物理机的迁移方式比较简单, 只要拷贝其磁盘文件和xml配置文件,再根据xml来创建域即可
- 需要先确保目标主机满足虚拟机的硬件需求,例如 CPU、内存和磁盘空间
- 在源主机上,使用 导出虚拟机的 XML 配置文件
- 将虚拟机的 XML 配置文件和磁盘文件复制到目标主机
配置文件是刚到出的 文件
磁盘文件是创建虚拟机时候新建的磁盘文件 - 在目标主机上,确保您已安装了 KVM 和 Libvirt。如果尚未安装,按照安装的步骤安装一下
- 确保虚拟机的磁盘文件路径在 XML 配置文件中正确。如果需要,使用文本编辑器编辑 XML 配置文件,并更新磁盘文件的路径。
将上面的 中的file值修改为真是的磁盘文件存放地址
- 加载虚拟机配置生成虚拟机
- 启动迁移的虚拟机
autostart目录是配置kvm虚拟机开机自启动目录。
或直接virsh命令(进入交互模式)
然后再执行子命令。
如下所示。
显示虚拟机列表:
启动虚拟机:
在安装KVM linux虚拟机必须配置此服务。
重启虚拟机:
autostart目录是kvm虚拟机开机自启动目录,可以看到该目录中有KVM配置文件链接。
KVM虚拟机配置文件可以通过这种方式进行备份。
说明:该命令只是删除wintest01的配置文件,并不删除虚拟磁盘文件。
通过导出备份的配置文件恢复原KVM虚拟机的定义,并重新定义虚拟机。
格式
-
是要创建快照的虚拟机名称 -
快照的名称
例如
为虚拟机mylinux1创建快照first-snapshot
格式
-
是要查看快照的虚拟机名称
例如
格式
-
是要还原快照的虚拟机名称 -
快照的名称
例如
格式
-
是要删除快照的虚拟机名称 -
快照的名称
例如
格式
-
是虚拟机名称 -
快照的名称 -
配置文件的名称
这个一般再需要用快照克隆新主机的情况
还需要删除快照配置文件中的 标签,并且将虚拟机的名称修改,然后用这个配置文件创建虚拟机
到此这篇kvm虚拟化管理系统(kvm虚拟化架构)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/jszy-zcph/73395.html