OpenStack Cinder之过滤器affinity/anti-affinity介绍

Openstack Cinder的调度服务用于选择一个合适的cinder-volume节点来处理用户有关云盘生命周期的请求。本文介绍调度器affinity/anti-affinity的原理和使用方法。

一 简介

过滤器affinity/anti-affinity描述了云盘之间的关系,affinity表示新创建的云盘跟指定的云盘在同一个后端(back-end/pool), anti-affinity表示新创建的云盘跟指定的云盘在不同一个后端(back-ends/pools).为了实现该功能,Cinder新增了2个过滤器SameBackendFilte/DifferentBackendFilter.

二 功能验证

Mitaka版本默认不配置调度器SameBackendFilte/DifferentBackendFilter,需要另外配置。
1. 验证cinder后端为zte,fujitsu 2种磁阵后端,openstack版本为Mitaka。
2. 配置调度器SameBackendFilte/DifferentBackendFilter
为了使能该调度器,需要在cinder.conf中增加scheduler_default_weighers为SameBackendFilte/DifferentBackendFilter,并重启openstack-cinder-scheduler服务。

[DEFAULT]

scheduler_default_filters = AvailabilityZoneFilter,CapacityFilter,CapabilitiesFilter,SameBackendFilter,DifferentBackendFilter

3. 命令

# Volume A 后端是 'backend 1', 创建跟volume A后端相同的Volume B,命令如下
cinder create --hint same_host=VolA-UUID SIZE
# Volume A 后端是 'backend 1', 创建跟volume A后端不同的Volume C,命令如下
cinder create --hint different_host=VolA-UUID SIZE
# Volume A 后端是 'backend 1', 创建跟volume A和volumeC都不同的Volume D,命令如下
cinder create --hint different_host=VolA-UUID --hint different_host=VolC-UUID SIZE
cinder create --hint different_host="[VolA-UUID, VolC-UUID]" SIZE

4. SameBackendFilte过滤器测试
(1)先创建云盘test1,host为cinder@FUJITSU_ETERNUS-1#FUJITSU

$ cinder create 1 --name test1
+--------------------------------+--------------------------------------+
|            Property            |                Value                 |
+--------------------------------+--------------------------------------+
|          attachments           |                  []                  |
|       availability_zone        |                 nova                 |
|            bootable            |                false                 |
|      consistencygroup_id       |                 None                 |
|           created_at           |      2019-05-08T07:05:52.000000      |
|          description           |                 None                 |
|           encrypted            |                False                 |
|               id               | b9f37226-ef9e-417a-8e6a-2661b6a35a0f |
|            metadata            |                  {}                  |
|        migration_status        |                 None                 |
|          multiattach           |                False                 |
|              name              |               test1                |
|     os-vol-host-attr:host      |   cinder@FUJITSU_ETERNUS-1#FUJITSU   |
| os-vol-mig-status-attr:migstat |                 None                 |
| os-vol-mig-status-attr:name_id |                 None                 |
|  os-vol-tenant-attr:tenant_id  |   b56b9ffcd531451f967b914658ce4058   
<think>我们使用openstack-config命令来设置Cinder配置文件中的LVM后端参数。用户要求设置以下参数:1.volume_group=cinder-volumes2.iscsi_protocol=iscsi3.iscsi_helper=lioadm注意:这些参数都是在[lvm]配置节下设置的。步骤:1.确保已经创建了名为`cinder-volumes`的LVM卷组(如果尚未创建,需要先创建)。2.使用openstack-config命令设置参数。3.重启CinderVolume服务使配置生效。具体命令如下:</think>### 配置 Cinder LVM 后端参数 要使用 `openstack-config` 命令配置 Cinder LVM 后端,请执行以下命令序列: ```bash # 设置卷组名称 openstack-config --set /etc/cinder/cinder.conf lvm volume_group cinder-volumes # 设置 iSCSI 协议类型 openstack-config --set /etc/cinder/cinder.conf lvm iscsi_protocol iscsi # 设置 iSCSI 管理工具 openstack-config --set /etc/cinder/cinder.conf lvm iscsi_helper lioadm # 启用 LVM 后端(若未启用) openstack-config --set /etc/cinder/cinder.conf DEFAULT enabled_backends lvm # 重启服务使配置生效 systemctl restart openstack-cinder-volume target systemctl enable openstack-cinder-volume target ``` #### 参数说明: 1. **`volume_group = cinder-volumes`** - 指定 LVM 使用的卷组名称,必须与系统中已创建的卷组一致 - 创建卷组示例: ```bash pvcreate /dev/sdb # 创建物理卷 vgcreate cinder-volumes /dev/sdb # 创建卷组[^5] ``` 2. **`iscsi_protocol = iscsi`** - 定义 iSCSI 协议类型(默认为 iscsi) - 支持值:`iscsi`(标准协议)或 `iser`(RDMA 加速) 3. **`iscsi_helper = lioadm`** - 指定 iSCSI 目标管理工具 - 常用选项:`lioadm`(LIO 内核目标)或 `tgtadm`(TGT 用户空间目标) #### 验证配置: ```bash # 检查配置节 grep -A 5 '[lvm]' /etc/cinder/cinder.conf # 预期输出 [lvm] volume_group = cinder-volumes iscsi_protocol = iscsi iscsi_helper = lioadm ``` #### 创建 Cinder 用户和服务端点(若未配置): ```bash # 创建 cinder 用户 openstack user create --domain default --password CINDER_PASS cinder # 添加 admin 角色 openstack role add --project service --user cinder admin # 创建服务端点 openstack service create --name cinderv2 --description "OpenStack Block Storage" volumev2 openstack service create --name cinderv3 --description "OpenStack Block Storage" volumev3 ``` #### 注意事项: 1. **权限要求**:所有命令需以 root 权限执行 2. **服务依赖**:必须同时重启 `target` 服务(iSCSI 目标服务) 3. **空间验证**:执行 `vgs cinder-volumes` 确认卷组可用空间 4. **防火墙**:确保 iSCSI 端口(TCP 3260)在节点间可访问 [^1]: [OpenStack 官方存储指南](https://docs.openstack.org/cinder/latest/configuration/block-storage/backends.html) [^2]: [Cinder LVM 配置参考](https://docs.openstack.org/cinder/latest/configuration/block-storage/configuring-lvm-driver.html)
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值