CinderVictoriaPTGSummary
目录
简介
此页面包含 Cinder 项目在 2020 年 6 月 2 日至 5 日举行的 Victoria PTG 期间会议中讨论的主题的摘要。
本文档旨在提供每个会议的摘要。更多信息可在 cinder PTG etherpad 上找到
会话已录制,因此要获取任何讨论的全部详细信息,您可以观看/收听录制内容。录制链接位于下面的适当位置。
周二 6月2日:当前 Cinder 问题
录像
讨论附加卷暴露主机信息给非管理员时的安全问题
讨论由 whoami-rajat 领导
这与 https://bugs.launchpad.net/cinder/+bug/1740950 和 相关错误:https://bugs.launchpad.net/cinder/+bug/1736773
计算主机在卷详情响应中泄露,也在 REST 附件 API 中。
我们已经同意卷详情响应仅在以管理员身份调用时才显示主机(API 响应已经允许为空值,因此不需要 API 更改)。
对于附件 API 响应,需要进行一些研究,以了解是否需要此字段以及在什么上下文中需要。看起来 Nova 不需要它,看起来我们的 os-brick 连接器也没有使用它,但另一方面,此信息已经存在于响应中很长时间了,我们需要小心,因为可能有东西正在使用它。我们需要小心响应中省略的信息,因为如果限制过多,调用者将无法连接到后端。
结论
- 短期内,需要制定策略来管理此问题
- 未解决的问题:该建议是保持默认行为,但这仍然允许泄露计算主机名;可能最好采用更严格的策略(因为我们不相信任何服务依赖它),然后让操作员调整策略以允许需要此信息的用例的用户查看它
- 操作 - whoami-rajat 将继续处理此问题
加密卷的容量规划
讨论由 eharney 和 enriquetaso 领导
创建加密卷时,LUKS 标头会占用一些空间。这在一些迁移错误中显示出来。如果您有一个未加密的卷并迁移到加密类型,则会失败,因为目标上没有足够的空间来容纳整个源卷。
- 错误:https://bugs.launchpad.net/cinder/+bug/1852168
- 相关 LVM 补丁:https://review.opendev.org/#/c/682339/
- 相关 RBD 补丁:https://review.opendev.org/#/c/693772/
- tempest 测试补丁:https://review.opendev.org/#/c/695967/
丢失的确切空间量尚不清楚,它可能因 luks 格式以及 iscsi (cryptsetup) 与 rbd (luks) 而异。它可能在 1-2 MB 左右,但我们以 GB 为单位分配空间。是否可以进行非常细粒度的空间分配可能取决于包含卷的后端。我们还需要保留千兆字节边界以进行会计目的(使用情况、配额、费用等),因为这是每个人工具所期望的。
Walt 建议我们在卷迁移期间允许指定新的大小。对于 retype,Gorka 建议我们可以在 retype 请求中添加一个类似于当前 migration_policy 的标志,该标志让用户可以选择如果需要迁移,则可以执行迁移。我们可以有一个标志,指示如果 retype 要成功,则可以增加卷的大小。这样我们就不会在用户不知情的情况下进行操作——如果卷不合适,我们会失败,并允许他们 retype 到新大小(如果他们希望 retype 成功)。
结论
- 采用 Walt/Gorka 的方法。这将允许我们修复许多错误,如果将来有需求,我们可以迁移到更复杂的东西。
- 操作 - Sofia - 在文档中添加说明,说明将未加密的卷重新类型化为相同大小的加密卷很可能会失败(以便用户知道不要在旧版本中尝试此操作)
配额!!!
讨论由 rosmaita 领导
问题是代码中存在竞争条件和错误,因此操作员会看到配额表中重复条目、不正确的用法报告等。
有一个规范建议删除配额使用缓存(数据库表):https://review.opendev.org/730701
想法是,与其尝试更新此表,不如在运行时确定使用情况。有些人怀疑这可能会导致性能问题,但 Eric 认为,通过适当的索引,数据库可以非常快速地计算出这一点。与实际构建卷所需的时间相比,这绝对是一个非常小的数字。
我们可能仍然需要担心使用新方法的一些竞争条件。我们的用法代码基于 Nova 的,但他们已经重写了他们的代码以消除数据库表。但他们也接受偶尔用户超过配额是可以的。我们可能需要做类似的事情。
讨论中出现两个相关问题
- keystone “统一限制”工作——这与用户限制存储在何处有关,但不影响用法计算。将用户限制移动到 keystone 将是一项独立的工作
- REST API 当前为用法返回 413 或 500。API SIG 建议返回 403 而不是 413,但似乎没有理由更改。 (您需要一个新的微版本才能返回“正确”的响应代码,但如果该微版本不可用,您仍然需要能够处理“不正确”的响应代码,因此为什么不坚持我们所拥有的。)但是,应该修复 500。
结论
- 在 https://review.opendev.org/730701 中的方法看起来很有希望。如果我们可以获得一些性能数字来评估更改的影响,那就太好了。
- 需要弄清楚我们将看到哪些新的竞争条件以及如何处理它们。 (查看 Nova 所做的事情应该有所帮助。)
- 操作 - 继续讨论规范
(团队提前结束,以便 Cinder 核心安全团队可以审查补丁并计划推出修复 Launchpad Bug #1823200 的补丁,该补丁将于第二天公开发布。)
周三 6月3日:第三方驱动程序
录像
错误:使用通用 NFS 驱动程序扩展附加卷失败
讨论由 lseki 领导
错误:https://bugs.launchpad.net/cinder/+bug/1870367
它会影响依赖通用 NFS 实现的 Quobyte 和 NetApp 驱动程序,我们需要分两步修复它
(1) 不允许对 nfs 驱动程序扩展附加卷:https://review.opendev.org/#/c/725805/
(2) 找出如何安全地进行在线扩展,然后重新启用该功能
这曾经有效,但已经停止。怀疑 qemu、qemu-img 的更改似乎正在进行更多的锁定(版本 2.10、2.11,大约在那个地方)。假设是 nova 锁定文件,然后 cinder 进程无法写入它。
我们需要研究是否有我们可以要求 nova 执行的 qemu 操作,例如:
virsh qemu-monitor-command <DOMAIN> --hmp "block_resize <DISK> 2G"
想法是模拟快照,您有一个通过 libvirt 实现的 nova API。
结论
- 继续两阶段方法,即阻止 nfs 驱动程序的该操作,这样您就不会遇到故障,并研究如何实际修复它
- 似乎我们需要 nova 的合作,我们不应该尝试自己绕过锁定
- 测试:我们在 cinder gates 中运行 devstack-plugin-nfs-tempest-full;准备好后,应在作业中启用 volume-feature-enabled.extend_attached_volume
LVM 卷驱动程序的改进建议,通过 cinder 直接附加存储
提议者不可用,但我们还是讨论了这个问题,因为它已经出现了很多次。
- POC 代码:https://github.com/bojleros/cinder-experiments/blob/master/README.md
- 之前的讨论:http://eavesdrop.openstack.org/meetings/cinder/2020/cinder.2020-04-29-14.00.log.html#l-181
基本思想是,如果您位于同一节点上,则可以通过将卷作为设备打开来获得一些优化,从而跳过 iSCSI 层。问题是这是一个非常特殊的情况。
团队讨论了几种方法
- 在 LVM 驱动程序中引入此优化,如果您位于同一节点上,则跳过 iscsi 层
- 优点:将允许更多功能
- 缺点:使驱动程序更复杂,更容易引入错误
- 在 cinder 中添加一个选项以启用 LVM 驱动程序上的“尝试本地连接”
- 如果启用,则将路径添加到连接信息
- 如果 os-brick 收到路径,则尝试使用它(如果存在),如果不存在,则执行正常的 iSCSI 连接
- 在 lio 目标中做类似的事情
项目对这个有什么态度?
- 如果是新的目标,可以克隆 lio 作业并运行这些测试(因为它是一个单节点案例)
- 需要有良好的文档,尤其是关于限制
- 如果采用“可选”方法,它将使用相同的 lio 作业,但设置“尝试本地连接”配置
- 底线是我们希望尽可能减少对其他驱动程序的影响
结论
- 我们想更多地了解用例——这确实听起来像是使用 cinder 来管理 nova 临时存储
- 提议者在解决上述问题后可以再次提出此问题
Ceph iSCSI 驱动程序
讨论由 hemna 领导
Walt 一段时间前开始这项工作,但由于一些依赖项未打包成发行版,因此无法获得基础设施批准的 CI,所以工作停滞了。
四月份邮件列表中再次讨论了这个问题:http://lists.openstack.org/pipermail/openstack-discuss/2020-April/014278.html
Walt 今天早上写了一个更新:http://lists.openstack.org/pipermail/openstack-discuss/2020-June/015237.html
Ubuntu Focal 现在有了软件包,所以我们可以以 Focal 作为 CI 目标。Fedora 的软件包可能很快也会发布。
目前正在努力将 ceph devstack 插件更新到 ceph 的现代版本:https://review.opendev.org/#/c/676722/ -- 帮助合并这个补丁会很好,这样我们就可以使用现代的 ceph 了。
结论
- Walt 现在有时间继续这项工作了;他将与 Linaro 开发者协调合作。
移除卷驱动程序 abc 类
由 eharney 领导的讨论
基础驱动程序的设计包括许多接口作为抽象类,例如:https://opendev.org/openstack/cinder/src/commit/be9d5f3fa54b1b7948f44a9c91cf3f4753c0a03b/cinder/volume/driver.py#L1998
这是一大堆效果不佳的代码(abc 没有达到我们期望的效果),最好将其删除。(这已经是一个 TODO 事项好几年了。)
总体思路是从移除这些各种“xxxVD”抽象类开始,并使用单个卷驱动程序类,而不是所有这些带有 abc 的子类。
一般观察
- 可能分一个或几个周期完成
- 肯定会影响树外驱动程序,需要公开这个信息
- 也许保留这些类,但移除 abc 并使其成为无操作类
- 将树内驱动程序更改为仅从基础驱动程序类继承,而不是该类逗号 xxxVD 逗号 yyyVD
我们有两组描述驱动程序接口的类
- cinder.volume.driver 中的 abc 类
- cinder.interface 中的类
最好有一个单一的接口类源,定义实现驱动程序需要做什么。
结论
- 这似乎在概念上并不困难,但会涉及很多代码。
- e0ne 有兴趣看到这件事发生
- 需要在开始之前更清楚地确定“一般观察”中的要点,但社区的总体感觉是这是一个好主意
备份驱动程序问题
由 Shatadru 领导的讨论
好吧,只有一个问题。这个问题是备份驱动程序的容器参数。它取决于你使用的驱动程序,处理方式不同
- swift 创建一个 bucket
- nfs 创建一个目录
- ceph 将其用作 pool 名称
对于 Ceph 来说,如果 pool 不存在,备份最终会失败,这可能会让用户感到困惑
- 他们期望它像其他驱动程序一样工作,你可以使用它来组织你的备份
- 没有文档说明对于 Ceph,你需要提供一个现有的 pool 名称,否则你的请求将失败
大多数使用 Ceph 的操作员可能不希望最终用户使用它,因为他们可能已经为备份预留了一个特定的 pool,并且不希望用户将备份放在其他 pool 中。他们可能也不希望用户知道任何 pool 名称。
希望为 Ceph 驱动程序添加一个配置设置,以忽略传递的容器(如果传递了的话)。问题是,这对于其他后端驱动程序来说没有太大意义,所以我们不希望将其设置为全局设置——这意味着我们无法在 API 层检测和拒绝它。
这对于 Ceph 来说是一个真正的问题,因为最终用户可以探测以找出他们可以访问哪些 pool,并且他们可以将东西放入“错误的”pool 中。但对于其他驱动程序来说,这似乎完全没问题。
结论
- 应该为 Ceph 驱动程序添加一个配置选项,例如“ignore_container”,然后配置的备份 pool 即使用户指定了其他内容也会被使用
- 我们将跟踪这个问题作为一个 Launchpad bug:https://bugs.launchpad.net/cinder/+bug/1881934
- 行动 - Shatadru - 将发布一个文档补丁
- 行动 - rosmaita - 将更新 bug,指向修复的方向,并包含本次讨论的内容
回溯 'supported' 状态
我们在 Ussuri 中允许了这一点,在 https://review.opendev.org/#/c/700775/ 但这可能是一个疏忽。但后来我们在 https://review.opendev.org/#/c/718758/ 中又做了同样的事情,因为已经形成了先例。只想确认我们认为这是一个好主意。
结论
- 这样做是可以的,但我们只会允许回溯到最新的稳定分支
- 需要看到证据表明该驱动程序实际上可以在该稳定分支中正确运行(因为大多数第三方 CI 仅测试 master)
- 行动 - rosmaita - 更新驱动程序策略,明确说明上述内容
保留 'unsupported' 驱动程序在树中
我们在 2020 年 1 月更改了我们的下一周期移除策略,以更长时间地保留驱动程序,以便为希望使用该驱动程序的操作员提供便利,同时也希望供应商最终承担责任,使其再次“受支持”。事实上,这在 Ussuri 期间发生了,几个在 Train 中未能满足 CI 必须运行 Python 3 要求的驱动程序在 Ussuri 中修复了它们的 CI,并且它们的驱动程序再次标记为“受支持”。
然而,我们遇到一个问题,导致一些审查者表达了第二想法,即 cinder 功能需要更改一些驱动程序,包括至少一个“不受支持”的驱动程序:https://review.opendev.org/#/c/720722/
因此,本次讨论的目的是确保人们同意保留树中的“不受支持”的驱动程序,即使这意味着 cinder 团队(而不是特定的驱动程序维护者)可能需要对驱动程序进行更改以支持通用的 cinder 功能。
结论
- 我们已经知道我们需要让“不受支持”的驱动程序通过测试,这意味着 cinder 团队(而不是特定的驱动程序维护者)可能需要更改驱动程序代码;添加代码以支持 cinder 功能似乎没有太大区别
- 当前策略是,如果维护变得负担,我们可以删除“不受支持”的驱动程序,因此我们将继续根据具体情况进行评估
- 具体情况的原因是,在上述讨论的案例中,一些不受支持的驱动程序被修复,因为它们继承自一个被修复的类,而至少有一个不受支持的驱动程序需要自己的更改。如果更改很复杂,那么保留前者并删除后者是有意义的。
- 行动 - 看起来这已经包含在当前策略中,所以不需要对此采取任何行动
Ussuri 开发周期回顾 - 驱动程序开发者
我们没有收到很多反馈。
损坏的 RBD 实时迁移
这实际上不是一个讨论,有人在 etherpad 上留下了一个问题,Gorka 回答了它。有关详细信息,请参阅 etherpad:https://etherpad.opendev.org/p/victoria-ptg-cinder
周四 04 月 04 日:Cinder 改进
录像
最近的安全问题
对 OSSN-0086 的快速讨论,该问题昨天宣布。我们上一个周期也有类似的问题,在 OSSN-0085 中描述了它。
结论
- 驱动程序维护者最好查看这些 OSSN,并确保他们的驱动程序没有受到类似问题的威胁。
审查我们的审查策略
由 eharney 领导的讨论
Eric 提醒团队注意 'tox -e cover' 以及你可以使用它来确保你正在审查的代码正在被测试。这帮助他发现了一些代码的问题,这些代码看起来正在被测试,但实际上并没有。
这引发了关于在模拟时使用 spec 或 autospec 的讨论;如果没有其中任何一个,mock 会允许你在模拟对象上调用不存在的函数而不抱怨,这就是这里的问题:它允许对 .has_calls() 的调用看起来像在做一些事情,而实际上并没有(正确的方法是 .assert_has_calls(),这将使测试(正确地)失败)。
还有一些关于 pylint 任务的讨论,它总是失败;如果它只运行当前补丁中的更改,那会很好,这样你就可以知道失败是否是由你正在审查的补丁引起的。
结论
- 最好在审查中直接显示覆盖率结果;我们可以在 Victoria 中添加一个非投票覆盖率任务,并在下一个 PTG 中重新审视,看看人们是否觉得它有用
- 行动 - rosmaita - 设置 ^^ 的任务
- 我们应该使“TestCase”中的“patch”和“mock_object”方法使用“autospec=True”(但如果你现在这样做,你会得到 77 个单元测试失败)
- 行动 - ^^
- 需要重新审视 pylint 任务,因为它能够检测问题,但目前的状态下它用处不大
- 行动 - ^^
- 一些团队已经实施了带有阈值的 before-and-after 覆盖率测试(这样你就不会允许降低覆盖率的更改)
- 行动 - ^^
- 归根结底,这些静态分析任务不会增加完成当前的 zuul “check”所需的时间,所以值得一试
Interop WG 中场休息
这是来自互操作性工作组的提醒,以确保他们了解 Cinder 的最新情况。(我们在此期间没有进行任何主要的 REST API 更改,所以我们可能没问题)。最近的更改从互操作性测试中删除了 Block Storage API v2,这很好,因为 v2 API 在 Pike 中已被弃用。
结论
- 目前仍然有一个 Interop WG Cinder 项目联络员职位空缺!
- 行动 - rosmaita - 验证被删除的 v2 测试覆盖的功能是否仍然被当前的 v3 测试覆盖
查看类型注解
由 eharney 领导的讨论
Eric 讨论了使用类型注解,这是 Python 3 语言的一部分,以帮助改进代码,通过允许静态检查参数和返回类型。
他有一个补丁来引入一个 'mypy' tox 环境,它将执行 mypy 类型检查,以检查 cinder 代码:https://review.opendev.org/#/c/733620/
参考文献
- https://docs.pythonlang.cn/3/library/typing.html
- PEP 3107 -- 函数注解:https://pythonlang.cn/dev/peps/pep-3107/
出现的问题是,使用这些代码将不能直接回溯到仍然支持 Python 2.7 的稳定分支,以及我们关于不在驱动程序使用的部分中使用仅限 Python 3 的语言功能的策略。共识是应该使用 Python 3。一些回溯可能会更复杂,但这就是现状。
结论
- 类型检查将使我们能够改进 cinder 代码,我们应该利用它。
- 行动 - rosmaita - 修改 py2 到 3 的过渡指南:https://docs.openstack.org/cinder/latest/contributor/gerrit.html#transition-guidelines
Cinderclient CLI 可用性问题
讨论由 rosmaita 领导
许多 Block Storage API 请求返回一个 202(已接受)响应。这并没有真正告诉你你的请求是否成功,而且最终用户并不总是理解这一点。
我们可以做的一件事是增强 202 响应,以便为用户提供有关下一步该怎么做的提示。在 cinderclient 中,我们可以将 --poll 选项添加到更多命令中。
出现的问题是,也许我们不应该增强 cinderclient,而是应该将其放入 openstackclient。这导致了……
OpenStack Client 旁白
因为我们正在谈论对 cinderclient 进行工作,所以出现了一个问题:openstackclient 怎么样?由于 Jay 在 TC 中,并且 TC 正在考虑统一客户端问题,我们对此进行了一些讨论,以便他可以将我们的意见带回 TC。以下是一些要点;有关更多信息,请参阅 etherpad。
- 目前 openstackclient 和 cinderclient 之间存在功能差距。我们不能仅仅停止对 cinderclient 的工作,而是将新命令放入 openstackclient,因为用户仍然需要使用 cinderclient 来获取“差距”功能,这些功能在 openstackclient 中不存在。在停止对 cinderclient 的工作之前,openstackclient 必须与 cinderclient 具有功能奇偶校验。
- 人们希望立即访问新功能,而不是下一个周期或再下一个周期。虽然拥有统一的客户端会很好,但当面临选择在不具备所有功能的 CLI 的便利性和为了使用新功能而必须使用不同的 cinder 客户端的不便性时,新功能将胜出。
- osc、openstack sdk 和 shade 被宣传为“有偏见”的工具。虽然这可能对某些用户来说是合适的,但至少操作员希望完全访问 API 提供的所有内容。因此,在明确这些工具的设计理念之前,转向 openstackclient 没有意义。
结论
- 目前,停止使用 python-cinderclient 没有意义。
- 回到会话主题,看起来为其他资源实现 --poll 并不困难。
社区目标
由 Jay Bryant 领导的讨论。
到目前为止,Victoria 已经批准了一个目标:tosky 将所有 CI 作业移动到 native zuul v3 作业。从 cinder 的角度来看,这是好事,因为 tosky 已经将我们的大部分作业转换为 v3。
第二个可能的目标是将所有 CI/CD 作业移动到 Ubuntu 20.04(Focal):https://review.opendev.org/#/c/731213/
对于 W 周期,https://etherpad.opendev.org/p/YVR-v-series-goals 上的目标都是候选目标。一个早期热门是删除 rootwrap。有人在谈论 openstackcli,但这可能需要更多讨论(参见之前的会话)。
Ussuri 开发周期回顾
对此没有收到很多反馈。一个出现的问题是,虽然我们可能无法加快审查速度,但我们可以使审查更具可预测性。
(我们提前结束,参加虚拟欢乐时光,未录制。)
2020 年 6 月 5 日星期五:XP & TCB(跨项目和处理事务)
录像
- 第一章(与 Glance 团队的会议):https://www.youtube.com/watch?v=omFGbmE8SYQ
- 第二章:https://www.youtube.com/watch?v=AuFcGTG6P64
- 第三章:https://www.youtube.com/watch?v=eEfVWNCZmWw
Cinder/Glance 使用 Ceph 从卷创建镜像
由 abhishekk 领导的讨论
当 Glance 在创建镜像时不知道镜像的大小,并且使用 Ceph 后端时,会因为其保守的行为而导致 thrashing,它会发出非常小的调整大小请求,因为镜像正在写入。在上海峰会上,我们讨论了两种解决方案:(1)在请求中传递大小(由于 Cinder 已经知道卷需要多大;image API 变更)或(2)进行 glance_store 变更(发出更大的调整大小请求(例如 1GB)并在最后缩小)。在上海,Cinder 团队对方案 (2) 感到满意。Glance 团队没有时间在 Ussuri 中实现此方案,并希望确保我们仍然对该方案感到满意。我们是。
使 cinder 存储与 glance 兼容多种存储
由 abhishekk 领导的讨论
Glance 现在能够为用户提供不同的后端镜像存储。一种用例是让操作员提供不同的层级,这些层级以 store_id 和描述呈现给用户(例如,'bronze':'适合任何用途的低成本存储';操作员不需要向最终用户暴露后端技术,只需告知用户有不同的存储可用即可)。如果操作员正在使用 cinder glance_store 驱动程序,当前只能为该存储配置一个 volume_type 用于使用,即使 Cinder 中定义了多个由各种 volume_type 定义的存储层级。
看起来一种解决方法是继续使用单个 cinder glance_store,但赋予它在发出 volume-create 请求时传递不同 volume_type 的能力。volume_type 不会直接暴露给最终用户——相反,每个 volume_type 可以与 glance stores-info 响应中的 store_id 相关联,以便不会破坏存储抽象层。
glance cinder 存储的门禁作业
讨论由 whoami-rajat 领导
Rajat 说
目前我们支持 glance 中的 cinder 存储,但没有门禁作业来验证当 glance 收到请求时,镜像的创建/删除是否按预期工作。我一直在 glance_store 的 cinder 上进行门禁作业[1](最终通过了),但我认为在 glance 门禁上有一个作业来测试当 glance 收到请求时整个镜像创建流程会更有意义。
[1] https://review.opendev.org/#/c/329825/
结论
- cinder glance_store 的使用量似乎在增加;Cinder 和 Glance 团队都同意确保对其进行充分测试会很好。
Glance 镜像协同定位
jokke_ 主导讨论
在 Ussuri 中,Cinder 实现了一个方案来协助 Glance 进行镜像协同定位。这意味着如果一个卷是从镜像创建的,如果该卷后来被上传为镜像,Cinder 会传递原始镜像的 image_id,以便 Glance 可以确定原始镜像位于哪个存储中,并将新镜像的副本放在相同的位置。Glance 团队希望修改 Cinder 侧的实现,以便不要将 base_image_ref 作为 image-create 调用中的 header 传递给 glance,而是如果存在 base_image_ref,Cinder 将调用 glance Import API。这将使 Glance 能够重用经过更好测试且更易于维护的代码路径。
结论
- 该提议似乎是合理的。它不应该使 Cinder 侧的 image-create 耗时更长;Import API 返回 202(已接受)并异步执行其工作,因此它只是一个快速的 API 调用。不过,我们需要更仔细地查看。
刷新 connection_info
eharney 主导讨论(lyarwood 无法到场)
我们简要讨论了 Lee 在 ML 和评论中概述的提议
- http://lists.openstack.org/pipermail/openstack-discuss/2020-April/014348.html
- https://review.opendev.org/#/c/579004/
这似乎是合理的。Gorka 提到有一个邮件线程,他在其中更详细地讨论了这方面的一些内容。
结论
- lyarwood 回来后跟进将其放入规范
- 挖掘 Gorka 的邮件线程,以确保解决这些问题
DR 操作和中断的卷连接
sfernand 提出的相关主题
灾难恢复操作会在虚拟机中留下中断的卷连接。也许让 Nova 在故障转移/故障恢复后自动重新建立 iscsi 连接会很有用?
- 如果启用了多路径,也许可以这样做……但不会容易
- Fernando 有兴趣从事这项工作……Gorka 自愿与他讨论这个问题,并在适当的时候请 Lee 加入,因为他对这个问题也很熟悉
- 工作项目
- Cinder 驱动程序必须报告它们是异步还是同步,A/A(无需执行任何操作,因为多路径已经可以访问两个路径)或 A/P(我们需要刷新连接)复制
- Cinder 必须告知 Nova 哪些卷具有新的“源”,或者自动更新初始化的连接并告知 Nova 刷新特定实例
- OS-Brick 能够尽可能干净地从旧连接切换到新连接
动态前端 QoS
我们有能力在 Cinder 中指定前端 QoS,这些 QoS 在卷附加时由 Nova 应用。一直有要求提供一项功能,允许在卷附加时更改这些 QoS。当 Cinder 中的 QoS 规范发生更改时,或者当卷扩展并且使用 iops_per_gb QoS 规范时,这将很有用。
这将需要
- Nova 规范以修改 (nova) 外部事件 API:https://docs.openstack.org/api-ref/compute/?expanded=#create-external-events-os-server-external-events
- 编写 Nova 代码以从 Events API 请求中获取信息并传递到 libvirt
结论
- 大家普遍认为这是一个好主意,但没有在场的人表示有兴趣接手。
Victoria 规范审查
我们快速浏览了当前提出的规范:https://review.opendev.org/#/q/project:openstack/cinder-specs+status:open
请参阅 etherpad 以获取评论。
技术债务
Alembic!
我们需要在本周期完成它。Rosmaita 将从事这项工作,并根据需要招募人员。
Block Storage API v2 移除
它自 Pike 以来已被弃用。我们至少应该移除面向外部的内容。(内部,v3 API 使用与 v2 贡献的扩展相同的代码。)
其他事项
Ussuri PTG 中有一些未完成的项目仍然可行:https://etherpad.opendev.org/p/cinder-ussuri-ptg-actions
周期优先级和时间表
时间表
补丁:https://review.opendev.org/#/c/733730/
这个周期比较短——规范冻结在 R-15,就像在 ussuri 中一样,但它似乎提前大约 3 周发生。所以请务必在日历上标记日期。
我注意到了可能在重要截止日期前后发生的假期
- 我们将会在规范冻结的时候审查人员不足,所以本周期的冻结将在星期三进行(而不是通常的星期五)。请在处理规范修订时记住这一点。
- 我们还会在功能冻结前周末审查人员不足;有一个假期,但考虑到疫情情况(希望到时候正在缓解),人们可能会倾向于多休一天来延长周末。因此,最后一刻的审查可能无法获得。
为了避免在 Ussuri 功能冻结之前发生的大量驱动程序功能审查,时间表上有一个新的截止日期:Cinder 驱动程序功能声明。这将帮助我们更好地组织审查。有关详细信息,请参阅时间表上的描述,如果您有任何问题,请问我。
优先级
(此列表可能会修订,但应该在 6 月 19 日之前基本确定)
我们有一些在 Ussuri 中开始的未完成的项目,我们希望在 Victoria 中尽早完成(目标是 milestone-1,但它来得非常快)
- volume-local-cache
- nfs-volume-encryption
- os-brick 更改以支持飞行中的镜像加密/解密
有两个弃用需要解决
