Cinder调度之Filter介绍

这篇具有很好参考价值的文章主要介绍了Cinder调度之Filter介绍。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. 常用三个Filter的概述

AvailabilityZoneFilter: 按可用区过滤后端。

CapacityFilter: 基于卷后端的容量利用率的容量过滤器。

CapabilitiesFilter: 基于volume type中的extra specs(例如最常用的volume_backend_name)

除此三个常用的Filter外,还有DifferentBackendFilter,SameBackendFilter, DriverFilter, InstanceLocalityFilter, JsonFilter, RetryFilter等非常用Filter,如有需要,请自行了解。

AvailabilityZoneFilter很好理解,根据只选择给定的可用区内的后端,而一般不会单独设置可用区,所以基本上所有后端都能通过这个选择器,本文也不再详细讲述这个选择器。

2. CapacityFilter

简单来说就是容量选择器,在所有通过AvailabilityZoneFilter的后端中,根据容量来过滤出所有满足本次创建条件的后端。

注意这里是选择所有出满足本次创建的后端,千万不要和后续的Weigher作用搞混了,Weigher是从所有通过Filter里选出最优节点,可以是容量剩余最多的后端,可以是剩余容量百分比最多的后端等等。想了解weiger具体实现的,可以参考Weigher介绍

防坑指南1: 精简置备thin与超分比max_over_subscription_ratio

scheduler日志

2022-07-26 17:38:45.796 1 WARNING cinder.scheduler.filters.capacity_filter [req-ac4d7108-eebd-402e-a1c2-8bf7e247034e] Insufficient free space for thin provisioning. The ratio of provisioned capacity over total capacity 1.15 has exceeded the maximum over subscription ratio 1.00 on host cinder-volume-worker@hitachi_g30h_3_ssd#hitachi_g30h_3_ssd.
2022-07-26 17:38:45.803 1 INFO cinder.scheduler.base_filter [req-ac4d7108-eebd-402e-a1c2-8bf7e247034e] Filtering removed all hosts for the request with volume ID 'f8482e0c-e80a-46bd-91c7-984ac3a5e017'.Filter results: AvailabilityZoneFilter: (start: 219, end: 219), CapacityFilter:(start: 219, end: 215), CapabilitiesFilter: (start: 215, end: 0)

由上面日志信息可以看到hitachi_g30h_3_ssd已经不满足CapacityFilter而被过滤。
我们本次创建的容量是200G的磁盘,而我们查看这个后端的容量时发现该后端剩余容量高达400+T
capabilitiesfilter,openstack,openstack,云计算
产生这个问题的原因就是CapacityFilter不仅仅是单纯的根据后端剩余容量进行过滤,还有很多其余的规则,比如这里的provisioned ratio必须小于maximum over subscription ratio。

provisioned_ratio = (provisioned_capacity_gb + requested_size) / total

当创建一个磁盘时该后端provisioned_capacity_gb会增加,但由于存储可能是精简置备,所以allocated_capacity_gb存储实际分配的容量可能只分配一部分,甚至不分配。
所以当(provisioned_capacity_gb+本次请求的200G) / total 大于了我们设置的最大超分比max_over_subscription_ratio时,即使后端实际容量free_capacity_gb还有很多,这个后端也无法通过过滤,除非我们修改该后端的cinder配置将max_over_subscription_ratio调大,才可能继续在该后端继续创建,因为Filter需要provisioned_ratio小于max_over_subscription_ratio

provisioned_capacity_gb 已置备的容量
allocated_capacity_gb 实际已分配的容量
free_capacity_gb 实际剩余的容量
max_over_subscription_ratio 超分比,用于精简置备存储,取值为1-20,当设置为1.0时表示不超分,即最多能够置备和存储的实际容量大小相同的容量给用户创建

防坑指南2: 预留容量reserved_percentage

scheduler日志

2022-03-11 12:38:45.716 1 WARNING cinder.scheduler.filters.capacity_filter [req-cad3961a-38ab-40e8-963d-61066a4e415] Insufficient free space for volume creation on host cinder-volume-worker@YZR2_HX_AZ1_SSD1#Pool0 (requested / avail): 100/-895.0
2022-03-11 12:38:45.716 1 INFO cinder.scheduler.base_filter [req-cad3961a-38ab-40e8-963d-61066a4e415] Filtering removed all hosts for the request with volume ID '3752b19f-dd38-4625-a903-82c4f9ecc6c6'.Filter results: AvailabilityZoneFilter: (start: 33, end: 33), CapacityFilter:(start: 33, end: 32), CapabilitiesFilter: (start: 32, end: 0)

