使用OpenStack云操作系统为私有云构建Linux和Windows映像

开源 OpenStack 云操作系统是一个功能丰富且可以大规模扩展的平台,适用于所有类型的云计算。一些公共云服务基于 OpenStack,许多组织内的私有云实现也是如此。但 OpenStack 仍缺乏一些针对私有云的特性,尤其是针对开发和测试环境的特性。例如,映像构建就不是一个简单的过程。本文为 OpenStack 私有云提供一种全新且改进的映像创建方法。我们在 QEMU/KVM 平台上验证了这种新方法,但在理论上该方法也适用于其他虚拟机管理程序平台。

介绍这个新方法之前,我们将概述目前在 OpenStack 中如何创建映像。

目前在 OpenStack 中创建映像的方式

在 OpenStack 中创建 Linux 或 Windows 映像的过程由多个耗时的步骤组成。

基于 Linux 的映像

官方 OpenStack 虚拟机映像指南 详细介绍了 7 种 要求,必须满足这些要求,基于 Linux 的映像才能在 OpenStack 云中完全正常工作(可通过安装 cloud-init 包来满足一些要求)。该映像指南建议用户在创建自己的映像之前阅读指南中很长一节的内容,确保映像支持他们计划使用的 OpenStack 特性。

对于一些特定的发行版,可手动或使用工具创建 Linux 映像 — 比如 VMBuilder、Oz 或 imagefactory。无论使用哪种方法,在创建自己的 Linux 映像之前都需要以下材料:

OS 安装 CD/DVD 或 ISO 映像文件。 一个启用了 KVM/QEMU 虚拟机管理程序的 Linux 机器。一些发行版可能需要 virt-manager/virt-viewer GUI 实用程序。 cloud-init 或针对操作系统自行编写的等效脚本。 guestfish、guestmount 或 virt-* 工具,用于修改映像。

满足所有必须的条件后,即可开始根据下面总结的步骤创建自己的 Linux 映像:

使用 virt-manager 或 virt-install 创建一个虚拟机 (VM) 并安装操作系统。 配置操作系统,以满足您自己的需求(例如通过安装所需的中间件),或者安装 cloud-init 或等效的脚本来满足 OpenStack 的要求。 使用 guestfish、guestmount 或 virt-* 修改映像,以满足 OpenStack 的要求。 将新映像上传到 OpenStack 映像服务并验证该映像。

基于 Windows 的映像

OpenStack 网站上没有详细的示例介绍如何创建基于 Windows 的映像。但要让您创建的基于 Windows 的映像能正常运行,您必须至少:

安装一个 VirtIO 驱动程序。 启用远程桌面协议 (Remote Desktop Protocol, RDP) 并配置它以通过防火墙。 配置 Internet 控制消息协议 (Internet Control Message Protocol, ICMP) 以通过防火墙。 将磁盘分区并(使用 cloudbase-init)调整引导磁盘上的根分区大小。 处理用户数据和其他元数据(使用 cloudbase-init)。 启用 Windows System Preparation (Sysprep) 工具,以自定义来宾操作系统。

对于大多数私有云用例,本列表中的最后两个要求是可选的。而且您可以手动或使用脚本将磁盘分区,并调整引导磁盘上的根分区大小。但必须安装一个 VirtIO 驱动程序,Windows 映像才能在 OpenStack 云中工作。此外,您需要拥有 VirtIO-Win 驱动程序包。

满足最低要求后,构建 Windows 映像的过程是:

使用一个 Internet Drive Electronics (IDE) 磁盘和一个 AMD PCnet32 或 Realtek rt8139 网络接口卡 (NIC) 创建一个虚拟机。 安装操作系统。 配置操作系统以满足您自己的要求(例如通过安装所需的中间件),或者安装 cloudbase-init 或等效的脚本来满足 OpenStack 要求。 关闭虚拟机。 添加一个小 VirtIO 磁盘和一个 VirtIO NIC。 启动虚拟机并安装 VirtIO 磁盘和 NIC 的 VirtIO 驱动程序。 重新启动虚拟机,检查操作系统,然后关闭虚拟机。 将映像上传到 OpenStack 映像服务并验证该映像。

