使用分区镜像的本地启动支持

https://blueprints.launchpad.net/ironic/+spec/local-boot-support-with-partition-images

该蓝图建议接受 Nova flavor 指定的启动选项,并使裸机从本地硬盘驱动器启动,而不是通过 pxe 或 vmedia 启动,具体取决于用户选择的启动选项。

问题描述

目前,部署分区镜像的 Ironic 驱动程序需要 Ironic-conductor 进行节点的后续重启。节点的后续重启将通过 pxe 或使用虚拟媒体进行。此外,Nova 用户无法指定启动选项(本地/网络启动)以使用分区镜像进行部署。

提议的变更

  • Nova Ironic 驱动程序应读取 flavor 键中指定的启动选项 capabilities:boot_option,该选项应通过 Nova Ironic 驱动程序通过 node.instance_info 字段传递。

  • Ironic 将通过 PXE 模板中的内核 cmdline 将此信息传递给部署 ramdisk,将启动设备永久设置为 HDD,并在部署完成后清理 PXE 配置文件。

  • 部署 ramdisk 检查内核 cmdline 中的参数并处理引导加载程序的安装。

注意

为了设置本地启动,正在部署的镜像应安装 grub2。

此规范不支持 Windows 镜像。

创建 EFI 启动分区,包括 EFI 模块并通过 efibootmgr 管理引导加载程序变量,此规范不支持。

备选方案

  • 使用磁盘镜像构建器中的“localboot”元素

    在使用 disk-image-builder 生成分区镜像时,我们可以使用 tripleo-image-elements 项目中提供的“localboot”元素。使用它的缺点是本地启动将在节点部署后的第一次启动期间启用。因此,需要服务器两次重启才能启用 localboot。此外,Ironic-conductor 不会意识到此更改,并继续为从 conductor 执行的重启操作提供 pxe 或 vmedia 启动。

  • 使用整个磁盘镜像实现本地启动

    实现本地启动的另一种方法是使用整个磁盘镜像进行部署。目前,这只能通过 agent 驱动程序实现。

数据模型影响

无。

REST API 影响

无。

RPC API 影响

无。

驱动程序 API 影响

无。

Nova 驱动程序影响

Nova Ironic 驱动程序需要将 Nova flavor 中的 capabilities:boot_option 传递到 Ironic 的 node.instance_info 字段。

安全影响

本地启动是一个双刃剑。一方面,如果发生断电,配置为本地启动的客户机节点可能会在控制平面之前启动。另一方面,如果断电导致控制平面无法启动,这也是一个问题。因此,此规范使本地启动和网络启动可配置为每个实例,部署者应在部署云时注意这一点。

其他最终用户影响

  • 部署者可以将启动选项请求指定为 Nova flavor 的 capability。 capabilities:boot_option=localcapabilities:boot_option=netboot(默认)。

  • boot_optionlocalnetboot 设置为 node.properties 中的 capability。

可扩展性影响

这可以通过减少网络流量来提高可扩展性,而无需通过网络传输内核和 ramdisk 来启动节点。

性能影响

无。

其他部署者影响

  • 正在部署的镜像应安装 grub2。

开发人员影响

无。

实现

负责人

主要负责人

lucasagomes

其他贡献者

faizan-barmawer

工作项

  • 在 Ironic 中实现代码,该代码将检查 node.instance_info 字段中的 boot_option 参数。如果设置为“local”,我们必须

    • 通过 PXE 配置文件的内核 cmdline 将信息传递给部署 ramdisk。

    • 在部署完成后删除该节点的 PXE 配置文件。

    • 在最终重启之前,将启动设备永久设置为 HDD。

  • 在部署 ramdisk 中实现代码,该代码将查看通过内核 cmdline 传递的参数,并将引导加载程序安装到磁盘上作为部署的一部分。

依赖项

  • 需要此 Nova virt Ironic 驱动程序修复,才能将 Nova flavor 中的 capabilities 传递到 Ironic 节点实例信息字段。请参阅 https://review.openstack.org/141012

测试

  • 单元测试。

升级和向后兼容性

无。

文档影响

  • 修改 Ironic 安装指南。

参考资料