Brick 获取卷路径 API¶
https://blueprints.launchpad.net/cinder/+spec/brick-fetch-paths
os-brick 库目前具备发现和从主机 SCSI 子系统中移除卷的能力。每个连接器对象都有能力为给定的卷返回系统上现有路径的列表,以及这些卷路径所在的位置。本规范的目的是详细说明一个用于获取卷的现有路径、搜索路径以及连接器的所有现有卷列表的正式 API。其目的是允许在卷附加后验证卷路径,以及在卷分离后验证卷是否被移除。一旦我们有了这个 API,就可以自动化复杂操作的附加和分离验证。
问题描述¶
在 OpenStack 历史上,我们一直没有一种自动验证分离过程不会留下孤立卷的方法。我将孤立卷定义为与已分离的卷关联的系统上的卷路径。
这可能会在以后卷附加到该主机时引起问题。某些 SAN 阵列会重用 iqn 和/或 LUN ID 用于卷。这可能会导致主机处于卷与主机上的孤立卷路径冲突的状态,从而导致 I/O 损坏。
用例¶
主要用例是在附加和分离后获取系统上卷的现有路径列表。
提议的变更¶
为每个 os-brick 连接器添加新的 API,以 1) 获取给定卷的系统上现有路径。 2) 获取连接器的所有卷路径。
基于 Flask 的 API 脚本。添加一个新的 Flask 脚本,公开这些 API 调用,可以在测试环境中运行。这个 Flask 脚本需要在 nova 实时迁移期间自动验证分离的成功,而 nova 实时迁移发生在多个计算主机上。这个 Flask 脚本仅用于 Jenkins 测试和门禁检查。
备选方案¶
有人可以编写单独的验证脚本,在 os-brick 之外,为每种类型的卷(连接器),但无法从连接器中的未来修复中受益。
数据模型影响¶
无
REST API 影响¶
无
安全影响¶
os-brick 已经在 connect_volume 调用后返回单个路径条目。今天 os-brick 不做的是返回与连接器关联的所有卷路径的列表。
值得注意的是,如所提议的更改中所述的 Flask 脚本,不应在生产/实时系统上运行/使用。它仅用于检查/门禁测试。
通知影响¶
无
其他最终用户影响¶
无
性能影响¶
无
其他部署者影响¶
无
开发人员影响¶
连接器开发者需要为他们的连接器实现新的 API,即使它们是存根。
实现¶
负责人¶
- 主要负责人
walter-boring
- 其他贡献者
anthony-mic-lee
工作项¶
我已经有一个正在 Gerrit 中进行的工作的补丁,用于 API 工作。我们需要添加一个后续补丁,该补丁创建用于远程调用连接器方法的 Flask 脚本。
依赖项¶
无
测试¶
标准单元测试。我也对其进行了手动测试。最终,我们希望在检查/门禁测试中添加卷附加的验证。对于每个连接器对象,我们应该有第三方 CI 来测试新的 API。
文档影响¶
代码已记录。
参考资料¶
Gerrit 中的现有补丁 * https://review.openstack.org/#/c/199764/