也可执行以下步骤:

创建一个包含以下部分的虚拟机: 一个 VirtIO 磁盘 一个 PCnet32 或 rt8139 NIC 一个额外的 CD-ROM,包含用于比 Windows Vista 或 Windows Server 2008 更高版本的 Windows 的 VirtIO 磁盘驱动程序,或者一个额外的软盘,包含用于比 Windows server 2003 R2 更低版本的 Windows 的 VirtIO 磁盘驱动程序 在操作系统中安装所需的 VirtIO 磁盘驱动程序。 配置操作系统,以满足您自己的要求(例如通过安装所需的中间件),或者安装 cloudbase-init 或运行等效的脚本来满足 OpenStack 的要求。 关闭虚拟机。 添加一个 VirtIO NIC。 启动虚拟机并安装 VirtIO NIC 的 VirtIO 驱动程序。 重新启动虚拟机,检查操作系统,然后关闭虚拟机。 将映像上传到 OpenStack 映像服务并验证该映像。

不足

尽管目前为 OpenStack 创建映像的方法有一些好处(如创建基于 Linux 的映像的开源工具的广泛可用性),但该方法并不容易。创建基于 Windows 的映像看起来可能比创建 Linux 映像简单一些,因为不需要使用 guestfish 等工具修改映像。但目前还没有自动化工具来为 OpenStack 创建全功能的 Windows 映像,所以最终用户或操作人员还必须手动创建它们。如果一个全球化团队的测试人员或开发人员需要 Windows 映像,这些映像必须有不同的语言版本 — 而且团队可能使用数十种语言。云操作人员准备所有请求的语言版本的 Windows 映像,这是不可能完成的任务。

为私有云创建 Linux 和 Windows 映像对最终用户而言是一个耗时的工作 — 甚至对经验丰富的云操作人员也是如此。而且,组织可能缺乏资源让最终用户创建映像 — 例如,创建 Linux 映像所需的额外 KVM/QEMU 虚拟机管理程序。在这种情况下,创建最终用户请求的所有映像,对云操作人员而言是一项艰巨的任务。

最后,需要将新映像上传到 OpenStack 映像服务,根据映像来源与 OpenStack 映像服务之间的网络性能,这个过程可能要花很长的时间。出于相同的原因,反复验证新映像也可能会花很长的时间。

新的 OpenStack 映像创建方法

如果启用了 OpenStack 的用户要在线创建映像,创建能满足其需求的映像要容易得多。我们提出了一种新的映像创建方法,其中用户通过云服务所提供的 OpenStack 仪表板在线创建新映像。借助此功能,最终用户无需额外的虚拟机管理程序,不需要自行将映像上传到 OpenStack 映像服务。他们所需的只是操作系统安装 CD/DVD ISO 映像文件。

概念设计

在概念上,为 OpenStack 创建一个新映像的理想过程是,最终用户:

将操作系统安装 CD/DVD ISO 映像文件上传到 OpenStack 映像服务。 通过已上传的 ISO 映像启动一个新实例。 通过 OpenStack 仪表板中的 Virtual Networking Computing (VNC)/Simple Protocol for Independent Computing Environments (SPICE) 控制台安装操作系统。 执行特殊需要所要求的必要配置并安装所需的软件包。 手动或运行服务操作人员提供的脚本来执行 OpenStack 所要求的修改 — 例如,安装 cloud-init、
获取公共 SSH 密钥、启用 SSHD 远程登录/RDP 等的脚本。 创建实例的快照。 根据需要在快照上运行 glance image-update 命令,将快照转换为映像并添加其他元数据。

前提条件

必须满足一些条件才能确保新的映像创建方法取得成功:

