15158846557 在线咨询 在线咨询
15158846557 在线咨询
所在位置: 首页 > 营销资讯 > 网站运营 > 学习【KVM虚拟机存储管理】读完本文就够了,涵盖8个知识点

学习【KVM虚拟机存储管理】读完本文就够了,涵盖8个知识点

时间:2023-07-17 23:51:02 | 来源:网站运营

时间:2023-07-17 23:51:02 来源:网站运营

学习【KVM虚拟机存储管理】读完本文就够了,涵盖8个知识点:

KVM到底是个啥?

KVM的现状

KVM最初是由Qumranet公司的Avi Kivity开发的,作为他们的VDI产品的后台虚拟化解决方案。为了简化开发,Avi Kivity并没有选择从底层开始新写一个Hypervisor,而是选择了**基于Linux kernel,通过加载模块使Linux kernel本身变成一个Hypervisor。**2006年10月,在先后完成了基本功能、动态迁移以及主要的性能优化之后,Qumranet正式对外宣布了KVM的诞生。同月,**KVM模块的源代码被正式纳入Linux kernel,成为内核源代码的一部分。**2008年9月4日,Redhat公司以1.07亿美元收购了Qumranet公司,包括它的KVM开源项目和开发人员。自此,Redhat开始在其RHEL发行版中集成KVM,逐步取代Xen,并从RHEL7开始,正式不支持Xen。

在KVM出现之前,Xen虚拟化解决方案已经业界比较成熟的一款开源VMM,但是KVM出现之后,很快被Linux内核社区接受,就是因为Xen不是通过Linux内核去管理系统资源(硬件/软件),而是通过自身的管理系统去完成,仅这一点就让Linux内核社区很不爽。同时,Xen在当时设计上采用半虚方式,需要修改Guest OS的内核来满足I/O驱动性能要求,从而不支持商用OS(Windows、Mac OS)的虚拟化,使得Xen相比KVM来说,在硬件辅助虚拟化的支撑上包袱更重,转型困难重重。

目前,KVM已经成为OpenStack用户选择的事实上的Hypervisor标准。**OpenStack自身调查数据显示,KVM占87%以上的部署份额,可以说,KVM已经主导公有云部署的Hypervisor市场,同时在电信云部署方面也是一枝独秀。

功能上,虚拟化发展到今天,各个Hypervisor的主要功能都差不多。KVM由于其开源性,反而商业上的限制较少。性能上,KVM和Xen都能达到原生系统95%以上的效率(CPU、内存、网络、磁盘等benchmark衡量),KVM甚至还略微好过Xen一点点。微软虽然宣布其Hype-V的性能更好,但这只是微软一家之言,并没有公开的数据支撑。

在电信云NFV领域来说,由于通信网络设备的实时性要求很高,且NFV的开源平台OPNFV选择了OpenStack。为了更好实现网络功能虚拟化的愿景,其实时性要求责无旁贷的落到了KVM头上,NFV-KVM项目也就顺理成章地诞生了,它作为OPNFV的子项目主要解决KVM在实时性方面受到的挑战。

总的来说,虚拟化技术发展到今天已经非常成熟,再加上DPDK代码的开源化、KVM也好、其他Hypervisor也好,在转发性能的优化和硬件辅助虚拟化的支撑上都半斤八两,但由于KVM的开源性特性以及社区的热度,使得其在云计算领域解决方案一枝独秀。甚至,华为在其FusionSphere6.3版本也开始拥抱KVM而抛弃了Xen。要知道,华为在剑桥大学可是专门有一支团队在研究Xen虚拟化。

KVM实践初步

在x86-64架构的处理器中,KVM需要的硬件辅助虚拟化分别为Intel的虚拟化技术(Intel VT)和AMD的AMD-V技术。在前面我们介绍过,CPU不仅要在硬件上支持VT技术,还要在BIOS中将其功能打开,KVM才能使用到。目前,大多数服务器和PC的BIOS都默认已经打开VT。至于如何在VMware Workstations虚拟机和物理服务器上打开,详见本站《KVM到底是个啥?》一文。

部署和安装KVM

KVM的部署和安装主要有两种方式:一种源码编译安装,另一种就是通过CentOS的YUM工具安装。**作为学习实验途径,我们这里主要介绍YUM工具安装方式。至于源码编译安装一般属于生产研发人员的操作,这里我们只给一些关键提示,有兴趣的同学可自行研究。

1)源码编译安装方式。**KVM作为Linux内核的一个module,是从Linux内核版本2.6.20开始的,所以要编译KVM,你的Linux操作系统内核必须在2.6.20版本以上,也就是CentOS 6.x和CentOS 7.x都天生支持,但是CentOS 5.x以下版本需要先升级内核。

下载KVM源代码,主要通过以下三种方式:

  1. 下载KVM项目开发中的代码仓库kvm.git。
  2. 下载Linux内核的代码仓库linux.git。
  3. 使用git clone命令从github托管网站上下载KVM的源代码。
