配置多存储后端¶
配置多个存储后端时,您可以创建多个后端存储解决方案来服务于相同的 OpenStack Compute 配置,并为每个后端存储或后端存储池启动一个 cinder-volume。
在多存储后端配置中,每个后端都有一个名称 (volume_backend_name)。 多个后端可以具有相同的名称。在这种情况下,调度器会正确决定将卷创建在哪个后端。
后端名称声明为卷类型的额外规范 (例如,volume_backend_name=LVM)。 当创建卷时,调度器会根据用户指定的卷类型选择合适的后端来处理请求。
启用多存储后端¶
要启用多存储后端,您必须在 cinder.conf 文件中设置 enabled_backends 标志。 此标志定义了不同后端配置组的名称(用逗号分隔):一个名称与后端的一个配置组相关联(例如,[lvmdriver-1])。
注意
配置组名称与 volume_backend_name 无关。
注意
在现有的 cinder 服务上设置 enabled_backends 标志并重新启动块存储服务后,原始 host 服务将被新的主机服务替换。 新服务将以类似于 host@backend 的名称出现。 使用
$ cinder-manage volume update_host --currenthost CURRENTHOST --newhost CURRENTHOST@BACKEND
将当前的块设备转换为新的主机名称。
配置组的选项必须在组中定义(或者使用默认选项)。 所有标准的块存储配置选项 (volume_group、volume_driver 等) 可以在配置组中使用。 [DEFAULT] 配置组中的配置值不使用。
这些示例显示了三个后端
enabled_backends=lvmdriver-1,lvmdriver-2,lvmdriver-3
[lvmdriver-1]
volume_group=cinder-volumes-1
volume_driver=cinder.volume.drivers.lvm.LVMVolumeDriver
volume_backend_name=LVM
[lvmdriver-2]
volume_group=cinder-volumes-2
volume_driver=cinder.volume.drivers.lvm.LVMVolumeDriver
volume_backend_name=LVM
[lvmdriver-3]
volume_group=cinder-volumes-3
volume_driver=cinder.volume.drivers.lvm.LVMVolumeDriver
volume_backend_name=LVM_b
在此配置中,lvmdriver-1 和 lvmdriver-2 具有相同的 volume_backend_name。 如果卷创建请求 LVM 后端名称,则调度器使用容量过滤器调度器来选择最合适的驱动程序,即 lvmdriver-1 或 lvmdriver-2。 容量过滤器调度器默认启用。 下一节提供更多信息。 此外,此示例还呈现了一个 lvmdriver-3 后端。
注意
对于支持多路径的 Fiber Channel 驱动程序,配置组需要 use_multipath_for_image_xfer=true 选项。 在下面的示例中,您可以查看 HPE 3PAR 和 EMC Fiber Channel 驱动程序的详细信息。
[3par]
use_multipath_for_image_xfer = true
volume_driver = cinder.volume.drivers.hpe.hpe_3par_fc.HPE3PARFCDriver
volume_backend_name = 3parfc
[emc]
use_multipath_for_image_xfer = true
volume_driver = cinder.volume.drivers.emc.emc_smis_fc.EMCSMISFCDriver
volume_backend_name = emcfc
配置块存储调度器多后端¶
必须启用 filter_scheduler 选项才能使用多存储后端。 过滤器调度器
过滤可用的后端。 默认情况下,启用
AvailabilityZoneFilter、CapacityFilter和CapabilitiesFilter。对先前过滤的后端进行加权。 默认情况下,启用 CapacityWeigher 选项。 启用此选项时,过滤器调度器会将最高权重分配给具有最多可用容量的后端。
调度器使用过滤器和权重来选择最佳后端来处理请求。 调度器使用卷类型来显式地在特定后端上创建卷。 有关过滤器和权重的更多信息,请参阅 配置和使用调度器的驱动程序过滤器和权重。
卷类型¶
在使用它之前,必须将卷类型声明到块存储。 这可以通过以下命令完成
$ openstack --os-username admin --os-tenant-name admin volume type create lvm
然后,必须创建一个额外的规范来将卷类型链接到后端名称。 运行此命令
$ openstack --os-username admin --os-tenant-name admin volume type set lvm \
--property volume_backend_name=LVM_iSCSI
此示例创建了一个 lvm 卷类型,其额外的规范为 volume_backend_name=LVM_iSCSI。
创建另一个卷类型
$ openstack --os-username admin --os-tenant-name admin volume type create lvm_gold
$ openstack --os-username admin --os-tenant-name admin volume type set lvm_gold \
--property volume_backend_name=LVM_iSCSI_b
第二个卷类型名为 lvm_gold,后端名称为 LVM_iSCSI_b。
注意
要列出额外的规范,请使用此命令
$ openstack --os-username admin --os-tenant-name admin volume type list --long
注意
如果卷类型指向在块存储配置中不存在的 volume_backend_name,则 filter_scheduler 会返回错误,表明它找不到具有合适的后端的有效主机。
用法¶
创建卷时,必须指定卷类型。 卷类型的额外规范用于确定应使用哪个后端。
$ openstack volume create --size 1 --type lvm test_multi_backend
考虑到先前描述的 cinder.conf,调度器将在 lvmdriver-1 或 lvmdriver-2 上创建此卷。
$ openstack volume create --size 1 --type lvm_gold test_multi_backend
第二个卷将在 lvmdriver-3 上创建。