一个可供所有最终用户使用的有效仪表板或 Web UI。 VNC 代理或 SPICE 代理运行正常且可用于所有最终用户。 一个 cloud-init 或等效的脚本工具存储库可供所有最终用户使用。 OpenStack 映像服务中拥有 VirtIO-win 驱动程序的一个 ISO 映像可供所有最终用户使用。

下面我们演示新方法的可行性。

可行性分析

该新方法最重要的两个方面是:如何支持 ISO 映像以及如何为从 ISO 映像启动的实例组装块设备。

目前对 ISO 映像的支持

OpenStack 支持 ISO 映像。也支持从 ISO 映像启动实例。但是,将来宾操作系统从 ISO 映像安装到从 ISO 映像启动的实例中,对此并未提供良好的支持。要想成功安装,必须满足一些严格的条件:

ISO 映像中的来宾操作系统必须默认已启用 VirtIO 设备驱动程序。 必须设置临时磁盘风格,它的大小必须满足来宾操作系统的要求。 仪表板和 OpenStack novncproxy 服务器必须在正常运行。

如果所有这些条件都已满足,即可从 ISO 映像成功地将来宾操作系统安装到从这个 ISO 映像启动的实例的临时磁盘上。当然,在来宾操作系统上也可像使用其他实例一样工作。但是,由于 OpenStack 中目前的实例快照机制,您无法成功地将实例转换为实例快照或映像。实例快照将仅包含实例的根磁盘。其他块设备(包括临时磁盘和卷)将被忽略。

实例块设备目前的组装工作流

图 1 显示了在从 ISO 映像引导一个 KVM/QEMU 实例时,OpenStack Nova 中块设备的组装工作流。

图 1. 组装块设备的现有工作流

在图 1 中的工作流中:

Nova 从 Glance 获取 ISO 映像并将它设置为一个虚拟机实例的根磁盘,以 CD-ROM 作为设备类型,IDE 作为总线类型。 Nova 创建一个临时磁盘并将它设置为虚拟机实例的第二个磁盘,以 disk 作为设备类型,VirtIO 作为总线类型。但只有在所设置的临时磁盘大小符合实例的风格时,这一步才能完成。 用户将来宾操作系统从根磁盘(实例的 CD-ROM)安装到临时磁盘(实例的第二个磁盘)并通过 VNC 逐步配置它。 用户从这个虚拟机实例创建一个快照,Nova 将快照保存到 glance 服务。

此工作流似乎适合从头创建一个新虚拟机映像。但您获得的是最初的 ISO 映像的副本。原因是快照中仅包含根磁盘(实例的第一个块设备,如果从 ISO 映像启动,实际上是实例的 CD-ROM),临时磁盘已被忽略。所以,在目前的 OpenStack 中,您可从 ISO 映像启动实例,也可将 ISO 映像中的操作系统安装到已配置临时磁盘且已启动的实例中,但不能创建已安装了操作系统的临时磁盘的快照。要解决此问题,需要调整实例的各个块设备的组装工作流。

新的组装工作流

您可以更改块设备组装流程,创建一个临时磁盘,其大小设置适当且一定会设置为从 ISO 映像启动的各个实例的根磁盘。更改之后,实例快照中包含的根磁盘将是已安装了操作系统的临时磁盘 — 完全满足您的要求。

图 2 显示了在对 libvirt 驱动程序进行修改(将在本文的 概念证明 一节中介绍)后,您从一个 ISO 映像启动一个实例时块设备的组装工作流。

图 2. 修改后的块设备组装工作流

下面是在从 ISO 映像启动实例时,修改块设备组装工作流的过程:

Nova 创建一个虚拟机磁盘文件并将它设置为虚拟机实例的根磁盘。设备总线默认设置为 VirtIO。 Nova 从 Glance 获取来宾操作系统的 ISO 映像并将它设置为第二个磁盘设备,这是一个 CD-ROM。 Nova 从 Glance 获取 VirtIO 驱动程序的一个 ISO 映像并将它设置为第三个磁盘设备,这是另一个 CD-ROM。 用户从第二个磁盘设备(第一个 CD-ROM)安装来宾操作系统并根据需要配置它。 如果 VirtIO 驱动程序默认未包含在来宾操作系统中,会使用第三个磁盘设备(第二个 CD-ROM)安装来宾操作系统的 VirtIO 驱动程序。 用户创建该实例的一个快照,Nova 将它保存到 Glance 服务。