根据上面三种途径下载源代码后就可以通过make install的方式编译安装了,编译安装完成后还需要根据KVM官方指导手册进行相关的配置。。。我们这里不展开,大家可自行搜索源码方式安装。需要注意一点儿的是,除了下载KVM的源码外,还需要同时下载QEMU的源码进行编译安装,因为它俩是一辈子的好基友嘛。。。

2)YUM工具安装。首先,需要查看 CPU是否支持VT技术,就可以判断是否支持KVM。然后,再进行相关工具包的安装。最后,加载模块,启动libvirtd守护进程即可。具体步骤如下:

Step1:确认服务器是否支持硬件虚拟化技术,如果有返回结果,也就是结果中有vmx(Intel)或svm(AMD)字样,就说明CPU的支持的,否则就是不支持。如下图所示,表示服务器支持Intel的VT-x技术,且有4个CPU。

KVM管理工具libvirt

通过前面两篇文章的介绍,相信大家对KVM虚拟机的原理、软件架构、运行机制和部署方式等有所了解。但是,那些东西只能算是非常基础入门的东西。尤其我们介绍的部署KVM虚拟机时用到的virt-install命令,不仅参数很多,很难记忆,而且要想用好virt-*系列工具首先需要对libvirt工具有更深刻的了解。因为,virt-*系列工具其实是对libvirt工具的封装调用,而libvirt工具又是对底层qemu工具的封装调用,其目的都是为了使命令更加友好与用户交互。本篇文章就详细介绍这几种与libvirt相关的管理工具,为后续各种配置打下良好基础。

libvirt管理工具

提到KVM的管理工具,就不得不提大名鼎鼎的libvirt,因为libvirt是目前使用最为广泛的对KVM虚拟机进行管理的工具和应用程序接口,而且一些常用的虚拟机管理工具(如virsh、virt-install、virt-manager等)和云计算框架平台(如OpenStack、ZStack、OpenNebula、Eucalyptus等)都在底层使用libvirt的应用程序接口,也就是说libvirt实际上是一个连接底层Hypervisor与上层应用的中间适配层。

KVM虚拟机的各种安装方法

virt-instal工具简介

virt-install是一个命令行工具,它能够为KVM、Xen或其它支持libvrit API的hypervisor创建虚拟机并完成GuestOS安装;此外,它能够基于串行控制台、VNC或SDL支持文本或图形安装界面。安装过程可以使用本地的安装介质如CDROM,也可以通过网络方式如NFS、HTTP或FTP服务实现。对于通过网络安装的方式,virt-install可以自动加载必要的文件以启动安装过程而无须额外提供引导工具。当然,virt-install也支持PXE方式的安装过程,也能够直接使用现有的磁盘映像直接启动安装过程。

KVM虚拟机全生命周期管理实战

在上一篇我们介绍了KVM最重要的管理工具libvirt,它是KVM其他管理工具的基础,处于KVM管理架构的中间适配层。本篇我们主要要介绍libvirt的命令行管理工具的virsh,它也是将libvirt作为基础,通过封包调用实现的。所以,在看本篇内容之前,最好将上一篇的内容做个预习。

libvirt命令行工具virsh

virsh通过调用libvirt API实现虚拟化管理,与virt-manager工具类似,都是管理虚拟化环境中的虚拟机和Hypervisor的工具,只不过virsh是命令行文本方式的,也是更常用的方式。

在使用virsh命令行进行虚拟化管理操作时,可以使用两种工作模式:交互模式和非交互模式。交互模式是连接到Hypervisor上,然后输入一个命令得到一个返回结果,直到输入quit命令退出。非交互模式是直接在命令上通过建立URI连接,然后执行一个或多个命令,执行完后将命令的输出结果返回到终端上,然后自动断开连接。两种操作模式的截图如下:

KVM虚拟机存储管理实战(上篇)

我们上一篇介绍了KVM虚拟机的全生命周期管理实战,如果与OpenStack的实操对应,正好与nova服务的实操相符。在云计算体系中,运维管理主要涉及计算nova、存储cinder和网络neutron三部分。因此,本篇文章我们主要介绍KVM的存储管理实战。KVM的存储选项有多种,包括虚拟磁盘文件、基于文件系统的存储和基于设备的存储。同样,也有对应的virsh管理命令。

KVM的存储选项和常用管理命令

为实现KVM存储管理,可以使用LVM逻辑卷和创建存储池。储存池Storage Pool 是宿主机上可以看到的一片存储空间,可以是多种型。而逻辑卷Volume 是在 存储池Storage Pool 中划分出的一块空间,宿主机将 Volume 分配给虚拟机,Volume 在虚拟机中看到的就是一块硬盘。

虚拟磁盘文件