从上面日志信息可以看到YZR2_HX_AZ1_SSD1#Pool0这个后端不满足本次请求的100G,而被CapacityFilter过滤。
我们查看这个后端的容量时发现该后端剩余容量free_capacity_gb还有5863G
capabilitiesfilter,openstack,openstack,云计算
产生这个问题的原因是我们设置了存储预留容量reserved_percentage为5。
因为很多存储在容量到达一定瓶颈时会影响性能,所以往往我们会设置一个预留容量以保证存储的安全使用。
而在这个问题中存储的总容量是135165,配置了保留容量5%,那就是需要保留135165*5%=6758, 但是实际还剩5863 5863已经比保留容量6758少了895。
该后端是Thick厚置备,所以不存在超分的问题,理论上这少的895G也是无法创建的,只是刚好截图的时候,已经人为在存储侧手动创建了块设备,导致容量实际使用容量多了895G。

3. CapabilitiesFilter

创建云硬盘类型(volume-type)时可以指定每个volume provider自己的特性Capabilities,比如thin provision(精简置备), hypermetro(双活)等等。
volume type 可以根据需要定义若干个 Capabilities ,详细描述 volume的属性。volume type 的作用与 nova 的flavor类似。

()[root@busybox-openstack-5fbfcd556c-q8lcq /]# cinder extra-specs-list
+--------------------------------------+------+----------------------------------+
| ID                                   | Name | extra_specs                      |
+--------------------------------------+------+----------------------------------+
| d70437f4-fda6-4c43-9c59-6a2ffc11bab4 | hdd  | {u'volume_backend_name': u'hdd'} |
+--------------------------------------+------+----------------------------------+

例如上面这个叫做hdd的云硬盘类型,只有一个叫做“volume_backend_name”的特性,这是最重要的也是必须的特性,这个值对应我们在为cinder配置多后端时,给每个后端存储设置的唯一的volume_backend_name。
CapabilitiesFilter会在通过CapacityFilter筛选出所有满足容量的后端中,根据特性筛选出指定后端,例如这里的volume_backend_name,其作用是为存储节点的volume provider 命名。这样 CapabilitiesFilter 就可以通过 volume type 的volume_backend_name 筛选出指定的 volume provider

在2 CapacityFilter介绍中提到的两个防坑指南中CapabilitiesFilter的筛选结果end均为0就是因为已经云硬盘类型设置的volume_backend_name 已经被CapacityFilter过滤了。

()[root@busybox-openstack-5fbfcd556c-q8lcq /]# cinder extra-specs-list
+--------------------------------------+--------+--------------------------------------------+
| ID                                   | Name   | extra_specs                                |
+--------------------------------------+--------+--------------------------------------------+
| 7ea60657-661e-421e-8784-2bb78f0d93a5 | huawei | {u'capabilities:hypermetro': u'<is> true'} |
| d70437f4-fda6-4c43-9c59-6a2ffc11bab4 | hdd    | {u'volume_backend_name': u'hdd'}           |
+--------------------------------------+--------+--------------------------------------------+

再例如huawei这个云硬盘类型的capabilities:hypermetro=‘<is> true’,是标明这个云硬盘类型是要创建双活的后端存储。文章来源地址https://www.toymoban.com/news/detail-739092.html

到了这里,关于Cinder调度之Filter介绍的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • openstack 之 nova调度过程及源码分析

    目录 一.nova-scheduler基本介绍 1.1 基本配置 1.2 调度过程  二. nova-scheduler调度过程源码剖析 2.1 /nova/scheduler/filter_scheduler.py/FilterSchduler/_schedule(): 2.2 /nova/scheduler/filter_scheduler.py/FilterSchduler/_get_sorted_hosts(): 2.3 /nova/scheduler/host_manager.py/HostManager/get_filtered_hosts(): 2.4 /nova/filters.py/

    2024年02月01日
    浏览(69)
  • OpenStack DRS(动态资源调度)之架构设计篇

    随着时间推移,虚机的不断创建和销毁,数据中心的资源使用情况往往处于如上图所 示的不均衡的状态,各种资源得不到高效利用,而系统管理员和云计算提供商希望通过一些优化措施,如下图所示提高资源的利用效率,减少数据中心的运营成本。 ​DRS 从 nova/neutron/cinder 等

    2024年04月22日
    浏览(29)
  • OpenStack01-OpenStack介绍

    1、什么是云计算 云计算是通过虚拟化技术去实现的,它是一种按量付费的模式! 2、为什么要使用云计算 小公司是为了节省成本。不用购买物理机、不用租IDC机房、不用购买宽带和公网IP。 大公司是为了把闲置的资源进行出租,节省成本,甚至是获取利润(超卖技术 KSM)。

    2024年02月06日
    浏览(44)
  • 【云计算OpenStack-OpenStack Queens版本】基于OpenStack的云计算环境搭建

    OpenStack云计算环境的搭建是基于虚拟机的多节点Linux网络环境基础上搭建起来的,所以需要我们先搭建好集群环境。(基础环境搭建参考:基于虚拟机的多节点Linux网络环境搭建) 操作系统:CentOS7 controller节点IP:192.168.43.199 compute节点IP:192.168.43.74 neutron节点IP:192.168.43.180 说

    2024年02月04日
    浏览(47)
  • OpenStack介绍说明、OpenStack架构说明、OpenStack核心服务说明、OpenStack创建VM,服务间交互示例

    2006年亚马逊推出AWS,正式开启云计算的新纪元 2010年7月美国国家航空航天局(NASA)与Rackspace合作,共同宣布OpenStack开放源码计划,由此开启了属于OpenStack的时代 OpenStack从诞生之初对标AWS,一直在向AWS学习,同时开放接口去兼容各种AWS服务 OpenStack是什么? OpenStack是一种云操

    2024年02月06日
    浏览(41)
  • OpenStack七大组件介绍

    1.转自 【华为企业互动社区: Openstack七大组件介绍】 2. 可参考作为笔试题目答案。 3. 详细各组件如何理解、如何使用,后续我再补充。 OpenStack是一套laas解决方案 OpenStack是一个开源的云计算管理平台 以Apache许可证为授权 ——Horizon为OpenStack服务的Web控制面板,可以管理实例

    2024年02月08日
    浏览(38)
  • OpenStack入门与架构介绍

       2010年7月,Rackspace和NASA合作发布了OpenStack。OpenStack每几个月就会发布一个新的版本,并以首字母从A到Z的顺序命名。OpenStack峰会和中国OpenStack黑客松活动也随之诞生。 1.1虚拟化的发展历程 1959年,国际信息处理大会,克里斯托弗在《大型高速计算机中的时间共享》报告中

    2024年02月11日
    浏览(40)
  • Openstack云计算(六)Openstack环境对接ceph

    (1)客户端也要有cent用户:   (2)openstack要用ceph的节点(比如compute-node和storage-node)安装下载的软件包:   或则:每个节点安装 clients(要访问ceph集群的节点):   (3)部署节点上执行,为openstack节点安装ceph:   (4)客户端执行 1 (5)create pools,只需在一个ceph节点上

    2024年02月20日
    浏览(48)
  • 云计算|OpenStack|社区版OpenStack安装部署文档(二---OpenStack运行环境搭建)

    一个良好的运行环境对于任何一个部署工作来说都是必须的,俗话说 万事开头难,其实很多部署工作失败的原因在于初始环境没有正确的配置,因此,按照官网的部署文档并结合自己的实际情况,配置一个合理的OpenStack运行环境是十分有必要的。 OpenStack的运行环境配置文档

    2023年04月08日
    浏览(50)
  • 云计算|OpenStack|社区版OpenStack安装部署文档(五 --- 计算服务nova安装部署---Rocky版)

    nova服务是openstack最重要的一个组件,没有之一,该组件是云计算的计算核心,大体组件如下: OpenStack Docs: Compute service overview 挑些重点,nova-api,libvirt,nova-placement-api,nova-api-metadata,nova-compute 并且nova安装部署是分为controller节点和computer节点了,controller节点就一个,comput

    2024年02月02日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包