BootFromISO
- Launchpad 条目: NovaSpec:iso-boot
- 创建:
- 贡献者:
总结
从 ISO 启动允许 OpenStack 创建从基于 ISO 的镜像启动的虚拟机。同时还会附加一个与虚拟机风味一致的空白硬盘。
发布说明
从 ISO 启动允许 OpenStack 创建从基于 ISO 的镜像启动的虚拟机。除了包含 ISO 镜像的 CDROM 之外,还会附加一个与虚拟机风味一致的空白硬盘。使用的 ISO 镜像应该已上传到 Glance,并且 DISK_FORMAT 设置为 'iso'。
原理
此功能是为了应对商业操作系统许可限制的需求。对修改后的软件镜像的再分发限制限制了交易修改软件镜像的能力。例如,MS Windows 许可的购买者可以使用 ISO 安装作为起点创建自定义镜像,但他们无法在可用的许可方案下再分发这些镜像。因此,需要一个允许虚拟机从 ISO 启动的功能,并且该虚拟机的磁盘镜像可以为批量使用做好准备。
用户故事
用户希望创建一个 Microsoft Windows 金色镜像,该镜像可用于创建多个虚拟机。起点是一个包含用户能够许可的 Windows 安装的 ISO。使用“从 ISO 启动”,可以触发 Windows 安装。然后用户可以自由地引导安装完成,安装网络/密钥注入所需的客户代理软件,然后应用 Microsoft 的 sysprep,这会导致从该镜像创建的新虚拟机在首次启动时为操作系统生成唯一的安全 ID。
有关其他先决条件,请参阅下面的假设部分。
前提条件
在网络注入之前可用 GUI 控制台访问。操作系统安装在平台获得网络地址之前执行,因此无法使用操作系统的远程访问设施。在此安装期间,仍然必须提供 GUI 控制台,以便可以完成需要用户交互的安装步骤。
现有的创建镜像功能足以捕获金色镜像。
目前,只有 xenapi 后端将被支持,以简化首次实现。
设计
将 DISK_FORMAT 类型 'iso' 添加到 Glance 加载的允许类型中。这将向 Nova 信号,该镜像应作为只读 cdrom 块设备附加,而不是作为可读/写的硬盘。扩展 DISK_FORMAT 比自定义属性提供更好的参数检查,因为可以筛选 DISK_FORMAT 值。
将代码路径添加到现有的 VM 创建功能中,该功能在引导镜像具有 DISK_FORMAT 'iso' 时将 ISO 镜像放置在 CDROM 块设备中,将其标记为引导介质,并附加满足 VM 风味规范的硬盘。
实现
Glance 变更 (已完成)
此功能涉及 Glance 的 DISK_FORMAT 枚举。需要能够使用 DISK_FORMAT 'iso' 标记镜像,以向 VM 启动代码发出信号,该镜像需要类似 CDROM 的引导设备。
Nova 变更
此功能涉及 VM 启动代码。'iso' DISK_FORMAT 信号表示与 CDROM 关联的 ISO 以及根据 VM 的实例类型属性附加到 VM 的空白磁盘。该 VM 被设置为从 CDROM 启动。
测试/演示计划
必须引入单元测试和一个复制用例的功能测试。
未解决的问题
- 最好能够从已关闭的 VM 创建金色镜像。这避免了金色镜像从恢复模式检查开始。这将需要 VM 在关闭后存在一段时间。
- 在启动标准的 Microsoft Windows ISO 后,由于它不支持 VirtIO 磁盘,因此 Windows 安装程序无法访问临时驱动器。需要一种额外的机制来使 VirtIO 驱动程序可用,以便安装程序可以加载它们。通常,VirtIO 驱动程序包含在另一个 ISO 镜像中。