Spec Lite: 添加新的共享服务器限制¶
- 问题:
管理员目前无法指定在给定共享服务器上可以创建多少个共享,也无法指定共享服务器可以达到的最大容量。当前的机制允许系统在一个共享服务器上分配大量的共享,并且允许共享服务器达到巨大的容量,这使得管理变得有些困难。
- 解决方案:
我们应该添加一个限制,用于一个共享服务器可以容纳的共享数量。管理员可以为每个后端配置此限制,并对共享服务器的大小拥有更多的控制权,这有助于他们管理云资源。 建议的解决方案引入了两个新的后端属性,名为
max_shares_per_share_server和max_share_server_size,管理员可以通过这些属性来确定可以在给定共享服务器上创建的共享数量。 配置max_shares_per_share_server属性意味着,达到共享数量限制的共享服务器将从共享管理器中的兼容共享服务器列表中过滤掉。 对于max_share_server_size后端能力,当给定的共享服务器达到指定的千兆字节数时,共享管理器将从兼容共享服务器列表中过滤掉该共享服务器,并提供一个新的共享服务器。 在这种情况下,最终的千兆字节数不仅会考虑共享,还会考虑共享副本和快照。 如果在所选后端中未设置其中一个后端能力,共享管理器将理解该后端中的共享服务器没有共享或千兆字节限制。 共享管理器provide_share_server_for_share和provide_share_server_for_share_group方法将被修改,以检查 Manila 配置文件中相应后端会话中是否配置了限制。 这些新限制可以实现为可变的,这意味着管理员无需重启任何服务即可应用更改。 如果至少指定了其中一个属性,共享管理器将出于性能考虑使用数据库层查询现有共享服务器资源的数量,并最终,如果需要,请求创建新的共享服务器来放置接收到的请求。 当达到限制时,不会引发任何异常,用户或管理员不会受到此影响。 共享管理器本身将通过提供新的共享服务器来处理这种情况。- 影响:
此实现仅在至少设置了其中一个后端能力时才会略微影响性能,但预计不会显著增加共享创建时间,尤其与另一种方法相比,即要求驱动程序计算给定共享服务器中的资源量。 管理员必须意识到,配置其中一个限制时,可能需要更多的网络分配。
- 替代方案:
作为替代方案,我们可以使用共享类型附加规格来为共享服务器共享和千兆字节中的最大共享服务器大小提供驱动程序特定的限制。 这种方法可以在项目级别工作,但我们应该考虑它可能需要共享管理器比今天转发更多信息给驱动程序,以避免驱动程序调用存储,这会导致性能下降。
- 时间线:
包含在 Victoria 版本中。
- 链接:
https://etherpad.opendev.org/p/victoria-ptg-manila https://review.opendev.org/#/c/510542/ https://blueprints.launchpad.net/manila/+spec/new-share-server-limits
- 负责人:
carloss