当系统创建KVM虚拟机的时候,默认使用虚拟磁盘文件作为后端存储。安装后,虚拟机认为在使用真实的磁盘,但实际上看到的是用于模拟硬盘的虚拟磁盘文件。就是因为加了一层额外的文件系统层,所以系统的I/O读写性能会降低,但是基于文件系统的虚拟磁盘可以用于其他虚拟机,且具备快照、链接克隆、弹性扩缩容等特性,方便虚拟机的迁移。因此,可以说是各有利弊,根据实际使用场景来选择。

基于文件系统的KVM存储

在安装KVM宿主机时,**可选文件系统为dir(directory)或fs(formatted block storage)**作为初始KVM存储格式。默认为dir,通过指定本地文件系统中的一个目录用于创建磁盘镜像文件。而fs选项可以允许指定某个格式化文件系统的分区,把它作为专用的磁盘镜像文件存储。**两种KVM存储选项之间最主要的区别在于:fs文件系统不需要挂载到某个特定的目录。**两种选项所指定的文件系统,都可以是本地文件系统或位于SAN上某个物理宿主机上的网络文件系统。后者具备数据共享的优势,可以很轻易地实现多个主机同时访问。

KVM虚拟机存储管理实战(下篇)

在上一篇中我们介绍qemu-img这个对磁盘镜像操作的命令,包括检查镜像磁盘,创建镜像磁盘、查看镜像磁盘信息、转换镜像磁盘格式、调整镜像磁盘大小以及镜像磁盘的快照链操作。但是,在镜像磁盘快照链操作中,我们也提到了通过qemu-img命令创建快照链只能在虚拟机关机状态下运行。如果虚拟机为运行态,只能通过virsh save vm来保存当前状态。那么,本文就专门讲述在KVM虚拟机中如何通过virsh命令来创建快照链,以及链中快照的相互关系,如何缩短链,如何利用这条链回滚我们的虚拟机到某个状态等等。

什么是虚拟机快照链

虚拟机快照保存了虚拟机在某个指定时间点的状态(包括操作系统和所有的程序),利用快照,我们可以恢复虚拟机到某个以前的状态。比如:测试软件的时候经常需要回滚系统,以及新手安装OpenStack时为了防止重头再来,每安装成功一个服务就做一次快照等等。

快照链就是多个快照组成的关系链,这些快照按照创建时间排列成链,像下面这样。

复制

base-image<--guest1<--snap1<--snap2<--snap3<--snap4<--当前(active)

如上,base-image是制作好的一个qcow2格式的磁盘镜像文件,它包含有完整的OS以及引导程序。现在,以这个base-image为模板创建多个虚拟机,简单点方法就是每创建一个虚拟机我们就把这个镜像完整复制一份,但这种做法效率底下,满足不了生产需要。这时,就用到了qcow2镜像的copy-on-write(写时复制)特性。

qcow2(qemu copy-on-write)格式镜像支持快照,具有创建一个base-image,以及在base-image(backing file)基础上创建多个copy-on-write overlays镜像的能力。这里需要解释下backing file和overlay的概念。在上面那条链中,我们为base-image创建一个guest1,那么此时base-image就是guest1的backing file,guest1就是base-image的overlay。同理,为guest1虚拟机创建了一个快照snap1,此时guest1就是snap1的backing file,snap1是guest1的overlay。

**backing files和overlays十分有用,可以快速的创建瘦装备实例,特别是在开发测试过程中可以快速回滚到之前某个状态。**以CentOS系统来说,我们制作了一个qcow2格式的虚拟机镜像,想要以它作为模板来创建多个虚拟机实例,有两种方法实现:

KVM虚拟机网络管理实战

上一篇文章我们介绍完KVM的存储管理实战后,接下来我们本篇文章就开始主要介绍KVM的网络管理实战。KVM的网络管理模型与OpenStack Neutron中的网络管理非常类似,而在学些OpenStack时,网络服务Neutron往往是很多人初学OpenStack的一个难点。因此,掌握了本篇内容的知识点,对于后续学习OpenStack Neutron部分的内容有事半功倍的效果。

virsh中的网络管理基础

在介绍KVM中常见的网络模型之前,我们先来看看virsh有哪些网络管理的命令。与存储管理实战和全生命周期管理实战类似,virsh主要提供对节点上的物理网络接口和分配给虚拟机的虚拟网络进行管理的命令。包括:创建节点上的物理接口、编辑节点上物理接口的XML配置文件,查询节点上物理接口、创建虚拟机的虚拟网络、编辑虚拟机的虚拟网络和删除虚拟机的虚拟网络等。常用的命令和作用如下:

更多Linux内核资料

【深入研究 kvm,ceph,fuse特性】:

【高清技术学习视频】

如果对大家有帮助,记得 @零声Github整理库 关注我 或者 加WX:baby602878196【备注:1024】获取学习视频。

关键词:知识,本文,虚拟,管理,学习

74
73
25
news

版权所有© 亿企邦 1997-2025 保留一切法律许可权利。

为了最佳展示效果,本站不支持IE9及以下版本的浏览器,建议您使用谷歌Chrome浏览器。 点击下载Chrome浏览器
关闭