目前对 ISO 映像的支持 中已介绍,实例快照仅包含实例的根磁盘,无论根磁盘的类型是什么都是如此。使用修改后的组装工作流,根磁盘是 Nova 创建的一个新磁盘文件,包含从作为操作系统映像的 CD-ROM(实例的第二个磁盘)所安装的来宾操作系统。

正如我们所构想的,结果是一个从操作系统 ISO 映像安装的新实例的实例快照 — 而不是最初的 ISO 映像的副本。

概念证明

要确保新的映像创建方法符合我们的设计目的,我们对 Nova 的代码进行了一些修改 — 主要修改了 libvirt 驱动程序。请参见 下载 获取相关代码。我们修改的 python 模块是 libvirt/driver.py 和 libvirt/blockinfo.py。这些文件中的注释标识了我们所修改的类方法和实例。

我们用于概念证明的环境包含:

硬件:

2U 机架服务器 2 个 4 核
Xeon 处理器 12 个 8GB RAM 4 个 900GB SAS 硬盘且配置了 RAID10 4 个 1Gps 以太网卡

软件:

Red Hat Enterprise Linux 6 update 4 作为虚拟机管理程序 RDO Grizzly 版本

我们在 RDO Grizzly 独立环境、RDO Grizzly 的多节点安装环境和官方 OpenStack Grizzly 版本上测试了修改后的代码。

测试和结果

本节介绍了我们为使用新方法创建虚拟机映像而修改的 Nova 代码,执行的简单测试过程以及一些测试示例。

测试过程

测试过程为:

为 Glance 创建操作系统 ISO 映像。 检查现有的风格,确保根磁盘大小满足您的要求。如果没有适用的风格,可创建一种新风格。 使用适用的风格,从这个操作系统 ISO 映像启动一个实例。 实例启动后,按照屏幕上的安装步骤,通过仪表板所提供的 VNC 控制台完成操作系统的安装工作。 根据需要安装应用程序并根据 OpenStack 的需要配置操作系统,例如安装 cloud-init 或等效的脚本,启用 SSHD 远程登录/RDP 服务等。 创建这个新安装实例的一个实例快照。 运行 glance image-update,或者如果仪表板提供了相关的功能,从仪表板更新快照信息,将映像类型改为 image。

测试结果

修改 libvirt 驱动程序后,从 ISO 映像启动的实例的块设备如清单 1 所示。

清单 1. 从 ISO 映像启动的实例的块设备映射

<disk type='file' device='disk'> <driver name='qemu' type='qcow2' cache='none'/> <source file='/var/lib/nova/instances/290124e3-a267-4223-bd69-661fac2035eb/disk.newos'/> <target dev='vda' bus='virtio'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/></disk><disk type='file' device='cdrom'> <driver name='qemu' type='qcow2' cache='none'/> <source file='/var/lib/nova/instances/290124e3-a267-4223-bd69-661fac2035eb/disk'/> <target dev='hda' bus='ide'/> <readonly/> <address type='drive' controller='0' bus='0' target='0' unit='0'/></disk><disk type='file' device='cdrom'> <driver name='qemu' type='qcow2' cache='none'/> <source file='/var/lib/nova/instances/290124e3-a267-4223-bd69-661fac2035eb/disk.virtio'/> <target dev='hdb' bus='ide'/> <readonly/> <address type='drive' controller='0' bus='0' target='0' unit='1'/></disk>

表 1 显示了几种主流操作系统的测试结果。

表 1. 测试结果

