Capabilities and Extra-Specs¶
云管理员创建共享类型,并使用额外规格来
影响调度器将新共享放置的决策,以及
指示共享文件系统服务或其存储驱动程序/们对用户的共享执行某些特殊操作。
作为管理员,您可以选择一个描述性的名称或为您的共享类型提供良好的描述,以向最终用户传达共享类型的功能。最终用户可以查看标准租户可见额外规格,这些规格可以让他们寻求所需行为并相应地自动化他们的应用程序。然而,设计上,共享类型的所有其他额外规格都不会暴露给非特权用户。
额外规格的类型¶
共享文件系统服务的后端存储驱动程序提供广泛的功能。这些功能的差异允许云管理员向其最终用户提供存储服务目录。共享类型额外规格与这些功能相关联。
某些后端功能非常特定于存储系统,并且对共享文件系统服务或最终用户不透明。这些功能通过“作用域”额外规格来调用。使用作用域额外规格是一种在共享创建或共享操作期间向相关的存储驱动程序提供程序化指令的方式。您可以通过驱动程序文档了解不透明的功能,并在共享类型中将这些功能配置为作用域额外规格(例如:hpe3par:nfs_options)。共享文件系统服务的调度器在寻找合适的后端来配置共享时,会忽略作用域额外规格。
在 manila 中,有一些后端功能对调度器很重要。为了我们的理解,我们称这些为非作用域或不透明的功能。所有非作用域功能都可以直接用作共享类型的额外规格。它们被调度器的功能过滤器(以及部署者定义的任何自定义过滤器)考虑。
您可以使用以下命令从调度器获取非作用域功能列表
$ manila pool-list --detail
非作用域功能有三种类型
与特定后端存储系统驱动程序相关的能力:例如,huawei_smartcache。任何共享文件系统服务 API 都不依赖于不透明的后端特定功能。
对最终用户不可见的通用能力:manila 社区已经标准化了一些跨平台能力,例如thin_provisioning、dedupe、compression、qos、ipv6_support 和 ipv4_support。这些选项的值对任何共享文件系统服务 API 都没有意义;但是,它们可以对 manila 服务本身表示一些含义。例如,当后端支持 thin_provisioning 时,调度器服务执行过度配置,如果后端未报告 ipv6_support 为 True,则 share-manager 服务在调用存储驱动程序更新访问规则之前会删除 IPv6 访问规则。
对最终用户可见的通用能力:某些功能会影响通过共享文件系统服务 API 暴露的功能。例如,并非所有后端都支持快照,即使支持,它们可能也不支持所有快照操作。例如,将快照克隆到新的共享,原地将共享恢复到快照等。
对这些功能的支持决定了用户是否能够使用 manila 执行某些控制平面操作。例如,后端驱动程序可能会报告 snapshot_support=True,允许最终用户创建共享快照,但是,驱动程序可以报告 create_share_from_snapshot_support=False。这种报告允许云管理员创建支持快照但不支持从快照创建共享的共享类型。当用户使用这种共享类型时,他们将无法将快照克隆到新的共享。可见的租户能力帮助 manila 验证请求并在无法满足请求时快速失败。它们还有助于设定用户对某些失败的期望。例如,如果在共享类型上将 snapshot_support 设置为 False,由于用户可以看到此设置,因此他们不会调用创建快照 API,即使他们这样做,他们也会更好地理解 HTTP 400(和错误消息)。
重要提示
所有额外规格都是可选的,除了一个:driver_handles_share_servers。
调度器对非作用域额外规格的处理¶
共享文件系统调度器中的 CapabilitiesFilter 使用以下匹配运算符
无运算符 这默认执行 python ==。此外,它还将匹配布尔值。
<=, >=, ==, !=
这执行浮点数转换,然后按预期使用 python 运算符。
<in>
这会选择具有部分匹配字符串在功能中的主机,或者如果它匹配列表中的任何值,则选择主机。例如,如果使用“<in> sse4”,它将匹配报告能力为“sse4_1”或“sse4_2”的主机。
<or>
这会选择具有指定项目之一的主机。如果字符串中的第一个单词是 <or>,则可以连接另一个 <or> 和值对。示例是“<or> 3”、“<or> 3 <or> 5”和“<or> 1 <or> 3 <or> 7”。这仅适用于字符串值。
<is>
这会选择匹配布尔值能力的主机。一个额外的规格值将是“<is> True”。
=
这执行浮点数转换并选择具有等于或大于指定资源的的主机。出于历史原因,此运算符的行为方式是这样。
s==, s!=, s>=, s>, s<=, s<
“s”表示它是字符串比较。这些选择满足能力和规格中字符串比较的主机。例如,如果“capabilities:replication_type s== dr”,则报告 replication_type 为“dr”的主机将被选择。如果使用“share_backend_name s!= cephfs”,则可以选择任何未命名为“cephfs”的主机。
对于需要对调度器可见的特定于供应商的非作用域功能,建议驱动程序使用供应商前缀后跟下划线。这不是严格要求,但可以提供与作用域额外规格一致的外观,并且将是区分供应商功能与通用功能的明确指标。
通用能力¶
通用能力适用于多个后端。与所有其他后端报告的功能一样,这些功能可以用作用于创建共享的共享类型中的 extra_specs。