2.2. 块存储服务管理


以下流程解释了如何配置块存储服务以满足您的需要。所有这些流程都需要管理员特权。

2.2.1. 使用卷类型的组卷设置

OpenStack 允许您创建卷类型,允许您应用类型的关联设置。您可以在卷创建(])期间应用这些设置,甚至之后(xref:section-volume-retype[)。例如,您可以关联:

使用名为 Extra Specs 的键值对与卷类型关联设置。当您在卷创建过程中指定卷类型时,块存储调度程序会将这些键/值对应用为设置。您可以将多个键/值对关联到同一卷类型。

卷类型提供为不同的用户提供存储层的功能。通过将特定的性能、弹性和其他设置作为键/值对关联为卷类型,您可以将特定于层的设置映射到不同的卷类型。然后,您可以通过指定对应的卷类型,在创建卷时应用层设置。

注意

可用的 Extra Specs 因卷驱动程序而异。如需有效的 Extra Specs 列表,请参考您的卷驱动程序的文档。

2.2.1.1. 列出主机驱动程序的功能

可用的 Extra Specs 因后端驱动程序而异。如需有效 Extra Specs 列表,请参阅驱动程序的文档。

或者,您可以直接查询块存储主机,以确定其驱动程序支持哪些定义良好的标准 Extra Spec。首先,登录(通过命令行)到托管块存储服务的节点。然后:

# cinder service-list
Copy to Clipboard Toggle word wrap

此命令将返回一个包含每个块存储服务的主机的列表(cinder-backupcinder-schedulercinder-volume)。例如:

+------------------+---------------------------+------+---------
|      Binary      |            Host           | Zone |  Status ...
+------------------+---------------------------+------+---------
|  cinder-backup   |   localhost.localdomain   | nova | enabled ...
| cinder-scheduler |   localhost.localdomain   | nova | enabled ...
|  cinder-volume   | localhost.localdomain@lvm | nova | enabled ...
+------------------+---------------------------+------+---------
Copy to Clipboard Toggle word wrap

要显示块存储服务的驱动程序功能(以及确定支持的 Extra Specs),请运行:

# cinder get-capabilities VOLSVCHOST
Copy to Clipboard Toggle word wrap

其中 VOLSVCHOSTcinder-volume 主机的完整名称。例如:

# cinder get-capabilities localhost.localdomain@lvm
    +---------------------+-----------------------------------------+
    |     Volume stats    |                        Value            |
    +---------------------+-----------------------------------------+
    |     description     |                         None            |
    |     display_name    |                         None            |
    |    driver_version   |                        3.0.0            |
    |      namespace      | OS::Storage::Capabilities::localhost.loc...
    |      pool_name      |                         None            |
    |   storage_protocol  |                        iSCSI            |
    |     vendor_name     |                     Open Source         |
    |      visibility     |                         None            |
    | volume_backend_name |                         lvm             |
    +---------------------+-----------------------------------------+
    +--------------------+------------------------------------------+
    | Backend properties |                        Value             |
    +--------------------+------------------------------------------+
    |    compression     |      {u'type': u'boolean', u'description'...
    |        qos         |              {u'type': u'boolean', u'des ...
    |    replication     |      {u'type': u'boolean', u'description'...
    | thin_provisioning  | {u'type': u'boolean', u'description': u'S...
    +--------------------+------------------------------------------+
Copy to Clipboard Toggle word wrap

Backend 属性 列显示您可以设置的 Extra Spec Keys 列表,而 Value 列提供了有关有效对应值的信息。

2.2.1.2. 创建和配置卷类型

  1. 在控制面板中以 admin 用户身份,选择 Admin > Volumes > Volume Types
  2. 单击 Create Volume Type
  3. Name 字段中输入卷类型名称。
  4. 单击 Create Volume Type。新类型会出现在 卷类型 表中。
  5. 选择卷类型的 View Extra Specs 操作。
  6. 单击 Create,并指定 KeyValue。键/值对必须有效;否则,在卷创建过程中指定卷类型将导致错误。
  7. Create。关联的设置(键/值对)现在会出现在 Extra Specs 表中。

默认情况下,所有 OpenStack 租户都可以访问所有卷类型。如果您需要创建具有受限访问权限的卷类型,则需要通过 CLI 完成此操作。具体说明请查看 第 2.2.1.5 节 “创建并配置私有卷类型”

注意

您还可以将 QOS Spec 与卷类型关联。详情请查看 第 2.2.4.2 节 “将 QOS Spec 与卷类型关联”

2.2.1.3. 编辑卷类型

  1. 在控制面板中以 admin 用户身份,选择 Admin > Volumes > Volume Types
  2. 卷类型 表中,选择卷类型的 View Extra Specs 操作。
  3. 在这个页面的 Extra Specs 表中,您可以:

    • 向卷类型添加新设置。为此,请单击 Create,并指定您要与卷类型关联的新设置的键/值对。
    • 编辑与卷类型关联的现有设置。为此,请选择 设置的 Edit 操作。
    • 删除与卷类型关联的现有设置。要做到这一点,请选中额外的 specs 复选框,然后点击 Delete Extra Specs in this and the next dialog screen。

2.2.1.4. 删除卷类型

要删除卷类型,请从卷类型表中选中其对应的复选框,然后点 Delete Volume Types

2.2.1.5. 创建并配置私有卷类型

默认情况下,所有卷类型都对所有租户可见。您可以在卷类型创建过程中覆盖它,并将其设置为 私有。为此,您需要将类型的 Is_Public 标志设置为 False

私有卷类型可用于限制对某些卷设置的访问。通常,这些设置应该只可供特定租户使用;示例包括要测试的新后端或巨型性能配置。

要创建私有卷类型,请运行:

# cinder --os-volume-api-version 2 type-create --is-public false VTYPE
Copy to Clipboard Toggle word wrap

+ 将 VTYPE 替换为私有卷类型的名称。

默认情况下,私有卷类型只能供其创建者访问。但是,管理员用户可使用以下命令查找并查看私有卷类型:

# cinder --os-volume-api-version 2 type-list --all
Copy to Clipboard Toggle word wrap

此命令将同时列出公共和私有卷类型,并包括每个卷类型的名称和 ID。您需要卷类型的 ID 来提供它的访问权限。

在租户级别授予私有卷类型的访问权限。要授予对私有卷类型的租户访问权限,请运行:

# cinder --os-volume-api-version 2 type-access-add --volume-type VTYPEID --project-id TENANTID
Copy to Clipboard Toggle word wrap

其中:

  • VTYPEID 是私有卷类型的 ID。
  • TENANTID 是您要授予 VTYPEID 访问权限的项目/租户的 ID。

要查看哪些租户有权访问私有卷类型,请运行:

# cinder --os-volume-api-version 2 type-access-list --volume-type VTYPE
Copy to Clipboard Toggle word wrap

要从私有卷类型的访问列表中删除租户,请运行:

# cinder --os-volume-api-version 2 type-access-remove --volume-type VTYPE --project-id TENANTID
Copy to Clipboard Toggle word wrap
注意

默认情况下,只有具有管理特权的用户才能创建、查看或配置私有卷类型的访问权限。

2.2.2. 为块存储服务创建和配置内部租户

有些块存储功能(例如,Image-Volume 缓存)需要配置 内部租户。块存储服务使用此租户来管理不必向普通用户公开的块存储项目。此类项目的示例是缓存的镜像,用于频繁迁移的卷克隆或临时副本。

若要配置内部租户,首先要创建一个通用租户和用户,两者均为 cinder-internal。要做到这一点,登录到 Controller 节点并运行:

# keystone tenant-create --name cinder-internal --enabled true --description "Block Storage Internal Tenant"
    +-------------+----------------------------------+
    |   Property  |              Value               |
    +-------------+----------------------------------+
    | description |  Block Storage Internal Tenant   |
    |   enabled   |               True               |
    |      id     | cb91e1fe446a45628bb2b139d7dccaef |
    |     name    |         cinder-internal          |
    +-------------+----------------------------------+
# keystone user-create --name cinder-internal
    +----------+----------------------------------+
    | Property |              Value               |
    +----------+----------------------------------+
    |  email   |                                  |
    | enabled  |               True               |
    |    id    | 84e9672c64f041d6bfa7a930f558d946 |
    |   name   |         cinder-internal          |
    | username |         cinder-internal          |
    +----------+----------------------------------+
Copy to Clipboard Toggle word wrap

请注意,创建租户和用户将显示其对应的 ID。配置块存储服务,以通过 ID 将租户和用户用作内部租户。要做到这一点,在每个块存储节点上运行以下命令:

# openstack-config --set /etc/cinder/cinder.conf DEFAULT cinder_internal_tenant_project_id TENANTID
# openstack-config --set /etc/cinder/cinder.conf DEFAULT cinder_internal_tenant_user_id USERID
Copy to Clipboard Toggle word wrap

TENANTIDUSERID 替换为通过 keystone 创建的租户和用户对应的 ID。例如,使用上面提供的 ID:

# openstack-config --set /etc/cinder/cinder.conf DEFAULT cinder_internal_tenant_project_id cb91e1fe446a45628bb2b139d7dccaef
# openstack-config --set /etc/cinder/cinder.conf DEFAULT cinder_internal_tenant_user_id 84e9672c64f041d6bfa7a930f558d946
Copy to Clipboard Toggle word wrap

2.2.3. 配置并启用 Image-Volume Cache

块存储服务具有可选的 Image-Volume 缓存,可在从镜像创建卷时使用。此缓存旨在提高从频繁使用的镜像创建卷的速度。有关如何从镜像创建卷的详情,请参考 第 2.3.1 节 “创建卷”

启用后,Image-Volume 缓存会在第一次创建卷时存储镜像的副本。此存储镜像在本地缓存到块存储后端,以帮助在下次使用镜像创建卷时提高性能。Image-Volume 缓存的限制可以设置为大小(以 GB 为单位)、镜像数量或两者。

Image-Volume 缓存由多个后端支持。如果您使用第三方后端,请参阅其文档来获取有关 Image-Volume 缓存支持的信息。

注意

Image-Volume 缓存要求为块存储服务 配置内部租户。具体说明请查看 第 2.2.2 节 “为块存储服务创建和配置内部租户”

要在块存储节点上启用并配置 Image-Volume 缓存,请运行以下命令:

# openstack-config --set /etc/cinder/cinder.conf BACKEND image_volume_cache_enabled True
Copy to Clipboard Toggle word wrap

BACKEND 替换为目标后端的名称(特别是 volume_backend_name 值)。

默认情况下,Image-Volume 缓存大小仅受后端限制。配置最大大小(以 GB 为单位,以 GB 为单位):

# openstack-config --set /etc/cinder/cinder.conf BACKEND image_volume_cache_max_size_gb MAXSIZE
Copy to Clipboard Toggle word wrap

或者,您也可以设置镜像的最大数量(MAXNUMBER)。要做到这一点:

# openstack-config --set /etc/cinder/cinder.conf BACKEND image_volume_cache_max_count MAXNUMBER
Copy to Clipboard Toggle word wrap

块存储服务数据库使用时间戳来跟踪每个缓存的镜像最近用于创建镜像的时间。如果设置了 MAXSIZEMAXNUMBER,则块存储服务将根据需要删除缓存的镜像,以便使新镜像成为新的镜像。当满足 Image-Volume 缓存限制时,会首先删除带有最旧时间戳的镜像。

配置 Image-Volume 缓存后,重启块存储服务:

# openstack-service restart cinder
Copy to Clipboard Toggle word wrap

2.2.4. 使用服务质量规格

您可以将多个性能设置映射到单个服务质量规格(QOS Specs)。这样,您可以为不同的用户类型提供性能层。

性能设置作为键/值对映射到 QOS Specs,类似于卷设置与卷类型关联的方式。但是,QOS Spec 与以下事项中的卷类型不同:

  • QOS Specs 用于应用性能设置,其中包括将读/写操作限制到磁盘。可用的和支持的性能设置因存储驱动程序而异。

    要确定后端支持哪些 QOS Spec,请查阅后端设备卷驱动程序的文档。

  • 卷类型直接应用于卷,而 QOS Specs 不是。相反,QOS Spec 与卷类型关联。在卷创建过程中,指定卷类型也会应用映射到卷类型关联的 QOS Specs 的性能设置。

2.2.4.1. 创建并配置 QOS Spec

作为管理员,您可以通过 QOS Specs 表创建和配置 QOS Spec。您可以将多个键/值对关联到同一 QOS Spec。

  1. 在控制面板中以 admin 用户身份,选择 Admin > Volumes > Volume Types
  2. QOS Specs 表中,点 Create QOS Spec
  3. 输入 QOS Spec 的名称。
  4. Consumer 字段中,指定应该强制执行 QOS 策略的位置:

    Expand
    表 2.1. 消费者类型
    类型描述

    back-end

    QOS 策略将应用到块存储后端。

    front-end

    QOS 策略将应用到计算。

    两者

    QOS 策略将应用于块存储和计算。

  5. Create。新的 QOS Spec 现在应该出现在 QOS Specs 表中。
  6. QOS Specs 表中,选择新 spec 的 Manage Specs 操作。
  7. 单击 Create,并指定 KeyValue。键/值对必须有效;否则,指定与这个 QOS Spec 关联的卷类型将失败。
  8. Create。关联的设置(键/值对)现在会出现在 Key-Value Pairs 表中。

2.2.4.2. 将 QOS Spec 与卷类型关联

作为管理员,您可以使用卷类型表将 QOS Spec 与现有卷类型相关联。

  1. 在仪表板中以管理员身份,选择 Admin > Volumes > Volume Types
  2. 卷类型 表中,选择类型的 Manage QOS Spec Association 操作。
  3. 要关联的 QOS Spec 列表中选择 QOS Spec。
  4. 单击 关联。所选 QOS Spec 现在会出现在编辑的卷类型的关联 QOS Spec 列中。

2.2.4.3. 将 QOS Spec 与卷类型解除关联

  1. 在仪表板中以管理员身份,选择 Admin > Volumes > Volume Types
  2. 卷类型 表中,选择类型的 Manage QOS Spec Association 操作。
  3. 从要关联的 QOS Spec 列表中选择 None
  4. 单击 关联。所选 QOS Spec 不再在 编辑的卷类型的关联 QOS Spec 列中。

2.2.5. 使用静态密钥加密卷

卷加密有助于提供基本数据保护,以防卷后端被泄露或盘盘。加密卷的内容只能读取使用特定密钥;计算和块存储服务必须配置为使用同一密钥,以便实例使用加密卷。您还可以创建使用加密的特定卷类型,并使用此卷类型创建的所有卷都会加密。

本节论述了如何配置 OpenStack 部署,以使用单个密钥加密卷。

重要

目前,卷加密只在由块设备支持的卷上被支持。仍然不支持加密网络连接的卷(如 RBD)或基于文件的卷(如 NFS)。

2.2.5.1. 配置静态密钥

实施基本卷加密的第一步是 设置静态密钥。此密钥必须是十六进制字符串,它将供块存储服务(即 openstack-cinder-volume)和所有计算服务(openstack-nova-compute)使用。要将这两个服务配置为使用此密钥,请将两个服务的 [keymgr] 部分中的 key 设置为 fixed_key 的值。

  1. 在命令行中,以 root 用户身份登录托管 openstack-cinder-volume 的节点。
  2. 设置静态密钥:

    # openstack-config --set /etc/cinder/cinder.conf keymgr fixed_key HEX_KEY
    Copy to Clipboard Toggle word wrap

    HEX_KEY 替换为 16 位数字十六进制键(例如,04d6b077d60e323711b37813b3a68a71)。

    您可以使用 openssl 命令生成密钥,如下所示:

    # openssl rand -hex 16
    04d6b077d60e323711b37813b3a68a71
    Copy to Clipboard Toggle word wrap
    注意

    这个值应该是安全的。

  3. 重启块存储卷服务:

    # openstack-service restart cinder-volume
    Copy to Clipboard Toggle word wrap
  4. 登录到托管 openstack-nova-compute 的节点,并设置相同的静态密钥:

    # openstack-config --set /etc/nova/nova.conf keymgr fixed_key HEX_KEY
    Copy to Clipboard Toggle word wrap
    注意

    如果您有多个 Compute 节点(多个托管 openstack-nova-compute的节点),则需要在每个节点的 /etc/nova/nova.conf 中设置相同的静态密钥。

  5. 重启 Compute 服务:

    # openstack-service restart nova-compute
    Copy to Clipboard Toggle word wrap
    注意

    同样,如果您在多个 Compute 节点上设置了静态密钥,则需要在每个节点上重启 openstack-nova-compute 服务。

此时,Compute 和 Block Storage 卷服务现在可以使用相同的静态密钥加密/解密卷。也就是说,新实例能够使用通过静态密钥加密的卷(HEX_KEY)。

2.2.5.2. 配置卷类型加密

要从 第 2.2.5.1 节 “配置静态密钥” 创建使用静态密钥加密的卷,您需要 加密的卷类型。将卷类型配置为 encrypted 涉及设置应使用的供应商类、密码和密钥大小。为此,请运行:

# cinder encryption-type-create --cipher aes-xts-plain64 --key_size BITSIZE --control_location front-end VOLTYPE nova.volume.encryptors.luks.LuksEncryptor
Copy to Clipboard Toggle word wrap

其中:

  • BITSIZE 是密钥大小(例如,512 位密钥为 512 位)。
  • VOLTYPE 是您要加密的卷类型的名称。

此命令设置 nova.volume.encryptors.luks.LuksEncryptor 供应商类和 aes-xts-plain64 密码。在这个发行版本中,这是卷加密唯一支持的类/密码配置。

获得加密的卷类型后,您可以调用它来创建加密的卷。有关创建卷类型的详情请参考 ]。具体来说,从 Create Volume 窗口中的 Type 下拉列表中选择加密卷类型(请参阅 xref:section-volumes_basic[)。

您可以在 Project > Compute > Volumes 下的加密卷中点 Yes 来查看 加密 元数据。

2.2.6. 配置卷如何分配到多个后端

如果块存储服务配置为使用多个后端,您可以使用配置的卷类型来指定应创建卷的位置。详情请查看 第 2.3.2 节 “为卷创建指定后端”

如果您没有在卷创建过程中指定后端,则块存储服务将自动选择后端。块存储将第一个定义的后端设置为默认值;在缺少空间之前,则会使用此后端。此时,块存储会将第二个定义的后端设置为默认值,以此类推。

如果这不适用于您的需要,您可以使用过滤器调度程序来控制块存储应如何选择后端。此调度程序可以使用不同的过滤器来分辨合适的后端,例如:

AvailabilityZoneFilter
过滤掉所有不符合所请求卷的可用区要求的后端
CapacityFilter
仅选择具有足够空间的后端来容纳卷
CapabilitiesFilter
仅选择可以支持卷中的任何指定设置的后端

配置过滤器调度程序:

  1. 启用 FilterScheduler

    # openstack-config --set /etc/cinder/cinder.conf DEFAULT scheduler_driver cinder.scheduler.filter_scheduler.FilterScheduler
    Copy to Clipboard Toggle word wrap
  2. 设置哪些过滤器应该处于活跃状态:

    # openstack-config --set /etc/cinder/cinder.conf DEFAULT scheduler_default_filters AvailabilityZoneFilter,CapacityFilter,CapabilitiesFilter
    Copy to Clipboard Toggle word wrap
  3. 配置调度程序应如何选择合适的后端。如果要调度程序:

    • 要总是选择带有最多可用空间的后端,请运行:

      # openstack-config --set /etc/cinder/cinder.conf DEFAULT scheduler_default_weighers AllocatedCapacityWeigher
      # openstack-config --set /etc/cinder/cinder.conf DEFAULT allocated_capacity_weight_multiplier -1.0
      Copy to Clipboard Toggle word wrap
    • 要在所有合适的后端中随机选择,请运行:

      # openstack-config --set /etc/cinder/cinder.conf DEFAULT scheduler_default_weighers ChanceWeigher
      Copy to Clipboard Toggle word wrap
  4. 重启块存储调度程序以应用您的设置:

    # openstack-service restart openstack-cinder-scheduler
    Copy to Clipboard Toggle word wrap

2.2.7. 备份管理

以下小节讨论如何自定义块存储服务的卷备份设置。

2.2.7.1. 查看和修改租户的备份配额

与大多数租户存储配额(卷数、卷存储、快照等)不同,但无法通过控制面板修改备份配额。

备份配额只能通过命令行界面修改;即,通过 cinder quota-update 命令进行修改。

要查看特定租户的存储配额(TENANTNAME),请运行:

# cinder quota-show TENANTNAME
Copy to Clipboard Toggle word wrap

要更新可在特定租户中创建的最大备份数(MAXNUM),请运行:

# cinder quota-update --backups MAXNUM TENANTNAME
Copy to Clipboard Toggle word wrap

要更新特定租户中所有备份的最大大小(MAXGB),请运行:

# cinder quota-update --backup-gigabytes MAXGB TENANTNAME
Copy to Clipboard Toggle word wrap

要查看特定租户的存储配额使用情况,请运行:

# cinder quota-usage TENANTNAME
Copy to Clipboard Toggle word wrap

2.2.7.2. 通过仪表板启用卷备份管理

现在,您可以通过仪表板创建、查看、删除和恢复卷备份。要执行任何这些功能,请转至 Project > Compute > Volumes > Volume Backups 选项卡。

但是,默认不启用 Volume Backups 选项卡。要启用它,请相应地配置仪表板:

  1. 打开 /etc/openstack-dashboard/local_settings
  2. 搜索以下设置:

    OPENSTACK_CINDER_FEATURES = {
        'enable_backup': False,
    }
    Copy to Clipboard Toggle word wrap

    将此设置更改为:

    OPENSTACK_CINDER_FEATURES = {
        'enable_backup': True,
    }
    Copy to Clipboard Toggle word wrap
  3. 重启 httpd 服务来重启仪表板:

    # systemctl restart httpd.service
    Copy to Clipboard Toggle word wrap

2.2.7.3. 将 NFS 共享设置为备份存储库

默认情况下,块存储服务使用对象存储服务作为备份的存储库。您可以将块存储服务配置为使用现有的 NFS 共享作为备份存储库。要做到这一点:

  1. 以具有管理特权的用户身份登录托管备份服务的节点(openstack-cinder-backup)。
  2. 将块存储服务配置为使用 NFS 备份驱动程序(cinder.backup.drivers.nfs):

    # openstack-config --set /etc/cinder/cinder.conf DEFAULT backup_driver cinder.backup.drivers.nfs
    Copy to Clipboard Toggle word wrap
  3. 设置您要用作备份存储库的 NFS 共享详情:

    # openstack-config --set /etc/cinder/cinder.conf DEFAULT backup_share NFSHOST:PATH
    Copy to Clipboard Toggle word wrap

    其中:

    • NFSHOST 是 NFS 服务器的 IP 地址或主机名。
    • PATHNFSHOST 上 NFS 共享的绝对路径。
  4. 如果要为 NFS 共享设置任何可选挂载设置,请运行:

    # openstack-config --set /etc/cinder/cinder.conf DEFAULT backup_mount_options NFSMOUNTOPTS
    Copy to Clipboard Toggle word wrap

    其中 NFSMOUNTOPTS 是 NFS 挂载选项的逗号分隔列表(例如 rw,sync)。有关支持的挂载选项的详情,请查看 nfsmountman page。

  5. 重启块存储备份服务以应用您的更改:

    # systemctl restart openstack-cinder-backup.service
    Copy to Clipboard Toggle word wrap
2.2.7.3.1. 设置不同的备份文件大小

备份服务将备份文件大小限制为最大 备份文件大小。如果您要备份超过这个大小的卷,则生成的备份将分成多个块。默认的备份文件大小为 1.8GB。

要设置不同的备份文件大小,请运行:

# openstack-config --set /etc/cinder/cinder.conf DEFAULT backup_file_size SIZE
Copy to Clipboard Toggle word wrap

SIZE 替换为您想要的文件大小,以字节为单位。重启块存储备份服务以应用您的更改:

# systemctl restart openstack-cinder-backup.service
Copy to Clipboard Toggle word wrap
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat