根设备提示¶
https://blueprints.launchpad.net/ironic/+spec/root-device-hints
允许操作员向 Ironic 传递一些提示,以决定在部署时应选择哪个设备。
问题描述¶
当部署 ramdisk 启动时,Ironic 会选择找到的第一个磁盘作为根设备(镜像将被放置在哪个设备上)。如果服务器有多个 SATA、SCSI 或 IDE 磁盘控制器,则其相应设备节点的添加顺序是任意的 [1] [2]。这可能导致 /dev/sda 和 /dev/sdb 等设备在每次启动时切换,并且 Ironic 在每次部署机器时都会选择不同的磁盘。
作为操作员,如果我的服务器有多个磁盘,我希望选择 Ironic 应该将镜像部署到哪个磁盘上。或者,如果我创建了一个 RAID 设备作为我的根设备,我希望告诉 Ironic 始终使用该设备。
另一个问题是,对于完整磁盘镜像部署,如果我们两次部署服务器,并且每次 Ironic 选择不同的磁盘,我们最终可能会在 2 个磁盘上拥有有效的引导加载程序。
提议的变更¶
此蓝图提出的更改是为操作员提供一种通过 Ironic API 传递有关在部署时应选择哪个磁盘的提示的方式。这样 Ironic 就可以始终选择正确的磁盘来写入镜像。
此外,随着 Ironic 能够创建 RAID 阵列,能够告诉 Ironic 使用刚刚创建的设备作为部署的根设备会很好。
此规范建议在初始工作时传递有限数量的提示,但以后可以扩展。最初建议的提示列表是
型号 (STRING):设备标识符
供应商 (STRING):设备供应商
序列号 (STRING):磁盘序列号
WWN (STRING):唯一的存储标识符
HCTL (STRING):SCSI 的 Host:Channel:Target:Lun
大小 (INT):设备大小,单位为 GB
提示应位于 Node 资源的 properties 属性中,键将是 root_device,值是一个字典,以便操作员可以组合一个或多个提示。例如
node.properties['root_device'] = {'wwn': '0x4000cca77fc4dba1'}
关于将选择哪个磁盘的逻辑将遵循
如果未指定提示,Ironic 将继续选择找到的第一个磁盘。
如果指定了提示并且只找到一个磁盘,Ironic 将选择它。
如果指定了提示并且找到多个磁盘,Ironic 将选择匹配所有标准的第一个磁盘。
如果指定了提示并且未找到任何磁盘,则部署将被中止。
默认部署 ramdisk 和 IPA 需要更改以支持基于指定的提示过滤磁盘。
备选方案¶
我们可以建议操作员避免在由 Ironic 管理的机器上拥有多个存储设备。
数据模型影响¶
无
REST API 影响¶
由于我们希望使用字典作为 properties 属性的值,因此需要修复 bug 1398350。
RPC API 影响¶
无
驱动程序 API 影响¶
无
Nova 驱动程序影响¶
无
安全影响¶
无
其他最终用户影响¶
无
可扩展性影响¶
无
性能影响¶
无
其他部署者影响¶
部署者将在选择用于部署的磁盘设备方面具有更精细的粒度。
注意
在将设备大小指定为提示时,操作员需要确保该值与节点的 local_gb 属性不冲突。这将在本规范中记录。
开发人员影响¶
无
实现¶
负责人¶
- 主要负责人
lucasagomes
- 其他贡献者
无
工作项¶
让 Ironic 检查 node.properties 中的提示
将提示信息传递给部署 ramdisk 和 IPA
添加测试和文档
修改 diskimage-builder 中的默认部署 ramdisk,以便在选择磁盘设备时考虑提示
修改 IPA 以在选择磁盘设备时考虑提示
依赖项¶
bug 1398350 需要修复。
测试¶
将添加单元测试
升级和向后兼容性¶
该更改是向后兼容的,因为如果未指定提示,Ironic 将继续执行它今天所做的事情(选择找到的第一个磁盘进行部署)。
文档影响¶
将添加一份文档,解释提示的工作原理以及支持的选项和值。
参考资料¶
无