2023年12月27日发(作者:花欣)
创建基本虚拟镜像根据第 2 章给出的定义,虚拟机是指通过虚拟化软件套件模拟的、具有完整硬件功能的、运行在一个隔离环境中的逻辑计算机系统。虚拟机里的操作系统被称为客户操作系统(GuestOperating System,Guest OS),在客户操作系统上可以安装中间件和上层应用程序,从而构成一个完整的软件栈。虚拟镜像是虚拟机的存储实体,它通常是一个或者多个文件,其中包括了虚拟机的配置信息和磁盘数据,还可能包括内存数据。虚拟镜像的主要使用场景是开发和测试环境:软件开发人员在虚拟机内部对应用进行开发测试,把虚拟镜像作为应用在初始状态或某一中间状态的备份来使用,这样能够在当前的环境发生不可恢复的变更时方便地用虚拟镜像恢复到所需要的状态。虚拟镜像大致可以分为两类:一类是在虚拟机停机状态下创建的镜像,由于这时的虚拟机内存没有数据需要保存,因此这种镜像只有虚拟机的磁盘数据;另一类是在虚拟机运行过程中做快照所生成的镜像,在这种情况下,虚拟机内存中的数据会被导出到一个文件中,因此这种镜像能够保存虚拟机做快照时的内存状态,在用户重新使用虚拟机时可以立即恢复到进行快照时的状态,不需要进行启动客户操作系统和软件的工作。由于目前使用较广泛的是停机状态下创建的虚拟镜像,因此下文主要讨论这类虚拟镜像。对于快照技术及快照镜像会在3.2.2 小节中做介绍。创建一个最基本的虚拟镜像的流程包括以下三个步骤:创建虚拟机、安装操作系统和关停虚拟机,如图 3.2 所示。第一步,在虚拟化管理平台上选择虚拟机类型,并设定虚拟硬件参数。参数主要包括虚拟机的 CPU 数量、内存大小、虚拟磁盘大小、挂载的虚拟光驱及虚拟磁盘等,其中虚拟磁盘的设定要充分考虑到后续安装软件所需空间的实际情况。虚拟化管理平台将依据这些参数创建相应的虚拟机。第二步,选择客户机操作系统并安装,这个过程一般在虚拟化软件套件提供的虚拟机窗口界面上进行,类似于在一台普通的物理机器上安装操作系统。安装客户机操作系统时要遵循“够用即可”的原则,移除不必要的模块、组件和功能,这样既能提高虚拟机运行时的性能,又可以降低虚拟机受攻击的风险。最后一步是关停虚拟机,保存生成的虚拟镜像和配置文件。经过这三个步骤,一个最基本的虚拟镜像就创建完毕了,整个过程一般需要十几分钟左右。目前主流的虚拟化软件套件都提供了非常方便的虚拟镜像创建功能,一般来说都是图形化、流程化的,用户只需要根据虚拟化软件提供的提示,填写必要的信息,就可以创建虚拟器件镜像在上一节中,我们介绍了如何创建一个最基本的虚拟镜像,但对于用户来说,这样的虚拟镜像并不足以直接使用,因为用户使用虚拟化的目的是希望能够将自己的应用、服务、解决方案运行在虚拟化平台上,而基本虚拟镜像中只安装了操作系统,并没有安装客户需要使用的应用及运行应用所需的中间件等组件。 还要进行复杂的中间件安装, 当用户拿到虚拟镜像后,以及应用程序的部署和配置工作,加上还需要熟悉虚拟化环境等,反而有可能使用户感觉使用不便了。虚拟器件(Virtual Appliance)技术能够很好地解决上述难题。虚拟器件技术是服务器虚拟化技术和计算机器件(Appliance)技术结合的产物,有效吸收了两种技术的优点。根据Wikipedia 的定义,计算机器件是具有特定功能和有限的配置能力的计算设备,例如硬件防火墙、家用路由器等设备都可以看做是计算机器件。虚拟器件则是一个包括了预安装、预配置的操作系统、中间件和应用的最小化的虚拟机。如图 3.3 所示,和虚拟镜像相比,虚拟器件文件中既包含客户操作系统,也包含中间件及应用软件,用户拿到虚拟器件文件后经过简单的配置即可使用。与计算机器件相比,虚拟器件摆脱了硬件
的束缚,可以更加容易地创建和发布。虚拟器件的一个主要使用场景是软件发布。传统的软件发布方式是软件提供商将自己的软件安装文件刻成光盘或者放在网站上,用户通过购买光盘或者下载并购买软件许可证的方法得到安装文件,然后在自己的环境中安装。对于大型的应用软件和中间件,则还需要进行复杂的安装配置,整个过程可能耗时几个小时甚至几天。而采用虚拟器件技术,软件提供商可以将自己的软件及对应的操作系统打包成虚拟器件, 供客户下载,客户下载到虚拟器件文件后,在自己的虚拟化环境中启动虚拟器件,再进行一些简单的配置就可以使用,这样的过程只耗时几分钟到几十分钟。可以看出,通过采用虚拟器件的方式, 软件发布的过程被大大简化了。认识到虚拟器件的好处之后,很多软件提供商都已经开始采用虚拟器件的方式来发布软件。例如,VMware 的官方网站已经有“虚拟器件市场” ;在 AmazonEC2 环境里,虚拟器件已经用于商业目的;IBM 的内部网站上包含 IBM 主要软件产品的虚拟器件正在被大量下载和使用。可以预见,在不远的将来,虚拟器件将成为最为普及的软件和服务的发布方式,用户不再需要花费大量的人力、物力和时间去安装、配置软件,工作效率会得到很大提高。上文谈到了虚拟器件的基本概念及使用场虚拟器件在很多场景下都要支持复杂的企业级应用和服务,而应用和服务的特点是需要多个虚拟器件组合交付,在虚拟器件的创建阶段需要考虑各个虚拟器件的关联关系,因而前期调研显得尤为重要。在创建虚拟器件之前,我们首先要调研和分析如何把现有的服务迁移、封装成若干个虚拟器件,然后编写相应配置脚本、规范配置参数并进行多次测试和验证,最后才是真正创建虚拟器件。制作出来的虚拟器件是一个模板,部署者在后续的部署过程中可以 将解决方案交付给最终用户。将其复制并生成多个实例, 下面详细介绍以上三个阶段的工作。在开始的调研工作中,需要分析解决方案都由哪些应用模块组成。从基于单机的小型 LAMP(Linux-Apache-MySQL-PHP)解决方案(如图 3.5 所示),到基于集群的企业级解决方案,设计人员需要针对不同的应用场景进行调研工作。例如,IBM 公司的模拟股票交易软件 Trade,用户虽然只是通过 Web 方式访问,但是, 务 (IBM
HTTPServer, 底层的支撑模块包括了 Web 服 器 、IHS) 应用服务器集群(IBM
WebSphere Application Server, WAS)和后端的数据库(IBM DB2 ,如Server) 图
3.6 所示,而且,这三者并不是单独运行的实体,它们之间需要相互关联才能支撑模拟股票交易的服务。因此,要将这种复杂的应用封装到多个虚拟器件上,需要对其进行大致的分层或者分类,将不同层次或类型的支撑模块分别安装在不同的虚拟器件中。在前面的例子中,针对于 Web 服务器、应用服务器和数据库服务器,至少需要三个虚拟件。需要注意的是,中间件或者应用可能出现多种形态,比如刚才提到的 IBM WAS 服务器,它可以按需被配置成多种形态,如 Deployment
Manager、Standalone、Managed Node、Cell 等。对于这种情况,虚拟解决方案中只需要一个 WAS 虚拟器件就可以了,因为通过在部署阶段读取传入的参数,配置脚本可以将其实例化成上面提到的各种形态。在分层或分类以后,需要考虑支撑模块和操作系统之间的兼容性和配置优化问题。在对支撑模块优化完成以后,还需要对整个解决方案进行联调, 目的主要是对网络参数、安全参数等参数进行配置, 对请求连接数、数据源缓存等进行优化,这部分工作对后面配置脚本的编写很重要。调研工作完成以后,主要检测单个脚本的正确性,而集成测试模拟脚本执行的顺序来逐一测试脚本,以保证最终用户需要的解决方案能够被成功部署。最后一个步骤
是创建虚拟器件,这个过程包括三个子步骤:第一步,创建虚拟镜像;第二步,分别在虚拟镜像中安装和优化服务解决方案所需的中间件和支撑模块;第三步,安装上文所提到的配置脚本,并且配置相应的脚本执行逻辑和参数,从而使得脚本在虚拟器件的启动、配置过程中能够按照一定的顺行执行。当与一个应用或服务相关的虚拟器件都创建完成以后,可以将它们保存起来,供发布和部署时使用。3.1.3 发布虚拟器件镜像随着服务器虚拟化技术的发展,各大厂商都推出了自己的虚拟器件,但是这些产品的接口规范、操作模式互不兼容,妨碍了用户将多个不同厂商的虚拟器件组装成自己所需的虚拟化解决方案,也阻碍了虚拟化技术的进一步发展和推广。在这种背景下,需要统一的标准来明确接口规范,提高互操作性,规范各大厂商的虚拟器件组装和发布过程。在 IBM、VMware、微软、 DMTF 思杰和英特尔等虚拟化厂商的倡导下, (Distributed ManagementTask Force)非赢利标准化组织制定了开放虚拟化格式(Open Virtualization Format, 。 OVF)OVF 标准为虚拟器件的包装和分发提供了开放、安全、可移植、高效和可扩展的描述格式。OVF 标准定义了三类关键格式:虚拟器件模板和由虚拟器件组成的解决方案模板的 OVF 描述文件、虚拟器件的发布格式 OVF 包(OVF Package) ,以及虚拟器件的部署配置文件 OVFEnvironment。下面分别介绍 OVF 描述文件和 OVF 包,而 OVF
Environment 的内容将在 3.2节中介绍。每个虚拟化解决方案都能够通过一个 OVF
文件来描述。目前,最新的 OVF 1.0 规范中定义了OVF 包是虚拟器件最终发布的打包格式,它是一个按照 IEEE 1003.1USTAR POSIX 标准归档的 OVF以.ova 为后缀的文件。 包里面包含了以下几种文件: 一个以.ovf 为后缀结尾的 OVF 文件、一个以.mf 为后缀结尾的摘要清单文件、 一个以.cert 为后缀结尾的证书文件、 若干个其他资源文件和若干个虚拟器件的镜像文件,如图 3.8 所示。如前所述,OVF
文件描述了整个解决方案的组成部分,以及每个组成部分的内在特性和组成部分之间的关联关系。镜像文件既可以是虚拟器件的二进制磁盘文件,也可以是一个磁盘配置文件,它记录了下载二进制磁盘文件的 URI 地址。摘要清单文件记录了 OVF
包里面每个文件的哈希摘要值、所采用的摘要算法(比如 SHA-1、MD5)等信息。证书文件是对摘要清单文件的签名摘要,用户可以利用这个摘要文件来对整个包进行认证。 如 资源文件是一些与发布的虚拟器件相关的文件, ISO 文件等。这些文件中,摘要清单文件、证书文件和资源文件是可选的,而 OVF 文件和镜像文件是必需的。以 OVF 包的方式发布虚拟器件,包含以下几个步骤。第一,创建需要发布的虚拟器件所对应的 OVF 文件。第二,准备好需要添加到 OVF 包里的虚拟器件镜像,为了减小 OVF 包的体积,二进制格式的虚拟磁盘可以采用 GZIP 格式进行压缩。第三,为了防止恶意用户对发布的 OVF包进行篡改,应该对 OVF 包里面的文件做哈希摘要和签名,并将这些信息保存到摘要清单文件和证书文件,但是这个步骤目前并不是必须的。第四,如果有必要,准备好相关的资源文件。最后,用 TAR 方式对 OVF 文件、虚拟器件的镜像文件、摘要清单文件、证书文件和相关资源文件进行打包,并放置在一个公共的可访问的空间,准备被用户下载或部署。为了简化组装、发布虚拟器件的操作,IBM 公司发布了 OVF 工具箱,它是一个
Eclipse 插件程序,功能包括可视化地创建、编辑 OVF,对 OVF 所含信息进行完整性校验,以及将虚拟器件打包成 OVF 包格式。VMware 公司也管理虚拟器件镜像如上面几节所述,用户按照流程创建、打包好虚拟器件镜像后,会将镜像发布到
公共的可访问的仓库,准备被下载或部署。这样的公共仓库会储存大量的虚拟器件镜像,而一般来说一个虚拟器件镜像文件都有几 GB 甚至几十 GB,在这种情况下,对大量虚拟器件镜像的有效管理显得十分重要。镜像文件管理的目标主要有三个:一是保证镜像文件能够被快速地检索到,二是尽量减小公共仓库的磁盘使用量,三是能够对镜像进行版本控制。目前比较成熟的解决办法是对镜像文件的元数据信息和文件内容分别存储。镜像文件的元数据信息主要包括文件的大小、文件名、创建日期、修改日期、读写权限等,以及指向文件内容的指针链接。而镜像文件的实际内容,一般会采用切片的方式进行存储,将一个很大的镜像文件切成很多的小文件片,再将这些文件片作为一个个的文件单独存放,为每一个文件分配一个唯一的标识符,以及文件内容的摘要串。这需要在镜像文件的元数据里增加新的信息,这个信息记录了镜像文件对应的各个文件片。采用文件切片方法的好处在于,由于很多镜像文件具有相似的部分,例如相同的操作系统目录,通过镜像切片及生成的内容摘要,镜像管理系统可以发现这些镜像文件中相同的文件片,然后对这些文件片进行去重操作,在文件系统中只保存单一的切片备份,这种方法可以大大地减少镜像文件的磁盘空间占用量。文件切片同样有利于镜像的版本管理,因为一般来说,一个文件的版本更新只涉及整个文件的一小部分,通过镜像切片技术,当一个镜像的新版本进入系统时,系统会通过切片及生成摘要,识别出新版本中哪些切片的内容与之前的版本不同,然后只保存这些不同的切片。在采用了文件切片和版竟芾淼木迪窆芾硐低成匣袢∫桓鲂槟馄骷迪竦牧鞒檀笾氯缦拢旱谝徊剑没а≡裥槟馄骷拿苹虮晔斗约靶槟馄骷陌姹竞怕耄绻没挥懈霭姹竞怕耄低郴崮嫌没枰钚掳姹荆坏诙剑低掣萦没Ц龅男槟馄骷苹虮晔斗诰迪裎募庵姓业蕉杂Φ脑菝枋鑫募坏谌剑萦没Ц龅幕蛴上低成傻陌姹竞怕耄?.1.5 迁移到虚拟化环境在虚拟化广泛普及之前,数据中心的绝大多数服务都部署在物理机上。随着时间的推移,这些物理设备逐渐老化, 所运行的服务的稳定性和可靠性都受到了极大的影响。 性能逐渐下降,然而,想要把服务迁移到新的系统上会面临很大的风险。这主要有两个方面原因:一方面是开发人员的流动性,当需要迁移服务时,可能已经找不到以前开发团队的相关人员了;另一方面是服务对系统的兼容性问题,服务所依赖的老系统的特定接口或者函数库在新的系统里面并不一定兼容,这些问题长期困扰着传统数据中心的管理。随着虚拟化的日益流行和其优势的不断体现,人们也在思考如何让已有的服务迁移到虚拟化环境里来充分利用虚拟化所带来的好处。虚拟化的辅助技术 P2V(Physical to Virtual)成为了决定服务器虚拟化技术能否顺利推广的关键技术。顾名思义,P2V 就是物理到虚拟,它是指将操作系统、应用程序和数据从物理计算机的运行环境迁移到虚拟环境中,如图 3.9 所示。P2V 技术能够把应用服务与操作系统一起从物理服务器上迁移到虚拟环境中,通过这样整体性的解决方案,管理员不再需要触及与系统紧密整合的应用的相关代码,大大提高了系统迁移的可行性和成功率。当然,P2V 技术的原理并不是文件拷贝那么简单。例如,在操作系统启动过程中,操作系统内核负责发现必要的硬件设备和相应的驱动程序,如果内核没有发现合适的驱动,硬件设备就无法正常运行。因此,要将物理机上的整套系统迁移到虚拟机上,硬件设备从“真实的”变成了“虚拟的”,相应的驱动程序也需要替换成能够驱动“虚拟”硬件的程序。绝大多数实现 P2V 技术的软件都遵循了上述原理。下面,我们来看看用户操作 P2V 软
件的基本步骤。第一步制作镜像,通过镜像制作工具将物理机的系统整体制作成物理机的镜像。这里的镜像制作工具既可以是 P2V 软件自带的,也可以是第三方的软件。第二步选择驱动,替换掉镜像中与特定硬件设备相关的驱动程序或者磁盘驱动器,并且保证镜像中新的驱动程序和其他驱动程序在系统初始化时有序启动,以使镜像能够在虚拟环境中运行。第三步定制配置,用户手动输入必要的参数,例如虚拟机的 CPU、内存、MAC 地址等,P2V总之,P2V 软件需要捕捉物理系统的所有硬件配置、软件配置、磁盘内容等信息,并对与客户环境定制化相关的配置参数进行抽象,将所有这些信息打包成一个镜像及相应的虚拟机监视器相关的配置文件。就具体的操作系统而言,由于 Linux 系统内核是开放的,因此实现 P2V 的过程相对较为简单;Windows 系统内核没有公开,P2V 相对比较复杂,如果不能很好地解决驱动替换,在虚拟机启动时很可能出现不能操作的现象,因此存在一定的风险。
伴随 P2V 技术的还有 V2P Virtual to Physical) V2V Virtual to Virtual)值得一提的是, ( 和 (技术。所谓 V2P 就是将虚拟机向物理机迁移,类似于我们日常所用的 Symantec Ghost 软件,只是增加了对各种不同物理平台的硬件设备的驱动支持。而 V2V 技术使得系统和服务可以在不同的虚拟化平台之间进行迁移,比如现有的系统和服务运行在 Xen 虚拟机上,通过 V2V 迁移,使得系统和服务可以运行在
VMware ESX 虚拟机上。

更多推荐
虚拟,器件,镜像
发布评论