来宾操作系统 结果 Windows XP 失败* Windows Server 2003 R2 失败* Windows 7 成功
Windows 8 成功 Windows Server 2012 成功 RHEL5.9 成功 RHEL6.4 成功 SLES10 sp4 成功 SLES11 sp3 成功 *备注:对 Windows XP 和 Windows Server 2003 R2 的测试失败了,因为没有找到包含 VirtIO 驱动程序的软盘。根源是早于 Windows Server 2003 R2 的 Windows 版本仅支持从软盘加载额外的磁盘驱动程序。在本文中,我们仅添加了一个用于 VirtIO 驱动程序的 CD-ROM,如 图 2 中所示,但可以在更早 Windows 版本的块设备组装工作流中添加一个额外的软盘驱动程序。

结束语

我们新的映像创建方法的优点包括:


轻松为 OpenStack 创建新映像。 可轻松验证新创建的映像。 为所有最终用户提供了一种自助服务机制。

缺点包括:

映像可能无法支持全部功能 — 具体来讲,分区磁盘和调整引导磁盘上根分区的大小。 不支持早于 Windows Server 2003 R2 的 Windows 版本。(但如果通过支持旧 Windows 版本的软盘驱动程序来创建更复杂的组装工作流,也可支持这些版本。) 不支持缺少 VirtIO 设备驱动程序支持的旧 Linux 版本。

目前为止,大多数基于 OpenStack 的公共 IaaS 云服务都提供在基础映像中具有固定根磁盘大小的实例,以及 — 通过卷服务 — 为实例提供额外的磁盘空间。在私有云中,实例的大部分需求主要与所安装的中间件、来宾操作系统的主要版本/次要版本、实例风格等相关。与公共云服务中一样,可通过提供固定的平均根磁盘大小和足够的卷来满足磁盘大小要求。所以,分区磁盘和调整引导磁盘上根分区大小的功能对大多数私有云而言不是必需的。

OpenStack 已成长为一种适合开源云操作系统的全球流行平台。它使各种各样的云解决方案易于实施、可大规模扩展且包含丰富的功能。我们在本文中介绍的工作证明,可以基于 OpenStack 平台来实现新功能 — 而且 OpenStack 是一个开放且灵活的框架,而不仅仅是一个软件产品。

时间: 2024-10-28 03:58:35

使用OpenStack云操作系统为私有云构建Linux和Windows映像的相关文章

道里云CEO:私有云不是云计算

尽管云计算并没有明确的概念,在大多数人的理解中,云计算可以划分为公有云.私有云和混合云三大类,然而,今天记者在RSA2012中国大会的现场采访中,道里云http://www.aliyun.com/zixun/aggregation/14054.html">信息技术有限公司首席执行官毛文波博士对记者表示,私有云并不算是云计算,只有公有云才是真正的云计算. 毛博士表示,云是一种服务,包括了IaaS,PaaS,SaaS(传统上,公有云按照服务对象来划分的三大类),都是一种服务,然而这样的服务仅是

向云进军 企业私有云存储系统选购指南

企业数据量的不断激增给数据管理带来了极大的难题,传统的存储产品和技术越来越难满足业务对存储系统性能的需求,寻找一种创新的数据管理方式势在必行.云计算的概念由此产生,其具有的高性能.可伸缩性以及可靠性等优势给黑暗的企业IT部门带来一线曙光.随着各软硬件供应商都共同朝着云这一方向发力,云不再是高高在上,而是渐行渐近.众多备受海量数据管理难题的企业也开始蠢蠢欲动. 一般而言,敢第一个吃螃蟹的人,其收益是巨大的,但其在面临选择的风险也随之成正比.虽然现在诸多企业都对云摩拳擦掌.蠢蠢欲动,但如何去实现云却

基于openstack构建私有云实践

[版权申明:本文系作者原创,转载请注明出处] 文章出处:http://blog.csdn.net/sdksdk0/article/details/54835490 作者:朱培 ID:sdksdk0 本文主要分享的是云计算.openstack的使用.私有云平台建设.云服务器云硬盘的构建和使用.从基本概念入手到私有云建设,信息量非常大.对于openstack的安装部署都是从官方文档中一步步的介绍,内容非常详细. 一.云计算 基本概念 云计算(cloud computing)是基于互联网的相关服务的增

