虚拟化——使用ovirt必备基础概念知识
Posted wx6131b9174ff23
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了虚拟化——使用ovirt必备基础概念知识相关的知识,希望对你有一定的参考价值。
目录
前言
oVirt(Open Virtualization Manager)是一款免费开源虚拟化软件,是RedHat商业版本虚拟化软件RHEV的开源版本。
oVirt基于kvm,并整合使用了libvirt、gluster、patternfly、ansible等一系列优秀的开源软件。
oVirt的定位是替代vmware vsphere(https://docs.vmware.com/cn/VMware-vSphere/index.html),oVirt目前已经成为了企业虚拟化环境可选的解决方案,另外相比OpenStack的庞大和复杂,oVirt在企业私有云建设中具备部署和维护使用简单的优势。利用oVirt管理KVM虚拟机和网络,企业可以快速的搭建起一个私有云环境。从这一点看来,oVirt的定位和另一个知名云计算项目OpenStack的定位是有些类似的。
ovirt部署架构:
ovirt组件架构:
本文主要介绍使用ovirt必知的相关概念:Hypervisor、KVM、QEMU、libvirt、gluster、patternfly、ansible、VDSM、VNC/SPICE/RDP等等,具体细节内容,请点击最下方的参考文献链接。
一、Hypervisor、KVM、QEMU的简单介绍1.1 Hypervisor
一种运行在物理服务器和操作系统之间的中间层软件,可以允许多个操作系统和应用共享一套基础物理硬件。可以将hypervisor看做是虚拟环境中的“元”操作系统,可以协调访问服务器上的所有物理设备和虚拟机,所以又称为虚拟机监视器(Virtual Machine Monitor, VMM)。hypervisor是所有虚拟化技术的核心,非中断的支持多工作负载迁移是hypervisor的基本功能。当服务器启动并执行Hypervisor时,会给每一台虚拟机分配适量的内存,cpu,网络和磁盘资源,并且加载所有虚拟机的客户操作系统。
Hypervisor之于操作系统类似于操作系统之于进程。它们为执行提供独立的虚拟硬件平台,而虚拟硬件平台反过来又提供对底层机器的虚拟的完整访问。但并不是所有 hypervisor 都是一样的,这是件好事,因为 Linux 就是以灵活性和选择性著称。
虚拟化就是通过某种方式隐藏底层物理硬件的过程,从而让多个操作系统可以透明地使用和共享它。这种架构的另一个更常见的名称是平台虚拟化。在典型的分层架构中,提供平台虚拟化的层称为 hypervisor 。来宾操作系统称为虚拟机(VM),因为对这些 VM 而言,硬件是专门针对它们虚拟化的。
常见的Hypervisor分两类:
Type-I(裸金属型)指VMM直接运作在裸机上,使用和管理底层的硬件资源,Guest OS对真实硬件资源的访问都要通过VMM来完成,作为底层硬件的直接操作者,VMM拥有硬件的驱动程序。
Type-II型(宿主型)指VMM之下还有一层宿主操作系统,由于Guest OS对硬件的访问必须经过宿主操作系统,因而带来了额外的性能开销,但可充分利用宿主操作系统提供的设备驱动和底层服务来进行内存管理、进程调度和资源管理等。
1.2 KVM
KVM是Kernel-based Virtual Machine的简称,是一个开源的系统虚拟化模块,自Linux 2.6.20之后集成在Linux的各个主要发行版本中。
KVM是嵌入在Linux操作系统标准内核中的一个虚拟化模块,它能够将一个Linux标准内核转换成为一个VMM,嵌有KVM模块的Linux标准内核可以支持通过kvm tools来进行加载的GuestOS。所以在这样的操作系统平台下,计算机物理硬件层上直接就是VMM虚拟化层,而没有独立出来的HostOS操作系统层。在这样的环境中HostOS就是一个VMM。
每个由KVM创建的GuestOS都是HostOS(或VMM)上的一个单个进程。而在GuestOS上的User-space中运行的Applications可以理解为就是进程中的线程。
KVM的虚拟化需要硬件支持(如Intel VT技术或者AMD V技术),是基于硬件的完全虚拟化。
1.3 QEMU
QEMU是一个主机上的VMM,通过动态二进制转换来模拟CPU,并提供一系列的硬件模型,使guest os认为自己和硬件直接打交道,其实是同QEMU模拟出来的硬件打交道,QEMU再将这些指令翻译给真正硬件进行操作。通过这种模式,guest os可以和主机上的硬盘,网卡,CPU,CD-ROM,音频设备和USB设备进行交互。但由于所有指令都需要经过QEMU来翻译,因而性能会比较差:
1.4 QEMU-KVM
从前面的介绍可知,KVM负责cpu虚拟化+内存虚拟化,实现了cpu和内存的虚拟化,但kvm并不能模拟其他设备,还必须有个运行在用户空间的工具才行。KVM的开发者选择了比较成熟的开源虚拟化软件QEMU来作为这个工具,QEMU模拟IO设备(网卡,磁盘等),对其进行了修改,最后形成了QEMU-KVM。
二、Libvirt的简单介绍虚拟云实现的三部曲:虚拟化技术实现-->虚拟机管理-->集群资源管理(云管理)。各种不同的虚拟化技术都提供了基本的管理工具。比如:启动,停用,配置,连接控制台等。这样在构建云管理的时候就存在两个问题:
1) 如果采用混合虚拟技术,上层就需要对不同的虚拟化技术调用不同管理工具,很是麻烦。
2) 虚拟化技术发展很迅速,系统虚拟化和容器虚拟化均在发展和演化中。可能有新的虚拟化技术更加符合现在的应用场景,需要迁移过去,这样管理平台就需要大幅改动。
为了适应变化,我们惯用的手段是分层,使之相互透明,在虚拟机和云管理中设置一个抽象管理层。libvirt就是扮演的这个角色。有了它,上面两个问题就迎刃而解。libvirt提供各种API,供上层来管理不同的虚拟机。
Libvirt是管理虚拟机和其他虚拟化功能,比如存储管理,网络管理的软件集合。它包括一个API库,一个守护程序(libvirtd)和一个命令行工具(virsh);libvirt本身构建于一种抽象的概念之上。它为受支持的虚拟机监控程序实现的常用功能提供通用的API。
libvirt的主要目标是为各种虚拟化工具提供一套方便、可靠的编程接口,用一种单一的方式管理多种不同的虚拟化提供方式。
三、Gluster的简单介绍计算机通过文件系统管理,存储数据,而现在数据信息爆炸的时代中人们可以获取的数据成指数倍的增长,单纯通过增加硬盘个数来扩展计算机文件系统的存储容量的方式,已经不能满足目前的需求。
分布式文件系统可以有效解决数据的存储和管理难题,将固定于某个地点的某个文件系统,扩展到任意多个地点/多个文件系统,众多的节点组成一个文件系统网络。每个节点可以分布在不同的地点,通过网络进行节点间的通信和数据传输。人们在使用分布式文件系统时,无需关心数据是存储在哪个节点上,或者是从哪个节点从获取的,只需要像使用本地文件系统一样管理和存储文件系统中的数据。
GlusterFS是Scale-Out存储解决方案Gluster的核心,它是一个开源的分布式文件系统,具有强大的横向扩展能力,通过扩展能够支持数PB存储容量和处理数千客户端。GlusterFS借助TCP/IP或InfiniBand RDMA网络将物理分布的存储资源聚集在一起,使用单一全局命名空间来管理数据。
GlusterFS支持运行在任何标准IP网络上标准应用程序的标准客户端,用户可以在全局统一的命令空间中使用NFS/CIFS等标准协议来访问应用程序。GlusterFS使得用户可摆脱原有的独立,高成本的封闭存储系统,能够利用普通廉价的存储设备来部署可集中管理,横向扩展,虚拟化的存储池,存储容量可扩展至TB/PB级。
目前glusterfs已被redhat收购,它的官方网站是:http://www.gluster.org
四、Patternfly的简单介绍PatternFly是Red Hat的开源CSS框架,和Bootstrap不同的是,Bootstrap是为那些想要创建漂亮网站的人而设计的,而PatternFly主要专注于企业应用程序开发人员,提供诸如条形图、图表、导航之类的组件,实际上Red Hat就是使用它创建了OpenShift。
除了静态html,PatternFly还支持ReactJS框架,这是Facebook开发的流行javascript框架。PatternFly具有许多适用于企业级应用程序的高级组件,如条形图,图表,模式和布局。
ovirt的整体框架就是用PatternFly整合的(官网:https://www.patternfly.org/v4/)
五、Ansible的简单介绍Ansible是一个部署一群远程主机的工具。远程的主机可以是远程虚拟机或物理机, 也可以是本地主机。
Ansible与Open Source Puppet一样,不具备“裸机供应”能力,其也需要与Foreman或ansible-os-autoinstall等工具配合使用。
Ansible最初是作为自动化工具(如PupPET和Chef)的轻量级替代而开发的;但是它是用Python编写的(而不是Ruby),并且采用了一个基于SSH的无代理的架构(即不是采用Puppet的C/S架构,在被管理节点上不需要安装任何特殊软件)。
Ansilbe通过SSH协议实现远程节点和管理节点之间的通信,但是SSH必须配置为公钥认证登录方式,而非密码认证。理论上说,只要管理员通过ssh登录到一台远程主机上能做的操作,Ansible都可以做到。包括:
- 拷贝文件
- 安装软件包
- 启动服务
- ……
总得来说,Ansible有如下特点:
1、部署简单,只需在主控端部署Ansible环境,被控端无需做任何操作;
2、默认使用SSH协议对设备进行管理;
3、有大量常规运维操作模块,可实现日常绝大部分操作。
4、配置简单、功能强大、扩展性强;
5、支持API及自定义模块,可通过Python轻松扩展;
6、通过Playbooks来定制强大的配置、状态管理;
7、轻量级,无需在客户端安装agent,更新时,只需在操作机上进行一次更新即可;
8、提供一个功能强大、操作性强的Web管理界面和REST API接口——AWX平台。
Ansible是用Python开发的,它目前已被Redhat收购,是自动化运维工具中认可度最高的。oVirt的很多自动化部署子项目都是用Ansible开发的。
六、VDSM的简单介绍Vdsm,Virtual Desktop and Server Manager的简写,虚拟桌面和服务器管理器。是虚拟化管理器(如oVirt-engine或Red Hat Enterprise Virtualization Manager)需要的一个守护进程,用于管理Linux主机和它们的KVM虚拟机客户机。Vdsm管理和监视主机的存储、内存和网络以及虚拟机创建、其他主机管理任务、统计信息收集和日志收集。
七、远程桌面协议(VNC/SPICE/RDP)远程桌面协议是一个多通道的协议,让使用者(所在计算机称为用户端或\'本地计算机\')连上提供终端机服务的计算机(称为服务端或\'远程计算机\')。这里简单整理了下远程桌面协议资料,目前常用的协议有VNC/SPICE/RDP三种。
SPICE | VNC | RDP | |
Bios屏幕显示 | 能 | 能 | 不能 |
全彩支持 | 能 | 能 | 能 |
更改分辨率 | 能 | 能 | 能 |
多显示器 | 多显示器支持(高达4画面) | 只有一个屏幕 | 多显示器支持 |
图像传输 | 图像和图形传输 | 图像传输 | 图像和图形传输 |
视频播放支持 | GPU加速支持 | 不能 | GPU加速支持 |
音频传输 | 双向语音可以控制 | 不能 | 双向语音可以控制 |
鼠标控制 | 客户端服务器都可以控制 | 服务器端控制 | 服务器端控制 |
USB传输 | USB可以通过网络传输 | 不能 | USB可以通过网络传输 |
8.1.IDE
IDE硬盘是早期的硬盘,被广泛使用,因而协议的兼容性比较好,在IDE硬盘上安装windows操作系统,能够无缝操作,中间不需要换盘。相比SCSI等协议,IDE自身的性能就比较差一些,再者IDE盘又是一种全虚拟化硬盘,所以性能并不好。
8.2.virtio(virtio-blk)
为了改善全虚拟化的性能问题,产生了半虚拟化技术的virtio(本文中所有的virtio均是指virtio-blk)。
8.3.virtio-scsi
virtio技术有一定的局限,尤其是每个磁盘都要占用虚拟机的一个pci槽,导致虚拟机并不能大量挂载此类磁盘。为了解决virtio的种种问题,产生了virtio-scsi技术,用来逐渐替代virtio.
九、qemu的磁盘格式
使用 qemu-img info 命令可以查看qemu支持的所有磁盘格式:blkdebug blkreplay blkverify bochs cloop copy-on-read dmg file ftp ftps gluster host_cdrom host_device http https iscsi iser luks nbd null-aio null-co nvme parallels qcow qcow2 qed quorum raw rbd sheepdog ssh throttle vdi vhdx vmdk vpc vvfat
下面介绍两种格式:raw、qcow2
9.1.raw
raw是原始磁盘镜像格式,这个格式的优点是简单,易于导出导入到其它模拟器(虚拟化环境)中使用。如果你的文件系统支持“空洞”(holes),例如linux上的ext2、ext3、ext4或windows上的ntfs,这种环境下对于raw磁盘来说只有已经写入的扇区才占用存储空间,可以使用“qemu-img info”命令来查看raw磁盘的真实大小,用“ls -ls”也可以看出来。
9.2.qcow2
qemu最通用的镜像文件格式,在不支持“空洞”的文件系统上能够占用更小的存储空间,并且具备可选的一些配置项,比如AES加密、zlib压缩、快照等。
10、常见三种存储方式DAS、NAS、SAN的架构随着主机、磁盘、网络等技术的发展,对于承载大量数据存储的服务器来说,服务器内置存储空间,或者说内置磁盘往往不足以满足存储需要。因此,在内置存储之外,服务器需要采用外置存储的方式扩展存储空间。
10.1 存储的分类
根据服务器类型分为:
- 封闭系统的存储(封闭系统主要指大型机)
- 开放系统的存储(开放系统指基于Windows、UNIX、Linux等操作系统的服务器)
开放系统的存储分为:内置存储和外挂存储;
外挂存储根据连接的方式分为:直连式存储(Direct-Attached Storage,简称DAS)和网络化存储(Fabric-Attached Storage,简称FAS);网络化存储根据传输协议又分为:网络接入存储(Network-Attached Storage,简称NAS)和存储区域网络(Storage Area Network,简称SAN)。看下图,可以清晰的理解刚才的描述。
10.2 DAS存储
DAS存储(直连式存储Direct-Attached Storage)在我们生活中是非常常见的,尤其是在中小企业应用中,DAS是最主要的应用模式,存储系统被直连到应用的服务器中,在中小企业中,许多的数据应用是必须安装在直连的DAS存储器上。
直连式存储与服务器主机之间的连接通道通常采用SCSI连接,随着服务器CPU的处理能力越来越强,存储硬盘空间越来越大,阵列的硬盘数量越来越多,SCSI通道将会成为IO瓶颈;服务器主机SCSI ID资源有限,能够建立的SCSI通道连接有限。
10.3 NAS存储
NAS存储(网络接入存储Network-Attached Storage)也通常被称为附加存储,顾名思义,就是存储设备通过标准的网络拓扑结构(例如以太网)添加到一群计算机上。NAS是文件级的存储方法,它的重点在于帮助工作组和部门级机构解决迅速增加存储容量的需求。如今用户采用NAS较多的功能是用来文档共享、图片共享、电影共享等等,而且随着云计算的发展,一些NAS厂商也推出了云存储功能,大大方便了企业和个人用户的使用。
NAS产品是真正即插即用的产品。NAS设备一般支持多计算机平台,用户通过网络支持协议可进入相同的文档,因而NAS设备无需改造即可用于混合Unix/Windows NT局域网内,同时NAS的应用非常灵活。
但NAS又一个关键性问题,即备份过程中的带宽消耗。与将备份数据流从LAN中转移出去的存储区域网(SAN)不同,NAS仍使用网络进行备份和恢复。NAS 的一个缺点是它将存储事务由并行SCSI连接转移到了网络上。这就是说LAN除了必须处理正常的最终用户传输流外,还必须处理包括备份操作的存储磁盘请求。
10.4 SAN存储
(存储区域网络Storage Area Network),从名字上我们也可以看出,这个是通过光纤通道交换机连接存储阵列和服务器主机,最后成为一个专用的存储网络。SAN经过十多年历史的发展,已经相当成熟,成为业界的事实标准(但各个厂商的光纤交换技术不完全相同,其服务器和SAN存储有兼容性的要求)。
SAN提供了一种与现有LAN连接的简易方法,并且通过同一物理通道支持广泛使用的SCSI和IP协议。SAN不受现今主流的、基于SCSI存储结构的布局限制。特别重要的是,随着存储容量的爆炸性增长,SAN允许企业独立地增加它们的存储容量。SAN的结构允许任何服务器连接到任何存储阵列,这样不管数据置放在那里,服务器都可直接存取所需的数据。因为采用了光纤接口,SAN还具有更高的带宽。
最后概括一下就是,DAS存储一般应用在中小企业,与计算机采用直连方式,NAS存储则通过以太网添加到计算机上,SAN存储则使用FC接口,提供性能更加的存储。
DAS虽然比较古老了,但是还是很适用于那些数据量不大,对磁盘访问速度要求较高的中小企业;
NAS多适用于文件服务器,用来存储非结构化数据,虽然受限于以太网的速度,但是部署灵活,成本低;
SAN则适用于大型应用或数据库系统,缺点是成本高、较复杂。
11、Cockpit的简单介绍根据官网的介绍,cockpit是一个linux系统的管理工具,提供了一个web管理页面,可以很方便的通过点击鼠标的方式完成一系列管理工作,非常适合运维等工作。
可以通过Cockpit Web控制台执行多种管理任务,包括:
- 管理服务
- 管理用户帐号
- 管理和监视系统服务
- 配置网络接口和防火墙
- 查看系统日志
- 管理虚拟机
- 创建诊断报告
- 设置内核转储配置
- 配置SELinux
- 更新软件
- 管理系统订阅
FQDN是完全合格域名/全程域名缩写,Fully Qualified Domain Name,即是域名,访问时将由DNS进行解析,得到IP。
FQDN = Hostname + DomainName
当我们申请了一个域名时,就可以使用这个域名来得到IP,但若这个域名下挂在很多主机如何?我是不是得申请很多很多域名给每个主机?不需要,域名即创建了一个域,就如命名空间,在这个命名空间下,其他主机都可以创建自己的名称。这个名称就是通过以上公式得来。
举个例子,一个公司申请了域名aabb.com,这时候有一台主机名为web,则可以使用web.aabb.com得到这个主机IP。若还有两台提供邮件和OA服务的主机cmail,oa,则这时候可以用以下FQDN:
cmail.aabb.com
oa.aabb.com
以上是关于虚拟化——使用ovirt必备基础概念知识的主要内容,如果未能解决你的问题,请参考以下文章
Android Fragments 基础知识:为啥?这在概念上是错误的吗?