允许使用 virtiofs 将本地 scaphandre 目录映射到实例¶
https://blueprints.launchpad.net/nova/+spec/virtiofs-scaphandre
Scaphandre 是一种工具,可用于测量计算和 VM 的功耗,精确到进程级别。(https://github.com/hubblo-org/scaphandre)
如果您想了解更多信息,BBC 团队提出了一种有趣的用例,用于创建环境仪表板:https://superuser.openstack.org/articles/environmental-reporting-dashboards-for-openstack-from-bbc-rd/
问题描述¶
目前,由于 scaphandre 需要计算节点上可供正在运行的 VM 访问的目录,因此无法获取每个 VM 的功耗。该目录包含 scaphandre 实例(客户代理)在 VM 上运行以正确报告 VM 及其相关进程功耗所需的数据。
Scaphandre 提出的解决方案是在 VM 中使用 virtiofs 挂载该目录。但是,用户无法执行此操作,因为它需要修改 VM XML 定义文件。Nova 完全管理此文件,因此只有 nova 才能更改它。
用例¶
作为用户,我想了解我的计算节点的功耗,并深入到 VM 和 VM 进程的单独功耗。
作为管理员,我想允许这种用法,但要确保用户只能挂载配置的必需目录。我还不想泄露云设计见解。
提议的变更¶
为了简化规范,该特性将被命名为 virtiofs-scaphandre。
虽然此特性是为了支持 scaphandre 而实现的,但其他工具可能需要此功能。因此,实现将尽可能通用。
此更改部分依赖于 https://specs.openstack.org/openstack/nova-specs/specs/2023.2/approved/libvirt-virtiofs-attach-manila-shares.html 规范来构建包含 virtiofs 设置的 VM XML 文件(主要是 驱动程序部分)。
这意味着相同的要求和限制。
QEMU >=5.0 和 libvirt >= 6.2
关联的实例使用文件支持的内存或巨页
由于生命周期附加和分离功能仅在 libvirt 中“最近”实现,因此将不支持迁移实例。
变更描述
添加计算配置选项
share_local_fs,该选项指定计算源目录与 VM 目标 mount_tags 之间的映射。
share_local_fs = { "/var/lib/libvirt/scaphandre": "scaphandre" }
如果计算节点上存在上述配置选项,则添加计算特性
COMPUTE_SHARE_LOCAL_FS,指定 virtiofs-scaphandre 特性在此计算节点上可用。用户可以将
hw:power_metrics作为额外的规格或hw_power_metrics镜像属性添加,从而会发生两件事Nova 将把实例调度到具有 share_local_fs 的主机。
Nova 将在实例 XML 文件中添加 virtiofs 设置,如以下示例所示。
<filesystem type='mount' accessmode='passthrough'>
<driver type='virtiofs'/>
<source dir='/var/lib/libvirt/scaphandre/<DOMAIN_NAME>'/>
<target dir='mount_tag'/>
<readonly />
</filesystem>
注意
<DOMAIN_NAME> 是 virsh list 或 OS-EXT-SRV-ATTR:instance_name 报告的名称。这是 scaphandre 用于获取 VM 名称和 openstack 之间的通用名称。
可以使用 instance_name_template 定义实例名称。https://docs.openstack.org/nova/latest/configuration/config.html#DEFAULT.instance_name_template
示例
“OS-EXT-SRV-ATTR:instance_name”: “instance-00000034”
/usr/bin/qemu-system-x86_64 -name guest=instance-00000034…
因此,用户可以使用以下命令行在 VM 上挂载计算源目录。
user@instance $ mount -t virtiofs mount_tag /var/scaphandre
注意
用户可以在实例元数据中查看 mount_tag。可以基于此机制构建挂载自动化。
备选方案¶
不适用
REST API 影响¶
不适用
数据模型影响¶
引入 hw_powermetrics 镜像属性作为新的属性对象。
扩展 flavor 额外规格验证以检查 hw:power_metrics。
安全影响¶
计算节点的 filesystem 将以只读方式共享。这是为了防止 VM 用户对主机进行任何修改。
通知影响¶
不适用
其他最终用户影响¶
Scaphandre 的安装和 配置留给 openstack 管理员。
性能影响¶
不适用
其他部署者影响¶
无
开发人员影响¶
无
升级影响¶
不适用
实现¶
负责人¶
- 主要负责人
uggla (rene.ribaud)
功能联络人¶
- 功能联络人
uggla
工作项¶
新的配置选项。
添加新的特性。
更改以共享计算节点 filesystem(如果镜像属性或 flavor 额外规格请求)。
依赖项¶
无
测试¶
功能 API 测试
集成 Tempest 测试
文档影响¶
将提供详细的管理员和用户文档。
参考资料¶
历史¶
发布名称 |
描述 |
|---|---|
Antelope |
引入 |
Bobcat |
重新提出 |