私有云选型评估:OpenStack vs VMware

OpenStack和VMware都是混合云和私有云的可选项.那么问题来了,你的组织应该选择哪个呢? 不同的厂商对云计算的未来有不同的看法.比如说,亚马逊Web服务认为私有云和混合云只是通往公共云道路上的踏脚石.但是企业对围绕就业保护,安全和法规遵从方面的担忧造成了私有云,特别是混合云的部署.据行业分析机构IDC的调查,超过65%的企业IT组织在2016年以前都将致力于混合云模式. 但当涉及到混合云的实施时,事情可能并没有一些人希望的那样有条理.在混合云里,数据在公共云和私有云之间传输,WAN通信

OpenStack在企业级私有云市场的现状如何?

问题描述 现在国内很多企业已经在用OpenStack部署私有云了,例如58同城.网易.携程.新浪......大家来谈谈各自的应用状况和困境啊,走过哪些坑,如何解决的?OpenStack面对这些需求的时候有哪些问题? 解决方案 解决方案二: 解决方案三: 解决方案四:OpenStack面对这些需求的时候有哪些问题?解决方案五:过来学习OpenStack解决方案六: 解决方案七:各位大神们,,能留点有用的帖子么??解决方案八: 解决方案九:OpenStack如何避免单点失效,比如做高可用时会不会影响

Rackspace和戴尔EMC合作推出基于OpenStack的私有云即服务

Rackspace和戴尔EMC星期一在波士顿召开的OpenStack峰会上宣布,两家公司正在合作提供私有云即服务解决方案. 据Rackspace说,此举仅为Rackspace与戴尔EMC扩大合作伙伴关系的第一步,此举旨在令各种机构可以更容易地开始使用公共云.Rackspace与戴尔EMC的合作伙伴关系意味着客户可以将Rackspace的OpenStack私有云解决方案与戴尔EMC的计算和存储硬件结合在一起.两家公司一开始时将为VMAX Hybrid.VMAX All Flash和Dell服务器提

OpenStack私有云和VMware私有云谁更贵?

研究机构451Research集团在5月初发布了最新一期的云价格指数.相信其中有趣的结果大家已经从不同的渠道看到了.不过,从一篇千字文的报道,我们很难了解这样的结论是由什么样的模式计算得出的.如果让这样硬生生的结论去指挥您的技术选型难免有些草率.在是否使用的开源技术向云迁移的问题上,所涉及的种种负责因素是无法用单纯的数字来体现的. 在以下的专栏文章中,你可以找到此次云价格研究的核心成果,以及作者对这一有趣的数字研究所持的个人观点.而我想说的是,单纯数字化的研究无法规避其局限性.对于451Rese

私有云的狂欢,2020年OpenStack市场规模将达50亿美元

451研究所近日大幅调高了OpenStack的预期市场规模,并预测OpenStack的收入将主要来自私有云的部署. 根据451研究所最新的OpenStack Pulse 2016报告(获取报告摘要版请关注IT经理网微信号:ctociocom,后台回复:OpenStack Pulse 2016+邮箱地址),开源私有云项目OpenStack产品收入正在以每年35%的高速增长,2017年OpenStack的试产规模将增长至25亿美元,2020年市场规模将突破50亿美元. OpenStack目前的收入主

私有云是真正的云吗

在当今竞争激烈的环境下,随时变化的业务要求需要灵活.快速地配置IT资源.除了灵活性外,传统的IT环境还需要新资源来支持应用程序的动态工作负载.这是一种可能性很大的情形:同一家企业组织里面的不同业务部门管理各自的计算资源,比如硬件.软件.存储.网络和应用程序,结果形成如同孤岛的计算基础设施.企业数据中心的电力.场地和冷却是如今企业面临的一些重大挑战.在增加了计算容量的硬件上运行的应用程序无法高效地利用传统数据中心的可用资源.除此之外,还需要专业人员维护和管理整个环境. 幸好,计算领域的发展为各种各