配置持久性存储
配置和管理 OpenStack 块存储、对象存储和共享文件系统服务
摘要
对红帽文档提供反馈 复制链接链接已复制到粘贴板!
我们感谢您对文档提供反馈信息。与我们分享您的成功秘诀。
使用 Create Issue 表单在 OpenShift (RHOSO)或更早版本的 Red Hat OpenStack Platform (RHOSP)上提供有关 Red Hat OpenStack Services 文档的反馈。当您为 RHOSO 或 RHOSP 文档创建问题时,这个问题将在 RHOSO Jira 项目中记录,您可以在其中跟踪您的反馈的进度。
要完成 Create Issue 表单,请确保您已登录到 JIRA。如果您没有红帽 JIRA 帐户,您可以在 https://issues.redhat.com 创建一个帐户。
- 点击以下链接打开 Create Issue 页面: Create Issue
- 完成 Summary 和 Description 字段。在 Description 字段中,包含文档 URL、章节号以及问题的详细描述。不要修改表单中的任何其他字段。
- 点 Create。
第 1 章 Red Hat OpenStack Platform (RHOSP)中的持久性存储简介 复制链接链接已复制到粘贴板!
在 Red Hat OpenStack Platform 中,存储由三个主要服务提供:
-
块存储(
openstack-cinder
) -
Object Storage (
openstack-swift
) -
共享文件系统存储(
openstack-manila
)
这些服务提供不同类型的持久性存储,每种存储在不同的用例中都有自己的一组优点。本指南讨论了用于一般企业存储要求的适用性。
您可以使用 RHOSP 仪表板或命令行客户端管理云存储。您可以使用任何方法执行大多数流程。但是,您只能在命令行中完成一些更高级的步骤。本指南尽可能为仪表板提供流程。
有关 Red Hat OpenStack Platform 文档的完整套件,请参阅 Red Hat OpenStack Platform 文档。
本指南记录了使用 crudini
应用一些自定义服务设置。因此,您需要首先安装 crudini
软件包:
dnf install crudini -y
# dnf install crudini -y
RHOSP 识别两种类型的存储: 临时和持久 。临时存储是仅与特定 Compute 实例关联的存储。该实例终止后,是其临时存储。这种类型的存储可用于基本运行时要求,如存储实例的操作系统。
持久性存储 被设计为独立于任何正在运行的实例来存活(持久性)。此存储用于需要被不同实例或特定实例生命周期之外的任何数据。RHOSP 使用以下类型的持久性存储:
- 卷
OpenStack 块存储服务(openstack-cinder)允许用户通过 卷 访问块存储设备。用户可以将卷附加到实例,以便使用通用持久性存储来增强其临时存储。卷可以在实例上分离和重新附加,只能通过它们所连接的实例访问。
您还可以将实例配置为不使用临时存储。您可以配置块存储服务来将镜像写入卷,而不使用临时存储。然后,您可以使用卷作为实例的可引导根卷。
卷还通过备份和快照提供固有冗余和灾难恢复。另外,您还可以加密卷以提高安全性。
- 容器
OpenStack Object Storage 服务(openstack-swift)提供完全分布式的存储解决方案,用于存储任何类型的静态数据或二进制对象,如介质文件、大型数据集和磁盘镜像。对象存储服务通过使用容器来组织这些对象。
虽然卷的内容只能通过实例访问,但容器内的对象可以通过 Object Storage REST API 访问。因此,对象存储服务可以通过接近云中的每个服务用作存储库。
- 共享
- 共享文件系统服务(openstack-manila)提供了轻松调配远程、可共享的文件系统 或共享的方法。共享允许云中的项目开放共享存储,并同时被多个实例使用。
每个存储类型都设计为满足特定的存储要求。容器是为广泛访问而设计的,例如,所有存储类型之间吞吐量、访问和容错能力的功能。对于服务,容器使用量更多。
另一方面,卷主要用于实例消耗。它们不享受与容器相同的访问和性能级别,但它们的功能集更大,并且具有比容器更多的原生安全功能。共享与卷类似,但可由多个实例使用。
以下章节会在特定存储标准的情况下详细讨论每种存储类型的架构和功能集。
1.1. 可扩展性和后端存储 复制链接链接已复制到粘贴板!
通常,集群存储解决方案提供更大的后端可扩展性。例如,当您将 Red Hat Ceph 用作 Block Storage (cinder)后端时,您可以通过添加更多 Ceph Object Storage Daemon (OSD)节点来扩展存储容量和冗余。块存储、Object Storage (swift)和共享文件系统服务(manila)服务支持 Red Hat Ceph Storage 作为后端。
块存储服务可以将多个存储解决方案用作离散后端。在后端级别,您可以通过添加更多后端并重启服务来扩展容量。块存储服务也具有大量受支持的后端解决方案列表,其中的一些解决方案具有额外的可扩展性功能。
默认情况下,对象存储服务使用配置的存储节点上的文件系统,并可使用尽可能多的空间。对象存储服务支持 XFS 和 ext4 文件系统,可以同时扩展为消耗尽可能多的底层块存储。您还可以通过向存储节点添加更多存储设备来扩展容量。
共享文件系统服务从由一个或多个第三方后端存储系统管理的指定存储池中置备文件共享。您可以通过增加服务可用的大小或多个第三方后端存储系统来扩展此共享存储。
1.2. 存储可访问性和管理 复制链接链接已复制到粘贴板!
卷只能通过实例使用,一次只能附加到一个实例内并挂载。用户可以创建卷快照,它们可用于克隆或将卷恢复到以前的状态。如需更多信息,请参阅 第 1.4 节 “存储冗余和灾难恢复”。作为项目管理员,您可以使用块存储服务 创建卷类型,以聚合卷设置,如大小和后端。您可以将卷类型与 服务质量(QoS) 规格相关联,为您的云用户提供不同级别的性能。您的用户可以指定创建新卷时所需的卷类型。例如,使用高性能 QoS 规格的卷可能会为用户提供更多的 IOPS,或者您的用户可以为使用较低性能 QoS 规格的卷分配更轻的工作负载来节省资源。
与卷一样,通过实例使用共享。但是,可以将共享直接挂载到实例中,不需要通过控制面板或 CLI 连接。共享也可以同时由多个实例挂载。共享文件系统服务还支持共享快照和克隆 ; 您还可以创建共享类型来聚合设置(与卷类型类似)。
容器中的对象可以通过 API 访问,并可供云内的实例和服务访问。这使得他们选择作为服务的对象存储库;例如,镜像服务(openstack-glance)可以将其镜像存储在由对象存储服务管理的容器中。
1.3. 存储安全性 复制链接链接已复制到粘贴板!
块存储服务(cinder)通过卷加密提供基本数据安全性。因此,您可以将卷类型配置为通过静态密钥加密;然后,密钥用于加密从配置卷类型创建的所有卷。更多信息请参阅 第 2.7 节 “Block Storage 服务(cinder)卷加密”。
对象和容器安全性在服务和节点级别上配置。Object Storage 服务(swift)没有为容器和对象提供原生加密。相反,对象存储服务优先考虑云中的可用性,因此这只依赖于云网络安全性来保护对象数据。
共享文件系统服务(manila)可以通过访问限制(根据实例 IP、用户或组还是 TLS 证书)保护共享。此外,一些共享文件系统服务部署可以具有单独的共享服务器来管理共享网络和共享之间的关系;一些共享服务器支持甚至需要其他网络安全性。例如,CIFS 共享服务器需要部署 LDAP、Active Directory 或 Kerberos 身份验证服务。
有关如何保护镜像服务(glance)的更多信息,如镜像签名和验证和元数据定义(metadef) API 限制,请参阅创建和管理 镜像 中的镜像服务(glance)。
1.4. 存储冗余和灾难恢复 复制链接链接已复制到粘贴板!
Block Storage 服务(cinder)具有卷备份和恢复,为用户存储提供基本的灾难恢复。使用备份来保护卷内容。该服务还支持快照。除了克隆外,您还可以使用快照将卷恢复到以前的状态。
在多后端环境中,您还可以在后端之间迁移卷。如果您需要使后端离线进行维护,这将非常有用。备份通常存储在与源卷分开的存储后端中,以帮助保护数据。快照无法实现,因为快照依赖于其源卷。
块存储服务还支持创建一致性组,来同时将卷分组在一起。这在多个卷间提供了更高的数据一致性。更多信息请参阅 第 2.9 节 “块存储服务(cinder)一致性组”。
Object Storage 服务(swift)不提供内置备份功能。您必须在文件系统或节点级别执行所有备份。对象存储服务具有更强大的冗余和容错功能,甚至是对象存储服务的最基本的部署多次复制对象。您可以使用 dm-multipath
等故障转移功能来增强冗余。
共享文件系统服务不提供共享的内置备份功能,但它允许您创建快照以进行克隆和恢复。
第 2 章 配置块存储服务(cinder) 复制链接链接已复制到粘贴板!
块存储服务(cinder)管理所有卷的管理、安全、调度和整体管理。卷用作计算实例的主要形式。
有关卷备份的更多信息,请参阅 备份块存储卷 指南。
您必须在所有使用块存储服务和光纤通道(FC)后端的部署中的所有 Controller 节点和 Compute 节点上安装主机总线适配器(HBA)。
块存储使用 Block Storage REST API 配置。
确保您在使用 Block Storage REST API 版本 3,因为 Block Storage 不再支持版本 2。默认的 overcloud 部署为您设置环境变量 OS_VOLUME_API_VERSION=3.0
来执行此操作。
块存储 REST API 通过使用微版本来添加改进来保持向后兼容性。cinder
CLI 使用 3.0 的 REST API 版本,除非您指定了特定的微版本。例如,若要为 cinder
命令指定 3.17 微版本,可添加 --os-volume-api-version 3.17
参数。
openstack
CLI 只能使用 Block Storage REST API 版本 3.0,因为它不支持这些微版本。
2.1. 块存储服务后端 复制链接链接已复制到粘贴板!
Red Hat OpenStack Platform (RHOSP)使用 director 部署。这样做有助于确保每个服务的正确配置,包括块存储服务(cinder)和其后端。director 还有几个集成的后端配置。
默认情况下,块存储服务使用 LVM 后端作为卷的存储库。虽然此后端适合测试环境,但在生产环境中不支持 LVM。RHOSP 支持 Red Hat Ceph Storage 和 NFS 作为块存储服务后端。有关如何使用 RHOSP 部署 Red Hat Ceph Storage 的说明,请参阅 与 director 一起部署 Red Hat Ceph Storage 和 OpenStack Platform。有关块存储的 NFS 及其配置的更多信息,请参阅配置 NFS 存储。
您还可以将块存储服务配置为使用受支持的第三方存储设备。director 包括部署不同后端解决方案所需的组件。
有关支持的块存储服务后端设备和驱动程序的完整列表,请参阅 Red Hat OpenStack Platform 中的组件、插件和驱动程序支持 中的 Cinder。所有第三方后端设备和驱动程序都有额外的部署指南。查看适当的部署指南,以确定后端设备或驱动程序是否需要插件。
如果将 Block Storage 配置为使用多个后端,则必须为每个后端创建一个卷类型。如果您在创建卷时没有指定后端,则块存储调度程序将使用过滤器来选择合适的后端。如需更多信息,请参阅配置默认块存储调度程序过滤器。
其他资源
2.1.1. 配置 NFS 存储 复制链接链接已复制到粘贴板!
您可以将 overcloud 配置为使用共享 NFS 存储。
2.1.1.1. 支持的配置和限制 复制链接链接已复制到粘贴板!
- 支持的 NFS 存储
与认证的存储后端和驱动程序相比,通用 NFS 后端提供的 NFS 存储功能有限。例如,通用 NFS 后端不支持卷加密和卷多附加等功能。有关支持的驱动程序的详情,请查看 红帽生态系统目录。
对于 Block Storage (cinder)和 Compute (nova)服务,您必须使用 NFS 版本 4.0 或更高版本。Red Hat OpenStack Platform (RHOSP)不支持早期版本的 NFS。
- 不支持的 NFS 配置
RHOSP 不支持 NetApp 功能 NAS 安全,因为它会影响到正常卷操作。RHOSP director 默认禁用该功能。因此,不要编辑以下 heat 参数,它们控制 NFS 后端还是 NetApp NFS 块存储后端是否支持 NAS 安全:
-
CinderNetappNasSecureFileOperations
-
CinderNetappNasSecureFilePermissions
-
CinderNasSecureFileOperations
-
CinderNasSecureFilePermissions
-
- NFS 存储的限制
使用通用 NFS 共享或通用 NFS 驱动程序时,您无法执行以下操作:
- 当后端是一个通用 NFS 共享时,重新定义或重建具有交换内存的实例。
-
当实例处于
SHUTOFF
状态时,删除卷快照。 - 使用通用 NFS 驱动程序时扩展附加的卷。
2.1.1.2. 配置 NFS 存储 复制链接链接已复制到粘贴板!
您可以将 overcloud 配置为使用共享 NFS 存储。
流程
-
创建一个环境文件来配置您的 NFS 存储,如
nfs_storage.yaml
。 在新环境文件中添加以下参数来配置 NFS 存储:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意不要配置
CinderNfsMountOptions
和GlanceNfsOptions
参数,因为它们的默认值启用适合大多数 Red Hat OpenStack Platform (RHOSP)环境的 NFS 挂载选项。您可以在environments/storage/glance-nfs.yaml
文件中看到GlanceNfsOptions
参数的值。如果您在配置多个服务以共享同一 NFS 服务器时遇到问题,请联系红帽支持团队。使用其他环境文件将 NFS 存储环境文件添加到堆栈中,并部署 overcloud:
openstack overcloud deploy --templates \ -e [your environment files] \ -e /home/stack/templates/nfs_storage.yaml
(undercloud)$ openstack overcloud deploy --templates \ -e [your environment files] \ -e /home/stack/templates/nfs_storage.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.2. 块存储卷服务的高可用性 复制链接链接已复制到粘贴板!
块存储卷服务(cinder-volume
)以主动-被动模式部署到 Controller 节点上。在这种情况下,Pacemaker 维护此服务的高可用性(HA)。
在分布式 Compute 节点(DCN)部署中,块存储卷服务以主动-被动模式部署到中央站点。在这种情况下,Pacemaker 维护此服务的 HA。仅在需要存储的边缘站点上部署块存储卷服务。因为 Pacemaker 无法部署到边缘站点,所以块存储卷服务必须部署为主动模式,以确保此服务的 HA。dcn-storage.yaml
heat 模板执行此配置。在这种情况下,块存储卷服务被部署为块存储集群,通常在三个独立的主机上运行。
您需要管理 Block Storage 集群,这是对具有相同配置的块存储服务进行分组,从而控制同一 Ceph 集群的同一池。如需更多信息 ,请参阅在边缘站点管理块存储集群。
Red Hat Ceph Storage 后端的默认集群名称是 tripleo@tripleo_ceph
。
2.2.1. 在边缘站点管理块存储集群 复制链接链接已复制到粘贴板!
当您在需要存储的边缘站点以主动模式部署块存储卷服务(cinder-volume
)时,它被部署为块存储集群。此集群是所有具有相同配置的块存储卷服务分组,因此控制同一 Ceph 集群的同一池。Red Hat Ceph Storage 后端的默认集群名称是 tripleo@tripleo_ceph
。
您可以使用以下命令来管理此集群及其服务。
您可以维护集群。如需更多信息,请参阅 启动块存储集群维护。
这些集群管理命令需要 Block Storage (cinder) REST API 微版本 3.17 或更高版本。
用户目标 | 命令 |
要监控集群,请使用以下列:名称、二进制、状态和状态。
如果某些服务停机,请使用 |
|
使用以下列来确定集群的所有块存储服务的状态和详细信息: binary、host、zone、status、state、cluster、disabled reason 和 cluster name。
|
|
查看特定集群服务的详细信息。 |
|
启用集群服务。 |
|
要禁用集群服务,请执行以下操作: |
|
列出可在块存储集群中管理的卷。如需更多信息,请参阅管理 和取消管理卷及其快照。 |
|
列出可在块存储集群中管理的快照。 |
|
将非受管卷添加到块存储集群中。 |
|
要迁移块存储服务的卷,请执行以下操作:如需更多信息 ,请参阅使用 CLI 在后端之间迁移卷。 |
|
2.2.2. 启动块存储集群维护 复制链接链接已复制到粘贴板!
当一个集群中分组了多个块存储卷服务(cinder-volume
)时,必须运行其中至少一个服务来清理没有运行的服务。在这种情况下,您可以使用 work-cleanup
命令执行此集群维护。
所有块存储卷服务在启动时执行自己的维护。
先决条件
- 您必须是启动块存储集群维护的项目管理员。
- Block Storage (cinder) REST API microversion 3.24 或更高版本。
流程
提供 overcloud 凭证文件:
source ~/<credentials_file>
$ source ~/<credentials_file>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
将
<credentials_file
> 替换为您的凭证文件的名称,如overcloudrc
。
-
将
运行以下命令,以验证块存储集群的所有服务是否正在运行:
cinder --os-volume-api-version 3.17 cluster-list --detailed
$ cinder --os-volume-api-version 3.17 cluster-list --detailed
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果有任何服务没有运行,请运行以下命令来识别这些特定的服务:
cinder --os-volume-api-version 3.17 service-list
$ cinder --os-volume-api-version 3.17 service-list
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令以触发集群维护:
cinder --os-volume-api-version 3.24 work-cleanup --cluster <cluster_name>
$ cinder --os-volume-api-version 3.24 work-cleanup --cluster <cluster_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
将
<cluster_name
> 替换为集群的名称。例如,tripleo@tripleo_ceph。
-
将
2.3. 使用卷类型组卷配置 复制链接链接已复制到粘贴板!
通过 Red Hat OpenStack Platform,您可以创建卷类型,以便您可以将相关的设置应用到每种卷类型。您可以在创建卷前和之后分配所需的卷类型。如需更多信息,请参阅创建块存储卷和 块存储卷 重新清理。以下列表显示了您可以应用到卷类型的一些相关设置:
- 卷的加密。如需更多信息,请参阅 块存储服务(cinder)卷加密。
- 卷使用的后端。如需更多信息,请参阅多个后端上的卷分配 和在后端间移动卷。
- 卷的相关服务质量(QoS)性能限制或 QoS 规格列表。如需更多信息,请参阅 块存储服务(cinder)服务质量规格。
使用名为 Extra Specs 的键值对与卷类型关联设置。当您在卷创建过程中指定卷类型时,块存储调度程序会将这些键值对作为设置应用。您可以将多个键值对与同一卷类型关联。
您可以创建卷类型来为云用户提供不同级别的性能:
- 为每个卷类型添加特定的性能、弹性和其他 Extra Specs 作为键值对。
- 将不同的 QoS 性能限制或 QoS 规格列表与您的卷类型关联。
当您的用户创建卷时,他们可以选择适当的卷类型来满足其性能要求。
如果您创建卷且没有指定卷类型,则块存储将使用默认卷类型。您可以使用 Block Storage (cinder)配置文件定义适用于所有项目(租户)的一般默认卷类型。但是,如果您的部署使用特定于项目的卷类型,请确保为各个项目定义默认卷类型。在这种情况下,块存储使用特定于项目的卷类型,而不是常规的默认卷类型。如需更多信息,请参阅 定义特定于项目的默认卷类型。
2.3.1. 列出后端驱动程序属性 复制链接链接已复制到粘贴板!
与卷类型关联的属性使用键值对,称为 Extra Specs。每个卷类型后端驱动程序都支持自己的一组 Extra Specs。有关驱动程序支持的 Extra Specs 的更多信息,请参阅后端驱动程序文档。
或者,您可以直接查询块存储主机,以列出其后端驱动程序的定义明确的标准 Extra Spec。
先决条件
- 您必须是项目管理员,才能直接查询块存储主机。
流程
提供 overcloud 凭证文件:
source ~/<credentials_file>
$ source ~/<credentials_file>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
将
<credentials_file
> 替换为您的凭证文件的名称,如overcloudrc
。
-
将
确定 cinder-volume 的主机:
cinder service-list
$ cinder service-list
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 此命令将返回一个包含每个块存储服务的主机的列表(cinder-backup、cinder-scheduler 和 cinder-volume)。例如:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 显示驱动程序功能以确定块存储服务支持的 Extra Specs:
cinder get-capabilities <volsvchost>
$ cinder get-capabilities <volsvchost>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
<volsvchost>
替换为 cinder-volume 的主机。例如:Copy to Clipboard Copied! Toggle word wrap Toggle overflow Backend 属性 列显示您可以设置的 Extra Spec Keys 列表,而 Value 列提供了有关有效对应值的信息。
2.3.2. 创建并配置卷类型 复制链接链接已复制到粘贴板!
您可以创建卷类型,以便您可以将关联的设置应用到每种卷类型。
如果块存储服务(cinder)配置为使用多个后端,则必须为每个后端创建一个卷类型。
例如,您可以创建卷类型来为云用户提供不同级别的性能:
- 为每个卷类型添加特定的性能、弹性和其他 Extra Specs 作为键值对。
- 将不同的 QoS 性能限制或 QoS 规格列表与您的卷类型关联。如需更多信息,请参阅 块存储服务(cinder)服务质量规格。
当您的用户创建卷时,他们可以选择适当的卷类型来满足其性能要求。
先决条件
- 您必须是一个项目管理员,才能创建和配置卷类型。
- 访问 Red Hat OpenStack Platform (RHOSP) Dashboard (horizon)。如需更多信息,请参阅使用 OpenStack 控制面板管理云资源。
流程
- 以 admin 用户身份登录控制面板。
- 选择 Admin > Volumes > Volume Types。
- 单击 Create Volume Type。
- 在 Name 字段中输入卷类型名称。
- 单击 Create Volume Type。新类型会出现在 卷类型 表中。
- 选择卷类型的 View Extra Specs 操作。
-
点 Create 并指定 Key 和 Value。键值对必须有效;否则,在卷创建过程中指定卷类型将导致错误。例如,要为此卷类型指定后端,请添加
volume_backend_name
Key,并将 Value 设置为所需后端的名称。 - 点 Create。关联的设置(键值对)现在会出现在 Extra Specs 表中。
默认情况下,所有 OpenStack 项目都可以访问所有卷类型。如果您需要创建具有受限访问权限的卷类型,则需要通过 CLI 完成此操作。具体步骤请参阅创建和配置私有卷类型。
后续步骤
2.3.3. 编辑卷类型 复制链接链接已复制到粘贴板!
在仪表板中编辑卷类型,以修改卷类型的 Extra Specs 配置。您还可以删除卷类型。
先决条件
- 您必须是项目管理员才能编辑或删除卷类型。
- 访问 Red Hat OpenStack Platform (RHOSP) Dashboard (horizon)。如需更多信息,请参阅使用 OpenStack 控制面板管理云资源。
流程
- 以 admin 用户身份登录控制面板。
- 选择 Admin > Volumes > Volume Types。
- 在 卷类型 表中,选择卷类型的 View Extra Specs 操作。
在这个页面的 Extra Specs 表中,您可以:
- 向卷类型添加新设置。要做到这一点,点 Create 并指定您要与卷类型关联的新设置的键/值对。
- 选择 设置的 Edit 操作,以编辑与卷类型关联的现有设置。
- 选择额外 specs 复选框并点 Delete Extra Specs 以及下一个对话框屏幕,删除与卷类型关联的现有设置。
要删除卷类型,请从卷类型表中选中其对应的复选框,然后点 Delete Volume Types 。
2.3.4. 创建并配置私有卷类型 复制链接链接已复制到粘贴板!
默认情况下,所有卷类型都可用于所有项目(租户)。您可以通过标记 私有 来创建受限卷类型。为此,请将卷类型的 is-public
标志设为 false,因为此标志的默认值为 true。
私有卷类型可用于限制对具有特定属性的卷的访问。通常,这些设置应该只可供特定项目使用。例如,要测试的新后端或巨型性能配置。
先决条件
- 您必须是创建、查看或配置私有卷类型访问权限的项目管理员。
流程
提供 overcloud 凭证文件:
source ~/<credentials_file>
$ source ~/<credentials_file>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
将
<credentials_file
> 替换为您的凭证文件的名称,如overcloudrc
。
-
将
创建新的 cinder 卷类型,并将
is-public
标志设置为 false :cinder type-create --is-public false <type_name>
$ cinder type-create --is-public false <type_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
将
<type_name
> 替换为您要调用这个新私有卷类型的名称。
-
将
默认情况下,私有卷类型只能供其创建者访问。但是,管理员用户可使用以下命令查找并查看私有卷类型:
cinder type-list
$ cinder type-list
此命令列出公共和私有卷类型的名称和 ID。您需要卷类型的 ID 来提供对其的访问。
在项目级别授予私有卷类型的访问权限。因此,您需要知道所需项目的 ID。如果您不知道这个租户 ID,但您知道此项目的名称,请运行:
如果您不确定此用户名,openstack user list
命令会列出所有配置的用户的名称和 ID。
openstack user show <user_name>
$ openstack user show <user_name>
-
将 <
;user_name
> 替换为所需项目的用户名称,以显示用户详情的列表,包括与此用户关联的项目的tenantId
。
要授予项目对私有卷类型的访问权限,请运行:
cinder type-access-add --volume-type <type_id> --project-id <tenant_id>
$ cinder type-access-add --volume-type <type_id> --project-id <tenant_id>
-
将
<type_id>
替换为所需的私有卷类型的 ID。 -
将
<tenant_id
> 替换为所需的租户 ID。
要查看哪些项目有权访问私有卷类型,请运行:
cinder type-access-list --volume-type <type_id>
$ cinder type-access-list --volume-type <type_id>
要从私有卷类型的访问列表中删除项目,请运行:
cinder type-access-remove --volume-type <type_id> --project-id <tenant_id>
$ cinder type-access-remove --volume-type <type_id> --project-id <tenant_id>
2.3.5. 定义特定于项目的默认卷类型 复制链接链接已复制到粘贴板!
可选: 对于复杂的部署,项目管理员可以为各个项目(租户)定义默认卷类型。
如果您创建卷且没有指定卷类型,则块存储将使用默认卷类型。
您可以使用 Block Storage (cinder) 配置文件 cinder.conf
的 default_volume_type
选项定义应用到所有项目的通用默认卷类型。
但是,如果您的 Red Hat OpenStack Platform (RHOSP)部署使用特定于项目的卷类型,请确保为每个项目定义默认卷类型。在这种情况下,块存储使用特定于项目的卷类型,而不是常规的默认卷类型。以下 RHOSP 部署示例需要特定于项目的默认卷类型:
- 跨越多个可用区(AZ)的分布式 RHOSP 部署。每个 AZ 都位于自己的项目中,且具有自己的卷类型。
- 一个 RHOSP 部署,用于公司的三个不同部门。每个部门都在自己的项目中,且具有自己的专用卷类型。
先决条件
- 每个项目中至少有一个卷类型,它将是特定于项目的默认卷类型。如需更多信息,请参阅 创建和配置卷类型。
- 块存储 REST API 微版本 3.62 或更高版本。
- 只有项目管理员才能为其项目定义、清除或列出默认卷类型。
流程
提供 overcloud 凭证文件:
source ~/<credentials_file>
$ source ~/<credentials_file>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
将
<credentials_file
> 替换为您的凭证文件的名称,如overcloudrc
。
-
将
定义、清除或列出项目的默认卷类型:
注意您必须将这些命令中的 <
project_id
> 替换为所需项目的 ID。要查找每个租户的 ID 和名称,请运行openstack project list
命令。为项目定义默认卷类型:
cinder --os-volume-api-version 3.62 default-type-set <volume_type> <project_id>
$ cinder --os-volume-api-version 3.62 default-type-set <volume_type> <project_id>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
将
<volume_type>
替换为所需卷类型的名称或 ID。您可以运行cinder type-list
命令来列出所有卷类型的名称和 ID。
-
将
清除项目的默认卷类型:
cinder --os-volume-api-version 3.62 default-type-unset <project_id>
$ cinder --os-volume-api-version 3.62 default-type-unset <project_id>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 列出项目的默认卷类型:
cinder --os-volume-api-version 3.62 default-type-list --project <project_id>
$ cinder --os-volume-api-version 3.62 default-type-list --project <project_id>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.4. 为块存储服务(cinder)创建和配置内部项目 复制链接链接已复制到粘贴板!
有些块存储功能需要内部块存储项目或租户。这也称为服务项目,称为 cinder-internal
。
块存储服务使用此项目来管理用户不需要了解的卷。例如,当缓存镜像进行频繁卷克隆或正在迁移的卷临时副本时。
由于此 cinder-internal
项目也受到默认项目配额约束,因此您必须调整此项目的 卷
配额,默认为仅有 10 个卷。您可以将 卷
配额的限制设置为无限(-1),或者提供数字,以确保有效使用可用的卷存储,如 50。您可能还需要更改 GB
配额,该配额限制了此项目创建的最大大小(以 GB 为单位),默认设置为 1000。
流程
在 Controller 节点上创建一个名为
cinder-internal
的通用项目和用户:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 修改块存储服务可为此
cinder-internal
项目创建的最大卷数:openstack quota set --volumes <maxnum> cinder-internal
$ openstack quota set --volumes <maxnum> cinder-internal
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
将
<maxnum
> 替换为块存储服务可为此cinder-internal
项目创建的最大卷数。
-
将
可选:修改块存储服务可为此
cinder-internal
项目创建的所有卷的最大总大小:openstack quota set --gigabytes <maxgb> cinder-internal
$ openstack quota set --gigabytes <maxgb> cinder-internal
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
将
<maxgb
> 替换为块存储服务可为此cinder-internal
项目创建的卷的最大总大小(以 GB 为单位)。
-
将
2.5. 配置 image-volume 缓存 复制链接链接已复制到粘贴板!
块存储服务具有可选的 Image-Volume 缓存,它提高了从频繁使用的镜像创建卷的速度。有关如何从镜像创建卷的详情,请参考 创建块存储卷。
启用后,Image-Volume 缓存会在第一次创建卷时存储镜像的副本。此存储的镜像在本地缓存到块存储后端,以帮助在下次使用此镜像创建卷时提高性能。您可以将 Image-Volume 缓存的限制设置为大小(以 GB 为单位)或镜像数量。
Image-Volume 缓存由多个后端支持。如果您使用第三方后端,请参阅其文档来获取有关 Image-Volume 缓存支持的信息。
先决条件
已配置了名为
cinder-internal
的块存储服务项目。注意默认情况下,此内部块存储服务项目只能缓存最多 10 个镜像,最大为 1000 GB,因为它也受到默认项目配额的影响。您必须调整
此项目的卷和
GB
配额限制,以适应 Image-Volume 缓存的配置限制。如需更多信息,请参阅 为块存储服务(cinder)创建和配置内部项目。
- 已安装 undercloud。如需更多信息,请参阅使用 director 安装和管理 Red Hat OpenStack Platform 中的安装 director。
流程
-
以
stack
用户身份登录 undercloud 主机。 查找
stackrc
undercloud 凭证文件:source ~/stackrc
$ source ~/stackrc
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将以下值添加到 overcloud 部署命令中包含的环境文件的
ExtraConfig
部分:Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
将
<tenantid
> 替换为 cinder-internal 项目的 ID。 -
将
<userid
> 替换为 cinder-internal 用户的 ID。 -
将
<backend
> 替换为目标后端的名称(特别是 volume_backend_name 值)。 -
可选: 默认情况下,Image-Volume 缓存大小仅受后端限制。将 &
lt;maxsize&
gt; 替换为所需的大小(以 GB 为单位)。 可选:将
<maxnumber
> 替换为镜像的最大数量。块存储服务数据库使用时间戳来跟踪每个缓存的镜像最近用于创建镜像的时间。如果设置了 <
maxsize&
gt; 和 <maxnumber
>,则块存储服务将根据需要删除缓存的镜像,以便为新的镜像生成方法。当满足 Image-Volume 缓存限制时,会首先删除带有最旧时间戳的镜像。注意您必须配置内部块存储服务项目的
卷和
GB
配额,才能实现 Image-Volume 缓存的 <maxsize>
; 和 <maxnumber
> 限制。如需更多信息,请参阅 为块存储服务(cinder)创建和配置内部项目。
-
将
- 将更新保存到环境文件。
- 使用其他环境文件将环境文件添加到堆栈中,并部署 overcloud。
2.6. 块存储服务(cinder)服务质量规格 复制链接链接已复制到粘贴板!
您可以通过创建与每种卷类型关联服务质量(QoS)规格,将性能限制应用到云用户创建的卷。例如,使用高性能 QoS 规格的卷可以为用户提供更多的 IOPS 或用户可以为使用较低性能 QoS 规格的卷分配更轻的工作负载,以节省资源。
您必须是一个项目管理员,才能创建、配置、关联和解除关联 QoS 规格。
创建 QoS 规格时,您必须选择所需的消费者。消费者决定您要应用 QoS 限制的位置,并确定哪些 QoS 属性键可用于定义 QoS 限值。有关可用消费者的更多信息,请参阅 QoS 规格 的 Consumers。
您可以通过将所需的 QoS 属性键设置为特定于部署的值来创建卷性能限制。有关块存储服务(cinder)提供的 QoS 属性键的更多信息,请参阅 块存储 QoS 属性键。
要创建 QoS 规格并将其与卷类型关联,请完成以下任务:
- 创建并配置 QoS 规格。
- 将 QoS 规格与卷类型关联。
您可以使用控制面板或使用 CLI 创建、配置和关联 QoS 规格。
2.6.1. QoS 规格的消费者 复制链接链接已复制到粘贴板!
创建 QoS 规格时,您必须选择所需的消费者。消费者决定您要应用 QoS 限制的位置,并确定哪些 QoS 属性键可用于定义 QoS 限值。块存储服务(cinder)支持以下 QoS 规范使用者:
-
前端
:当卷附加到实例时,计算服务(nova)将应用 QoS 限制。计算服务支持块存储服务提供的所有 QoS 属性键。 后端
:关联卷类型的后端驱动程序应用 QoS 限制。每个后端驱动程序都支持自己的一组 QoS 属性键。如需有关驱动程序支持的 QoS 属性键的更多信息,请参阅后端驱动程序文档。在不支持
front-end
消费者的情况下,应使用back-end
消费者。例如,在通过裸机置备服务(ironic)将卷附加到裸机节点时。两者
: 使用者尽可能应用 QoS 限制。因此,这个消费者类型支持以下 QoS 属性键:- 当卷附加到实例时,您可以使用计算服务和后端驱动程序都支持的每个 QoS 属性键。
- 当卷未附加到实例时,您只能使用后端驱动程序支持的 QoS 属性键。
2.6.2. 块存储 QoS 属性键 复制链接链接已复制到粘贴板!
块存储服务为您提供了 QoS 属性键,以便您可以限制云用户创建的卷的性能。这些限制使用以下两个行业标准存储卷性能:
- 每秒输入/输出操作(IOPS)
- 数据传输率(以字节/秒为单位)
QoS 规格的使用者决定支持哪些 QoS 属性键。如需更多信息,请参阅 QoS 规格的消费者。
块存储无法对 QoS 属性键执行错误检查,因为有些 QoS 属性键是由后端驱动程序在外部定义的。因此,块存储会忽略任何无效的或不受支持的 QoS 属性键。
确保正确拼写 QoS 属性键。包含错误拼写属性键的卷性能限制将被忽略。
对于 IOPS 和数据传输速率测量,您可以配置以下性能限制:
- 修复了限制
- 通常,固定的限制应该定义卷性能测量的平均使用量。
- 突发限制
通常,突发限制应该定义卷性能测量的严格活动。突发限制可以增加特定时间的活动速率,同时保持固定限制降低平均值。
注意burst 限制全部使用突发长度为 1 秒。
- 总限值
使用
total
PPK QoS 属性键为所需性能限制的 read 和 write 操作指定一个全局限制。注意您可以将单独的限制应用到读和写操作,或者选择仅限制 read 或 write 操作,而不是使用总限制。
- 读取限制
使用 readGRESS QoS 属性键,指定只适用于所需性能限制的
读取操作
的限制。注意当您指定总限值时,会忽略这个限制。
- 写入限制
使用 writejpeg QoS 属性键指定只适用于所需性能限制
的写入操作
的限制。注意当您指定总限制时,会忽略这个限制。
您可以使用以下 Block Storage QoS 属性键为部署创建卷性能限制:
所有 QoS 属性键 的默认值为
0,这意味着限制是不受限制。
性能限制 | measurement 单元 | QoS 属性键 |
---|---|---|
修复了 IOPS | IOPS |
|
修复了根据卷大小计算的 IOPS。 有关这些限制的使用限制的更多信息,请参阅 根据卷大小扩展的 QoS 限制。 | IOPS 每 GB |
|
burst IOPS | IOPS |
|
修复了数据传输速率 | 每秒字节数 |
|
Burst 数据传输率 | 每秒字节数 |
|
计算 IOPS 限制时 IO 请求的大小。 如需更多信息,请参阅为 IOPS 限制设置 IO 请求大小。 | Bytes |
|
2.6.2.1. 为 IOPS 限制设置 IO 请求大小 复制链接链接已复制到粘贴板!
如果您实现 IOPS 卷性能限制,您还应指定典型的 IO 请求大小,以防止用户绕过这些限制。如果没有,用户可以提交多个大 IO 请求,而不是大量较小的请求。
使用 size_iops_sec
QoS 属性键指定典型 IO 请求的最大大小(以字节为单位)。块存储服务使用此大小来计算提交的每个 IO 请求的比例 IO 请求,例如:
size_iops_sec=4096
- 8 KB 请求被计算为两个请求。
- 6 KB 请求计算为一和半个请求。
- 任何小于 4 KB 的请求都会被计算为一个请求。
块存储服务仅在计算 IOPS 限制时使用此 IO 请求大小限制。
size_iops_sec
的默认值为 0,
它会在应用 IOPS 限制时忽略 IO 请求的大小。
2.6.2.2. IOPS 限制根据卷大小扩展 复制链接链接已复制到粘贴板!
您可以创建 IOPS 卷性能限制,由用户创建的卷容量决定。这些服务质量(QoS)限制使用置备的卷的大小进行扩展。例如,如果卷类型的 IOPS 限制为 500 每个 GB 的卷大小,则此卷类型置备的 3 GB 卷会将读取 IOPS 限制为 1500。
卷的大小在卷附加到实例时确定。因此,如果在将卷的大小附加到实例时更改了卷的大小,则只有在这个卷分离时,才会为新卷大小重新计算这些限制,然后重新附加到实例。
您可以使用以下 QoS 属性键(按 IOPS per GB 指定)来创建可扩展的卷性能限制:
total_iops_sec_per_gb
:为读取和写入操作指定每个 GB 的全局 IOPS 限值。注意除了使用总计限制,您可以将单独的限制应用到读写操作,或者选择仅限制读取或写入操作。
read_iops_sec_per_gb
:指定每个 GB 卷大小的 IOPS 限制,它只适用于读操作。注意当您指定总限制时,会忽略这个限制。
write_iops_sec_per_gb
:指定每个 GB 卷大小的 IOPS 限制,它只适用于写入操作。注意当您指定总限制时,会忽略这个限制。
包含这些 QoS 限制的 QoS 规格的消费者可以是 前端
,也可以是 两个
,但不能 后端
。如需更多信息,请参阅 QoS 规格的 Consumers。
2.6.3. 使用仪表板创建和配置 QoS 规格 复制链接链接已复制到粘贴板!
Quality of Service (QoS)规格是卷性能 QoS 限制列表。您可以通过将 QoS 属性键设置为部署特定值来创建每个 QoS 限制。要将 QoS 性能限制应用到卷,您必须将 QoS 规格与所需的卷类型关联。
先决条件
- 您必须是一个项目管理员,才能创建、配置、关联和解除关联 QoS 规格。
- 访问 Red Hat OpenStack Platform (RHOSP) Dashboard (horizon)。如需更多信息,请参阅使用 OpenStack 控制面板管理云资源。
流程
- 以 admin 用户身份登录控制面板。
- 选择 Admin > Volumes > Volume Types。
- 在 QoS Specs 表中,点 Create QoS Spec。
- 输入 QoS Spec 的名称。
- 在 Consumer 字段中,选择此 QoS 规格的消费者。如需更多信息,请参阅 QoS 规格的 Consumers。
- 点 Create。新的 QoS 规格显示在 QoS Specs 表中。
- 在 QoS Specs 表中,选择新 QoS 规格的 Manage Specs 操作,以打开 Specs 窗口,在其中添加 QoS 性能限制。
- 点 Specs 窗口中的 Create 打开 Create Extra Specs 窗口。
在 Key 字段中指定 QoS 性能限制的 QoS 属性键,并在 Value 字段中设置性能限制值。如需有关可用属性键的更多信息,请参阅 块存储 QoS 属性键。
重要确保您正确拼写了 QoS 属性键。包含错误拼写属性键的卷性能限制将被忽略。
- 点 Create,将 QoS 限制添加到您的 QoS 规格。
- 对您要添加到 QoS 规格的每个 QoS 限制重复步骤 7 到 10。
后续步骤
2.6.4. 使用 CLI 创建和配置 QoS 规格 复制链接链接已复制到粘贴板!
Quality of Service (QoS)规格是卷性能 QoS 限制列表。您可以通过将 QoS 属性键设置为部署特定值来创建每个 QoS 限制。要将 QoS 性能限制应用到卷,您必须将 QoS 规格与所需的卷类型关联。
先决条件
- 您必须是一个项目管理员,才能创建、配置、关联和解除关联 QoS 规格。
流程
提供 overcloud 凭证文件:
source ~/<credentials_file>
$ source ~/<credentials_file>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
将
<credentials_file
> 替换为您的凭据文件的名称,如overcloudrc
。
-
将
创建 QoS 规格:
openstack volume qos create [--consumer <qos_spec_consumer>] <qos_spec_name>
$ openstack volume qos create [--consumer <qos_spec_consumer>] <qos_spec_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
可选:将
<qos_spec_consumer
> 替换为此 QoS 规格所需的消费者。如果未指定,则消费者默认为这两者
。如需更多信息,请参阅 QoS 规格的 Consumers。 -
将
<qos_spec_name
> 替换为 QoS 规格的名称。
-
可选:将
通过为每个要添加的 QoS 限制指定单独的
--property <key=value>
; 参数,为 QoS 规格添加性能限制:openstack volume qos set --property <key>=<value> <qos_spec_name>
$ openstack volume qos set --property <key>=<value> <qos_spec_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
<key
> 替换为所需性能约束的 QoS 属性键。如需更多信息,请参阅块存储 QoS 属性键。重要确保您正确拼写了 QoS 属性键。包含错误拼写属性键的卷性能限制将被忽略。
-
在 QoS 属性键所需的测量单元中,将 <
value
> 替换为此性能约束的部署特定限制。 将
<qos_spec_name
> 替换为 QoS 规格的名称或 ID。Example:
openstack volume qos set \ --property read_iops_sec=5000 \ --property write_iops_sec=7000 \ myqoslimits
$ openstack volume qos set \ --property read_iops_sec=5000 \ --property write_iops_sec=7000 \ myqoslimits
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
查看 QoS 规格:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 此命令提供了所有配置的 QoS 规格的配置详情表。
2.6.5. 使用控制面板将 QoS 规格与卷类型关联 复制链接链接已复制到粘贴板!
您必须将服务质量(QoS)规格与现有卷类型关联,才能将 QoS 限制应用到卷。
如果卷已附加到实例,则 QoS 限制仅在卷分离时应用于此卷,然后重新附加到这个实例。
先决条件
- 您必须是一个项目管理员,才能创建、配置、关联和解除关联 QoS 规格。
- 创建所需的卷类型。如需更多信息,请参阅 创建和配置卷类型。
- 创建了所需的 QoS 规格。如需更多信息,请参阅使用仪表板创建和配置 QoS 规格。
- 访问 Red Hat OpenStack Platform (RHOSP) Dashboard (horizon)。如需更多信息,请参阅使用 OpenStack 控制面板管理云资源。
流程
- 以 admin 用户身份登录控制面板。
- 选择 Admin > Volumes > Volume Types。
- 在 Volume Types 表中,选择所需卷类型的 Manage QoS Spec Association 操作。
- 从 要关联的 QoS Spec 列表中选择所需的 QoS 规格。
- 单击 关联。QoS 规格添加到编辑 卷类型的关联 QoS Spec 列中。
2.6.6. 使用 CLI 将 QoS 规格与卷类型关联 复制链接链接已复制到粘贴板!
您必须将服务质量(QoS)规格与现有卷类型关联,才能将 QoS 限制应用到卷。
如果卷已附加到实例,则 QoS 限制仅在卷分离时应用于此卷,然后重新附加到这个实例。
先决条件
- 您必须是一个项目管理员,才能创建、配置、关联和解除关联 QoS 规格。
- 创建所需的卷类型。如需更多信息,请参阅 创建和配置卷类型。
- 创建了所需的 QoS 规格。如需更多信息,请参阅使用 CLI 创建和配置 QoS 规格。
流程
提供 overcloud 凭证文件:
source ~/<credentials_file>
$ source ~/<credentials_file>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
将
<credentials_file
> 替换为您的凭据文件的名称,如overcloudrc
。
-
将
将所需的 QoS 规格与所需的卷类型关联:
openstack volume qos associate <qos_spec_name> <volume_type>
$ openstack volume qos associate <qos_spec_name> <volume_type>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
将
<qos_spec_name
> 替换为 QoS 规格的名称或 ID。您可以运行openstack volume qos list
命令来列出所有 QoS 规范的名称和 ID。 -
将
<volume_type
> 替换为卷类型的名称或 ID。您可以运行cinder type-list
命令来列出所有卷类型的名称和 ID。
-
将
验证 QoS 规格是否已关联:
openstack volume qos list
$ openstack volume qos list
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出表的 Associations 列显示哪些卷类型与这个 QoS 规格相关联。
2.6.7. 使用控制面板从卷类型取消关联 QoS 规格 复制链接链接已复制到粘贴板!
当您不再需要将 QoS 限制应用到该卷类型的卷时,您可以将服务质量(QoS)规格与卷类型解除关联。
如果卷已附加到实例,则 QoS 限制仅在卷分离时从这个卷中删除,然后重新附加到这个实例。
先决条件
- 您必须是一个项目管理员,才能创建、配置、关联和解除关联 QoS 规格。
- 访问 Red Hat OpenStack Platform (RHOSP) Dashboard (horizon)。如需更多信息,请参阅使用 OpenStack 控制面板管理云资源。
流程
- 以 admin 用户身份登录控制面板。
- 选择 Admin > Volumes > Volume Types。
- 在 Volume Types 表中,选择所需卷类型的 Manage QoS Spec Association 操作。
- 从 QoS Spec to be associated 列表中选择 None。
单击 关联。
QoS 规范应从编辑 的卷类型的关联 QoS Spec 列中删除。
2.6.8. 使用 CLI 将 QoS 规格与卷类型关联 复制链接链接已复制到粘贴板!
当您不再需要将 QoS 限制应用到该卷类型的卷时,您可以将服务质量(QoS)规格与卷类型解除关联。
如果卷已附加到实例,则 QoS 限制仅在卷分离时从这个卷中删除,然后重新附加到这个实例。
先决条件
- 您必须是一个项目管理员,才能创建、配置、关联和解除关联 QoS 规格。
流程
提供 overcloud 凭证文件:
source ~/<credentials_file>
$ source ~/<credentials_file>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
将
<credentials_file
> 替换为您的凭据文件的名称,如overcloudrc
。
-
将
解除与 QoS 规格关联的卷类型。当多个卷类型与相同的 QoS 规格关联时,您可以解除关联特定卷类型,或者所有卷类型:
解除与 QoS 规格关联的特定卷类型:
openstack volume qos disassociate <qos_spec_name> --volume-type <volume_type>
$ openstack volume qos disassociate <qos_spec_name> --volume-type <volume_type>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
将
<qos_spec_name
> 替换为 QoS 规格的名称或 ID。您可以运行openstack volume qos list
命令来列出所有 QoS 规范的名称和 ID。 -
将
<volume_type
> 替换为与此 QoS 规格关联的卷类型名称或 ID。您可以运行cinder type-list
命令来列出所有卷类型的名称和 ID。
-
将
解除与 QoS 规格关联的所有卷类型:
openstack volume qos disassociate <qos_spec_name> --all
$ openstack volume qos disassociate <qos_spec_name> --all
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证 QoS 规格是否已解除关联:
openstack volume qos list
$ openstack volume qos list
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 此 QoS 规范的 Associations 列不应指定卷类型或为空。
2.7. Block Storage 服务(cinder)卷加密 复制链接链接已复制到粘贴板!
卷加密有助于提供基本数据保护,以防卷后端被破坏或 outright stolen。Compute 和 Block Storage 服务都集成在一起,以允许实例读取访问和使用加密卷。您必须部署 Barbican 才能利用卷加密。
- 基于文件的卷(如 NFS)不支持卷加密。
- 卷加密只支持 LUKS1 而不是 LUKS2。
- 不支持将未加密的卷重新设置为相同大小的加密卷,因为加密卷需要额外的空间来存储加密数据。有关加密未加密的卷的更多信息,请参阅 加密未加密的卷。
卷加密通过卷类型应用。有关加密卷类型的详情,请参考 使用控制面板配置块存储服务卷加密 或使用 CLI 配置块存储服务卷加密。
如需更多信息,请参阅使用 OpenStack Key Manager (barbican)管理您的块存储(cinder)加密密钥,请参阅 加密块存储(cinder)卷。
2.7.1. 使用仪表板配置块存储服务卷加密 复制链接链接已复制到粘贴板!
要创建加密的卷,您首先需要一个 加密的卷类型。加密卷类型涉及设置它应使用的供应商类、密码和密钥大小。您还可以重新配置加密卷类型的加密设置。
您可以调用加密的卷类型来自动创建加密的卷。
先决条件
- 您必须是项目管理员才能创建加密卷。
- 访问 Red Hat OpenStack Platform (RHOSP) Dashboard (horizon)。如需更多信息,请参阅使用 OpenStack 控制面板管理云资源。
流程
- 以 admin 用户身份登录控制面板。
- 选择 Admin > Volumes > Volume Types。
- 在要加密的卷的 Actions 列中,选择 Create Encryption 以启动 Create Volume Type Encryption 向导。
在这里,配置卷类型加密的 Provider,Control Location,Cipher, 和 Key Size 设置。Description 列描述了每个设置。
重要以下列出的值是 Provider、Cipher 和 Key Size 唯一支持的选项。
-
为 Provider 输入
luks
。 -
为 Cipher 输入
aes-xts-plain64
。 -
为 Key Size 输入
256
。
-
为 Provider 输入
- 单击 Create Volume Type Encryption。
您还可以重新配置加密卷类型的加密设置。
- 从卷类型的 Actions 列中选择 Update Encryption 以启动 Update Volume Type Encryption 向导。
- 在 Project > Compute > Volumes 中,检查 Volumes 表中的 Encrypted 列,以确定卷是否加密。
- 如果卷加密,请单击该列中的 Yes 以查看加密设置。
其他资源
2.7.2. 使用 CLI 配置块存储服务卷加密 复制链接链接已复制到粘贴板!
要创建加密的卷,您首先需要一个 加密的卷类型。加密卷类型涉及设置它应使用的供应商类、密码和密钥大小。
先决条件
- 您必须是项目管理员才能创建加密卷。
流程
提供 overcloud 凭证文件:
source ~/<credentials_file>
$ source ~/<credentials_file>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
将
<credentials_file
> 替换为您的凭据文件的名称,如overcloudrc
。
-
将
创建卷类型:
cinder type-create myEncType
$ cinder type-create myEncType
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 配置密码、密钥大小、控制位置和提供程序设置:
cinder encryption-type-create --cipher aes-xts-plain64 --key-size 256 --control-location front-end myEncType luks
$ cinder encryption-type-create --cipher aes-xts-plain64 --key-size 256 --control-location front-end myEncType luks
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建一个加密卷:
cinder --debug create 1 --volume-type myEncType --name myEncVol
$ cinder --debug create 1 --volume-type myEncType --name myEncVol
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.7.3. 自动删除卷镜像加密密钥 复制链接链接已复制到粘贴板!
将加密卷上传到镜像服务(glance)时,块存储服务(cinder)在密钥管理服务(barbican)中创建一个加密密钥。这会在加密密钥和存储的镜像之间创建一个 1:1 关系。
加密密钥删除可防止密钥管理服务无限度地消耗资源。块存储、密钥管理和镜像服务自动管理加密卷的密钥,包括删除密钥。
块存储服务会自动将两个属性添加到卷镜像中:
-
cinder_encryption_key_id
- 密钥管理服务为特定镜像存储的加密密钥的标识符。 -
cinder_encryption_key_deletion_policy
- 告知镜像服务是否删除与此镜像关联的密钥的策略。
这些属性的值会被自动分配。为避免意外的数据丢失,请不要调整这些值。
当您创建卷镜像时,块存储服务会将 cinder_encryption_key_deletion_policy
属性设置为 on_image_deletion
。当您删除卷镜像时,如果 cinder_encryption_key_deletion_policy
等于 on_image_deletion
_policy,则镜像服务会删除对应的加密密钥。
红帽不推荐手动操作 cinder_encryption_key_id
或 cinder_encryption_key_deletion_policy
属性。如果您使用由 cinder_encryption_key_id
值标识的加密密钥用于任何其他目的,则风险数据丢失。
2.8. 为块存储卷后端部署可用区 复制链接链接已复制到粘贴板!
可用域是特定于供应商的,对云实例和服务进行分组的方法。director 使用 CinderXXXAvailabilityZone
参数(其中 XXX
与特定后端相关联)为块存储卷后端配置不同的可用区。
先决条件
- 已安装 undercloud。如需更多信息,请参阅使用 director 安装和管理 Red Hat OpenStack Platform 中的安装 director。
流程
-
以
stack
用户身份登录 undercloud 主机。 查找
stackrc
undercloud 凭证文件:source ~/stackrc
$ source ~/stackrc
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在环境文件中添加以下参数来创建两个可用区:
parameter_defaults: CinderXXXAvailabilityZone: zone1 CinderYYYAvailabilityZone: zone2
parameter_defaults: CinderXXXAvailabilityZone: zone1 CinderYYYAvailabilityZone: zone2
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将 XXX 和 YYY 替换为支持的后端值,例如:
CinderISCSIAvailabilityZone CinderNfsAvailabilityZone CinderRbdAvailabilityZone
CinderISCSIAvailabilityZone CinderNfsAvailabilityZone CinderRbdAvailabilityZone
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意在
/usr/share/openstack-tripleo-heat-templates/deployment/cinder/
目录中搜索与后端关联的 heat 模板,以获取正确的后端值。以下示例部署两个后端,其中
rbd
是 zone 1,iSCSI
是 zone 2:parameter_defaults: CinderRbdAvailabilityZone: zone1 CinderISCSIAvailabilityZone: zone2
parameter_defaults: CinderRbdAvailabilityZone: zone1 CinderISCSIAvailabilityZone: zone2
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
- 将更新保存到环境文件中。
- 使用其他环境文件将环境文件添加到堆栈中,并部署 overcloud。
2.9. 块存储服务(cinder)一致性组 复制链接链接已复制到粘贴板!
您可以使用 Block Storage (cinder)服务将一致性组设置为将多个卷作为单一实体分组在一起。这意味着,您可以同时对多个卷执行操作,而不是单独执行。您可以使用一致性组为多个卷同时创建快照。这也意味着您可以同时恢复或克隆这些卷。
卷可以是多个一致性组的成员。但是,在将卷添加到一致性组后,您无法删除、重新输入或迁移卷。
2.9.1. 配置块存储服务一致性组 复制链接链接已复制到粘贴板!
默认情况下,块存储安全策略禁用一致性组 API。在使用该功能前,您必须在此处启用它。托管 Block Storage API 服务的节点 /etc/cinder/policy.json
文件中的相关一致性组条目,openstack-cinder-api
列出默认设置:
您必须在环境文件中更改这些设置,然后使用 openstack overcloud deploy
命令将它们部署到 overcloud。不要直接编辑 JSON 文件,因为在下次部署 overcloud 时更改会被覆盖。
先决条件
- 已安装 undercloud。如需更多信息,请参阅使用 director 安装和管理 Red Hat OpenStack Platform 中的安装 director。
流程
-
以
stack
用户身份登录 undercloud 主机。 查找
stackrc
undercloud 凭证文件:source ~/stackrc
$ source ~/stackrc
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
编辑环境文件,并在
parameter_defaults
部分中添加新条目。这样可确保条目在容器中更新,并在 director 使用openstack overcloud deploy
命令重新部署环境时保留条目。 使用
CinderApiPolicies
在环境文件中添加新部分来设置一致性组设置。带有 JSON 文件中的默认设置的等同parameter_defaults
部分如下所示:Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
值
'group:nobody'
确定没有组可以使用此功能,以便有效地禁用它。要启用它,请将组更改为另一个值。 为提高安全性,请将一致性组 API 和卷类型管理 API 的权限设置为相同。默认情况下,卷类型管理 API 会在同一个
/etc/cinder/policy.json_ file
文件中设置为"rule:admin_or_owner"
。"volume_extension:types_manage": "rule:admin_or_owner",
"volume_extension:types_manage": "rule:admin_or_owner",
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要使一致性组功能可供所有用户使用,请将 API 策略条目设置为允许用户创建、使用和管理自己的一致性组。要做到这一点,请使用
rule:admin_or_owner
:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 将更新保存到环境文件中。
- 使用其他环境文件将环境文件添加到堆栈中,并部署 overcloud。
2.9.2. 使用仪表板创建块存储一致性组 复制链接链接已复制到粘贴板!
启用一致性组 API 后,您可以开始创建一致性组。
先决条件
- 您必须是项目管理员或卷所有者才能创建一致性组。
- 访问 Red Hat OpenStack Platform (RHOSP) Dashboard (horizon)。如需更多信息,请参阅使用 OpenStack 控制面板管理云资源。
流程
- 以 admin 用户或卷所有者登录控制面板。
- 选择 Project > Compute > Volumes > Volume Consistency Groups。
- 单击 Create Consistency Group。
- 在向导的 Consistency Group Information 选项卡中,输入您的一致性组的名称和描述。然后,指定其 可用区。
- 您还可以将卷类型添加到一致性组中。当您在一致性组中创建卷时,块存储服务将从这些卷类型应用兼容的设置。要添加卷类型,请点击所有可用卷类型列表中的 + 按钮。
- 单击 Create Consistency Group。它会出现在 Volume Consistency Groups 表中。
2.9.3. 使用控制面板管理块存储服务一致性组 复制链接链接已复制到粘贴板!
您可以在仪表板中管理块存储卷的一致性组。
先决条件
- 您必须是项目管理员来管理一致性组。
- 访问 Red Hat OpenStack Platform (RHOSP) Dashboard (horizon)。如需更多信息,请参阅使用 OpenStack 控制面板管理云资源。
流程
- 以 admin 用户身份登录控制面板。
- 选择 Project > Compute > Volumes > Volume Consistency Groups。
- 可选:您可以通过从 Action 列中选择 Edit Consistency Group 来更改一致性组的名称或描述。
要直接从一致性组中添加或删除卷,请找到您要配置的一致性组。在该一致性组的 Actions 列中,选择 Manage Volumes。这将启动 Add/Remove Consistency Group Volumes 向导。
- 要将卷添加到一致性组中,请单击 All available volumes 列表中的 + 按钮。
- 要从一致性组中删除卷,请单击 Selected volumes 列表中的 - 按钮。
- 单击 Edit Consistency Group。
2.9.4. 为块存储服务创建和管理一致性组快照 复制链接链接已复制到粘贴板!
将卷添加到一致性组后,您可以从其中创建快照。
先决条件
- 您必须是一个项目管理员,才能创建和管理一致性组快照。
流程
提供 overcloud 凭证文件:
source ~/<credentials_file>
$ source ~/<credentials_file>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
将
<credentials_file
> 替换为您的凭据文件的名称,如overcloudrc
。
-
将
列出所有可用的一致性组及其对应 ID:
cinder consisgroup-list
$ cinder consisgroup-list
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用一致性组创建快照:
cinder cgsnapshot-create [--name <cgsnapname>] [--description "<description>"] <cgnameid>
$ cinder cgsnapshot-create [--name <cgsnapname>] [--description "<description>"] <cgnameid>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
将
<cgsnapname
> 替换为快照的名称。 -
将
<description
> 替换为快照的描述。 -
将
<cgnameid>
替换为一致性组的名称或 ID。
-
将
显示所有可用一致性组快照的列表:
cinder cgsnapshot-list
# cinder cgsnapshot-list
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.9.5. 克隆块存储服务一致性组 复制链接链接已复制到粘贴板!
您还可以使用一致性组同时创建整个预配置的卷。您可以通过克隆现有的一致性组或恢复一致性组快照来完成此操作。两个进程都使用相同的命令。
先决条件
- 您必须是项目管理员,才能克隆一致性组和恢复一致性组快照。
流程
提供 overcloud 凭证文件:
source ~/<credentials_file>
$ source ~/<credentials_file>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
将
<credentials_file
> 替换为您的凭据文件的名称,如overcloudrc
。
-
将
克隆现有的一致性组:
cinder consisgroup-create-from-src --source-cg <cgnameid> [--name <cgname>] [--description "<description>"]
$ cinder consisgroup-create-from-src --source-cg <cgnameid> [--name <cgname>] [--description "<description>"]
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
将
<cgnameid
> 替换为您要克隆的一致性组的名称或 ID。 -
将
<cgname
> 替换为您的一致性组的名称。 -
将
<description
> 替换为您的一致性组的描述。
-
将
从一致性组快照创建一致性组:
cinder consisgroup-create-from-src --cgsnapshot <cgsnapname> [--name <cgname>] [--description "<description>"]
$ cinder consisgroup-create-from-src --cgsnapshot <cgsnapname> [--name <cgname>] [--description "<description>"]
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
将 <
cgsnapname
> 替换为您要用于创建一致性组的快照的名称或 ID。
-
将 <
2.10. 配置默认块存储调度程序过滤器 复制链接链接已复制到粘贴板!
如果在卷创建过程中没有指定卷后端,则块存储调度程序将使用过滤器来选择合适的后端。确保配置以下默认过滤器:
- AvailabilityZoneFilter
- 过滤掉不符合所请求卷的可用区要求的所有后端。
- CapacityFilter
- 仅选择具有足够空间的后端来容纳卷。
- CapabilitiesFilter
- 仅选择可支持卷中任何指定设置的后端。
- InstanceLocality
- 将集群配置为使用卷本地到同一节点。
先决条件
- 已安装 undercloud。如需更多信息,请参阅使用 director 安装和管理 Red Hat OpenStack Platform 中的安装 director。
流程
-
以
stack
用户身份登录 undercloud 主机。 查找
stackrc
undercloud 凭证文件:source ~/stackrc
$ source ~/stackrc
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在 overcloud 部署命令中添加一个环境文件,其中包含以下参数:
parameter_defaults: ControllerExtraConfig: # cinder::config::cinder_config: DEFAULT/scheduler_default_filters: value: 'AvailabilityZoneFilter,CapacityFilter,CapabilitiesFilter,InstanceLocality'
parameter_defaults: ControllerExtraConfig: #
1 cinder::config::cinder_config: DEFAULT/scheduler_default_filters: value: 'AvailabilityZoneFilter,CapacityFilter,CapabilitiesFilter,InstanceLocality'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 您还可以在现有环境文件的
parameter_defaults:
部分中添加ControllerExtraConfig:
hook 及其嵌套部分。
- 将更新保存到环境文件中。
- 使用其他环境文件将环境文件添加到堆栈中,并部署 overcloud。
2.11. 在 overcloud 节点上启用 LVM2 过滤 复制链接链接已复制到粘贴板!
如果您使用带有某些块存储服务(cinder)后端的 LVM2 (逻辑卷管理)卷,您在 Red Hat OpenStack Platform (RHOSP)客户机中创建的卷可能会在主机 cinder-volume
或 nova-compute
容器的 overcloud 节点上可见。在这种情况下,主机上的 LVM2 工具扫描 OpenStack 客户机创建的 LVM2 卷,这可能会在 Compute 或 Controller 节点上产生一个或多个问题:
- LVM 似乎查看客户机中的卷组
- LVM 报告重复的卷组名称
- 卷分离失败,因为 LVM 正在访问存储
- 由于 LVM 存在问题,客户机无法引导
- 因为缺少实际存在的磁盘,客户机机器上的 LVM 处于部分状态
- 在具有 LVM 的设备中,块存储服务(cinder)操作会失败
- 块存储服务(cinder)快照无法正确删除
-
实时迁移过程中出现错误:
/etc/multipath.conf
不存在
要防止这种错误扫描,并从主机节点隔离客户机 LVM2 卷,您可以在部署或更新 overcloud 时使用 LVMFilterEnabled
heat 参数启用和配置过滤器。这个过滤器从托管活跃 LVM2 卷的物理设备列表中计算。您还可以使用 LVMFilterAllowlist
和 LVMFilterDenylist
参数明确允许或拒绝块设备。您可以在全局范围内、针对特定节点角色或特定设备应用此过滤。
先决条件
- 已安装 undercloud。如需更多信息,请参阅使用 director 安装和管理 Red Hat OpenStack Platform 中的安装 director。
流程
-
以
stack
用户身份登录 undercloud 主机。 查找
stackrc
undercloud 凭证文件:source ~/stackrc
$ source ~/stackrc
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在 overcloud 部署命令中添加一个环境文件,其中包含以下参数:
parameter_defaults: LVMFilterEnabled: true
parameter_defaults: LVMFilterEnabled: true
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 您可以进一步自定义 LVM2 过滤器的实现。例如,要只在 Compute 节点上启用过滤,请使用以下配置:
parameter_defaults: ComputeParameters: LVMFilterEnabled: true
parameter_defaults: ComputeParameters: LVMFilterEnabled: true
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 这些参数还支持正则表达式。要只在 Compute 节点上启用过滤,并忽略所有以
/dev/sd
开头的设备,请使用以下配置:parameter_defaults: ComputeParameters: LVMFilterEnabled: true LVMFilterDenylist: - /dev/sd.*
parameter_defaults: ComputeParameters: LVMFilterEnabled: true LVMFilterDenylist: - /dev/sd.*
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 将更新保存到环境文件中。
- 使用其他环境文件将环境文件添加到堆栈中,并部署 overcloud。
2.12. 多路径配置 复制链接链接已复制到粘贴板!
使用多路径将服务器节点和存储阵列间的多个 I/O 路径配置为单一设备,以创建冗余并提高性能。
2.12.1. 使用 director 配置多路径 复制链接链接已复制到粘贴板!
您可以在 Red Hat OpenStack Platform (RHOSP) overcloud 部署中配置多路径,以实现更大的带宽和网络弹性。
当您在现有部署中配置多路径时,新的工作负载会识别多路径。如果您有任何已存在的工作负载,您必须检查并取消缩小实例以便在这些实例上启用多路径。
先决条件
- 已安装 undercloud。如需更多信息,请参阅使用 director 安装和管理 Red Hat OpenStack Platform 中的安装 director。
流程
-
以
stack
用户身份登录 undercloud 主机。 查找
stackrc
undercloud 凭证文件:source ~/stackrc
$ source ~/stackrc
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用覆盖环境文件或创建新文件,如
multipath_overrides.yaml
。添加并设置以下参数:parameter_defaults: ExtraConfig: cinder::config::cinder_config: backend_defaults/use_multipath_for_image_xfer: value: true
parameter_defaults: ExtraConfig: cinder::config::cinder_config: backend_defaults/use_multipath_for_image_xfer: value: true
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意默认设置将生成适用于大多数环境的基本多路径配置。但是,检查您的存储供应商以获得建议,因为有些供应商有特定于硬件的优化配置。有关多路径的更多信息,请参阅配置设备映射器多路径。
可选:如果您有用于 overcloud 部署的多路径配置文件,您可以使用
MultipathdCustomConfigFile
参数指定此文件的位置:parameter_defaults: MultipathdCustomConfigFile: <config_file_directory>/<config_file_name>
parameter_defaults: MultipathdCustomConfigFile: <config_file_directory>/<config_file_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在以下示例中,
/home/stack
是多路径配置文件的目录,multipath.conf
是此文件的名称:parameter_defaults: MultipathdCustomConfigFile: /home/stack/multipath.conf
parameter_defaults: MultipathdCustomConfigFile: /home/stack/multipath.conf
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意其他 TripleO 多路径参数会覆盖本地自定义配置文件中的任何对应的值。例如,如果
MultipathdEnableUserFriendlyNames
是False
,则 overcloud 节点上的文件会更新以匹配,即使本地自定义文件中启用了该设置。有关多路径参数的更多信息,请参阅 多路径 heat 模板参数。
- 将更新保存到覆盖的环境文件。
将覆盖环境文件添加到带有其他环境文件的堆栈中,例如:
---- /usr/share/openstack-tripleo-heat-templates/environments/multipathd.yaml ----
---- /usr/share/openstack-tripleo-heat-templates/environments/multipathd.yaml ----
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 部署 overcloud。
其他资源
2.12.1.1. 多路径 heat 模板参数 复制链接链接已复制到粘贴板!
使用它来了解启用多路径的以下参数。
参数 | 描述 | 默认值 |
---|---|---|
|
定义是否启用多路径守护进程。通过 |
|
| 定义是否启用为每个路径分配用户友好的名称。 |
|
| 定义是否为每个路径自动创建多路径设备。 |
|
| 定义是否跳过设备中自动创建分区。 |
|
|
包括 overcloud 节点上的本地自定义多路径配置文件。默认情况下会安装一个最小
注意: 其他 TripleO 多路径参数覆盖您添加的任何本地自定义配置文件中任何对应的值。例如,如果 |
2.12.2. 验证多路径配置 复制链接链接已复制到粘贴板!
您可以在新的或现有 overcloud 部署中验证多路径配置。
流程
- 创建一个实例。
- 将非加密卷附加到实例。
获取包含实例的 Compute 节点的名称:
nova show <instance> | grep OS-EXT-SRV-ATTR:host
$ nova show <instance> | grep OS-EXT-SRV-ATTR:host
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
<instance
> 替换为您创建的实例的名称。检索实例的 virsh 名称:
nova show <instance> | grep instance_name
$ nova show <instance> | grep instance_name
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 获取 Compute 节点的 IP 地址:
. stackrc metalsmith list | grep <compute_name>
$ . stackrc $ metalsmith list | grep <compute_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
<compute_name
> 替换为nova show <instance
> 命令的输出中的 name,从六个列表中显示两行。找到在第四列中的 &
lt;compute_name
> 的行。<compute_name>
; 的 IP 地址位于此行的最后一列中。在以下示例中,compute-0 的 IP 地址是 192.02.24.15,因为 compute-0 位于第二行的第四列中:
. stackrc metalsmith list | grep compute-0
$ . stackrc $ metalsmith list | grep compute-0 | 3b1bf72e-c425-494c-9717-d0b89bb66580 | compute-0 | 95b21d3e-36be-470d-ba5c-70d5dcd6d0b3 | compute-1 | ACTIVE | ctlplane=192.02.24.49 | | 72a24883-25f9-435c-bf71-a20e66be172d | compute-1 | a59f79f7-006e-4f38-a9ad-8164da47d58e | compute-0 | ACTIVE | ctlplane=192.02.24.15 |
Copy to Clipboard Copied! Toggle word wrap Toggle overflow SSH 到运行实例的 Compute 节点:
ssh tripleo-admin@<compute_node_ip>
$ ssh tripleo-admin@<compute_node_ip>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
<compute_node_ip
> 替换为 Compute 节点的 IP 地址。登录到运行 virsh 的容器:
podman exec -it nova_libvirt /bin/bash
$ podman exec -it nova_libvirt /bin/bash
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在 Compute 节点实例中输入以下命令,以验证它是否在 cinder 卷主机位置中使用多路径:
virsh domblklist <virsh_instance_name> | grep /dev/dm
virsh domblklist <virsh_instance_name> | grep /dev/dm
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
<virsh_instance_name
> 替换为nova show <instance> | grep instance_name
命令的输出。如果实例显示
/dev/dm-
以外的值,则连接是非多路径,您需要使用nova shelve
和nova unshelve
命令刷新连接信息:nova shelve <instance> nova unshelve <instance>
$ nova shelve <instance> $ nova unshelve <instance>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意如果您有多种后端,您必须验证所有后端上的实例和卷,因为每个后端返回的连接信息可能有所不同。
第 3 章 使用块存储服务(cinder)执行基本操作 复制链接链接已复制到粘贴板!
在您的 overcloud 中创建和配置块存储卷,作为计算实例的主要形式的持久性存储。创建卷,将卷附加到实例,编辑并调整卷所有权,以及修改卷所有权。
3.1. 创建块存储卷 复制链接链接已复制到粘贴板!
创建卷,为您使用 overcloud 中的计算服务(nova)启动的实例提供持久存储。
要创建加密卷,您必须首先为卷加密配置了卷类型。另外,您必须配置 Compute 和 Block Storage 服务,以使用相同的静态密钥。有关如何设置卷加密要求的详情,请参考 Block Storage 服务(cinder)卷加密。
您可以为项目创建的默认最大卷数量为 10。
先决条件
- 访问 Red Hat OpenStack Platform (RHOSP) Dashboard (horizon)。如需更多信息,请参阅使用 OpenStack 控制面板管理云资源。
流程
- 登录控制面板。
- 选择 Project > Compute > Volumes。
点 Create Volume,并编辑以下字段:
Expand 字段 描述 卷名称
卷的名称。
描述
可选,卷的简短描述。
类型
可选卷类型。如需更多信息,请参阅使用 卷类型分组卷配置。
如果您创建卷且没有指定卷类型,则块存储将使用默认卷类型。有关定义默认卷类型的更多信息,请参阅 定义特定于项目的默认卷类型。
如果没有指定后端,则块存储调度程序将尝试为您选择合适的后端。如需更多信息,请参阅 多个后端上的卷分配。
注意如果没有合适的后端,则不会创建卷。
您还可以在卷创建后更改卷类型。如需更多信息,请参阅 块存储卷调整。
Size (GB)
卷大小(以 GB 为单位)。
如果要从未加密的镜像创建加密卷,您必须确保卷大小大于镜像大小,以便加密数据不会截断卷数据。
可用性区域
可用性区域(逻辑服务器组)以及主机聚合是隔离 OpenStack 中资源的常用方法。可用区在安装过程中定义。如需有关可用区和主机聚合的更多信息,请参阅配置 计算服务以进行实例创建 指南中的 创建和管理主机聚合。
指定 卷源 :
Expand 源 描述 没有源的空卷
卷为空,不包含它
文件系统或分区表。
Snapshot
使用现有快照作为卷源。如果选择了这个选项,则会打开一个新的 Use snapshot 作为 源列表 ; 您可以从列表中选择一个快照。如果要从加密卷快照创建新卷,您必须确保新卷至少大于旧卷。有关卷快照的更多信息,请参阅从快照创建新卷。
Image
使用现有镜像作为卷源。如果选择了这个选项,则会打开一个新的 Use snapshot 作为 源列表 ; 您可以从列表中选择一个镜像。
卷
使用现有卷作为卷源。如果选择了这个选项,则会打开一个新的 Use snapshot 作为 源列表;您可以从列表中选择一个卷。
- 点创建卷。创建卷后,其名称将显示在 Volumes 表中。
3.2. 编辑卷名称或描述 复制链接链接已复制到粘贴板!
您可以在仪表板中更改卷的名称和描述。
先决条件
- 访问 Red Hat OpenStack Platform (RHOSP) Dashboard (horizon)。如需更多信息,请参阅使用 OpenStack 控制面板管理云资源。
流程
- 登录控制面板。
- 选择 Project > Compute > Volumes。
- 选择卷的 编辑卷 按钮。
- 根据需要编辑卷名称或描述。
- 点 Edit Volume 保存您的更改。
3.3. 重新定义块存储服务卷大小(扩展) 复制链接链接已复制到粘贴板!
重新定义卷大小以增加卷的存储容量。
支持调整使用中的卷大小,但取决于驱动程序。RBD 支持。您不能扩展使用多重附加卷。有关支持这个功能的更多信息,请联系红帽支持。
流程
- 提供您的凭据文件。
列出卷以检索您要扩展的卷 ID:
cinder list
$ cinder list
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 增加卷的大小:
cinder extend <volume_id> <size>
$ cinder extend <volume_id> <size>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
将
<volume_id>
替换为您要扩展的卷的 ID。 将
<size>
替换为这个卷所需的大小,以 GB 为单位。注意确保指定的大小大于这个卷的现有大小。
例如:
cinder extend 573e024d-5235-49ce-8332-be1576d323f8 10
$ cinder extend 573e024d-5235-49ce-8332-be1576d323f8 10
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
-
将
3.4. 删除块存储服务卷 复制链接链接已复制到粘贴板!
您可以删除不再需要的卷。
如果卷有现有的快照,则无法删除卷。有关删除快照的更多信息,请参阅 删除卷快照。
先决条件
- 访问 Red Hat OpenStack Platform (RHOSP) Dashboard (horizon)。如需更多信息,请参阅使用 OpenStack 控制面板管理云资源。
流程
- 登录控制面板。
- 选择 Project > Compute > Volumes。
- 在 Volumes 表中,选择要删除的卷。
- 点删除卷。
3.5. 在多个后端上的卷分配 复制链接链接已复制到粘贴板!
当您创建卷时,您可以从 Type 列表中选择所需后端的卷类型。如需更多信息,请参阅创建块存储卷。
如果将 Block Storage 服务(cinder)配置为使用多个后端,则必须为每个后端创建一个卷类型。
如果您在创建卷时没有指定后端,则块存储调度程序将尝试为您选择合适的后端。
调度程序为卷的默认关联设置使用过滤器来选择合适的后端:
- AvailabilityZoneFilter
- 过滤掉不符合所请求卷的可用区要求的所有后端。
- CapacityFilter
- 仅选择具有足够空间的后端来容纳卷。
- CapabilitiesFilter
- 仅选择可支持卷中任何指定设置的后端。
- InstanceLocality
- 将集群配置为使用卷本地到同一节点。
如果有多个合适的后端,则调度程序使用权重方法选择最佳后端。默认情况下,使用 CapacityWeigher 方法,以便选择具有最多可用空间的过滤后端。
如果没有合适的后端,则不会创建卷。
3.6. 将卷附加到实例 复制链接链接已复制到粘贴板!
当您关闭一个实例时,所有数据都会丢失。您可以为持久性存储附加卷。您可以一次将卷附加到一个实例,除非它有一个 multi-attach 卷类型。有关创建多附加卷的更多信息 ,请参阅可以附加到多个实例 的卷。
先决条件
- 访问 Red Hat OpenStack Platform (RHOSP) Dashboard (horizon)。如需更多信息,请参阅使用 OpenStack 控制面板管理云资源。
流程
- 登录控制面板。
- 选择 Project > Compute > Volumes。
- 选择 Edit Attachments 操作。如果卷没有附加到实例,则可以看到 Attach To Instance 下拉列表。
- 从 Attach To Instance 列表中,选择要将卷附加到的实例。
- 单击 Attach Volume。
3.7. 从实例分离卷 复制链接链接已复制到粘贴板!
如果要将这个卷附加到另一个实例时,您必须将卷从实例分离,除非它有一个 multi-attach 卷类型。您还必须分离卷以更改卷的访问权限或删除卷。
先决条件
- 访问 Red Hat OpenStack Platform (RHOSP) Dashboard (horizon)。如需更多信息,请参阅使用 OpenStack 控制面板管理云资源。
流程
- 登录控制面板。
- 选择 Project > Compute > Volumes。
- 选择卷的 Manage Attachments 操作。如果卷附加到实例,实例的名称将显示在 Attachments 表中。
- 单击此中的 Detach Volume,然后单击下一个对话框屏幕。
后续步骤
3.8. 配置卷的访问权限 复制链接链接已复制到粘贴板!
卷的默认状态是读写的,以允许写入数据并从中读取数据。您可以将卷标记为只读,以防止其数据被意外覆盖或删除。
将卷更改为只读后,您可以再次将其更改回读写。
先决条件
- 如果卷已附加到实例,则分离这个卷。如需更多信息 ,请参阅从实例分离卷。
流程
- 提供您的凭据文件。
列出卷以检索您要配置的卷的 ID:
cinder list
$ cinder list
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 设置此卷所需的访问权限:
将卷的访问权限设置为只读:
cinder readonly-mode-update <volume_id> true
$ cinder readonly-mode-update <volume_id> true
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
将
<volume_id
> 替换为所需卷的 ID。
-
将
将卷的访问权限设置为读写:
cinder readonly-mode-update <volume_id> false
$ cinder readonly-mode-update <volume_id> false
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
- 如果您将这个卷从实例分离以更改访问权限,则重新附加卷。如需更多信息,请参阅 将卷附加到实例。
3.9. 使用仪表板更改卷所有者 复制链接链接已复制到粘贴板!
要更改卷的所有者,您必须执行卷转让。卷转让由卷的所有者启动,在卷的新所有者接受转让后,卷的所有权更改已完成。
先决条件
- 访问 Red Hat OpenStack Platform (RHOSP) Dashboard (horizon)。如需更多信息,请参阅使用 OpenStack 控制面板管理云资源。
流程
- 以卷所有者身份登录控制面板。
- 选择 Projects > Volumes。
- 在要转让的卷的 Actions 列中,选择 Create Transfer。
在 Create Transfer 对话框中,输入转让的名称,再单击 Create Volume Transfer。
卷转让已创建,在 Volume Transfer 屏幕中,您可以捕获发送到接收者项目的
转让 ID
和授权密钥
。点 Download transfer credentials 按钮下载一个
.txt
文件,它包括了transfer name
,transfer ID
, 和authorization key
。注意授权密钥仅在 Volume Transfer 屏幕中提供。如果丢失了授权密钥,您必须取消转让并创建另一个传输来生成新的授权密钥。
关闭 Volume Transfer 屏幕,以返回到卷列表。
卷状态会变为
awaiting-transfer
,直到接收者项目接受转让为止
从仪表板接受卷转让
- 以接收者项目所有者登录控制面板。
- 选择 Projects > Volumes。
- 单击 Accept Transfer。
在 Accept Volume Transfer 对话框中,输入您从卷所有者接收的
转让 ID
和授权密钥
,然后单击 Accept Volume Transfer。卷现在出现在活动项目的卷列表中。
3.10. 使用 CLI 更改卷所有者 复制链接链接已复制到粘贴板!
要更改卷的所有者,您必须执行卷转让。卷转让由卷的所有者启动,在卷的新所有者接受转让后,卷的所有权更改已完成。
流程
- 以卷的当前所有者身份登录。
列出可用的卷:
cinder list
$ cinder list
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 启动卷转让:
cinder transfer-create <volume>
$ cinder transfer-create <volume>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
<volume
> 替换为您要传输的卷的名称或 ID。例如:Copy to Clipboard Copied! Toggle word wrap Toggle overflow cinder transfer-create
命令清除卷的所有权,并为转让创建一个id
和auth_key
。这些值可以被指定为,供另一个用户用来接受转让,并成为卷的新所有者。新用户现在可以声明卷的所有权。要做到这一点,用户应首先从命令行登录并运行:
cinder transfer-accept <transfer_id> <transfer_key>
$ cinder transfer-accept <transfer_id> <transfer_key>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
将
<transfer_id
> 替换为cinder transfer-create
命令返回的id
值。 将
<transfer_key
> 替换为cinder transfer-create
命令返回的auth_key
值。例如:
cinder transfer-accept 3f5dc551-c675-4205-a13a-d30f88527490 f03bf51ce7ead189
$ cinder transfer-accept 3f5dc551-c675-4205-a13a-d30f88527490 f03bf51ce7ead189
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
-
将
您可以使用以下方法查看所有可用卷传输:
cinder transfer-list
$ cinder transfer-list
第 4 章 使用块存储服务(cinder)执行高级操作. 复制链接链接已复制到粘贴板!
块存储卷为您的 overcloud 中的计算实例组成持久性存储。配置卷的高级功能,例如,使用卷快照,创建多附加卷、重新调整卷和迁移卷。
4.1. 创建卷快照 复制链接链接已复制到粘贴板!
您可以通过创建卷快照来保留卷在特定时间点的状态。然后,您可以使用快照克隆新卷。
卷备份与快照不同。备份保留卷中包含的数据,而快照会在特定时间点保留卷的状态。如果卷有现有的快照,则无法删除卷。卷备份可防止数据丢失,而快照则有助于克隆。
因此,快照后端通常与卷后端在一起,以便在克隆过程中最小化延迟。相反,备份存储库通常位于不同的位置,例如在典型的企业部署中在不同节点、物理存储甚至地理位置。这是为了防止备份存储库不受卷后端可能出现的任何损坏的影响。
有关卷备份的更多信息,请参阅 备份块存储卷 指南。
先决条件
- 要快照的卷。有关创建卷的更多信息,请参阅创建块存储卷。
- 访问 Red Hat OpenStack Platform (RHOSP) Dashboard (horizon)。如需更多信息,请参阅使用 OpenStack 控制面板管理云资源。
流程
- 登录控制面板。
- 选择 Project > Compute > Volumes。
- 为目标卷选择 Create Snapshot 操作。
- 为 快照 提供快照名称,再单击 创建卷快照。卷快照 选项卡显示所有快照。
对于从快照创建的块存储服务(cinder)的 RADOS 块设备(RBD)卷,您可以使用 CinderRbdFlattenVolumeFromSnapshot
heat 参数扁平化和删除对快照的依赖项。当您将 CinderRbdFlattenVolumeFromSnapshot
设置为 true
时,块存储服务扁平化 RBD 卷,并删除对快照的依赖项,同时扁平化所有未来的快照。默认值为 false
,这也是 cinder RBD 驱动程序的默认值。
请注意,扁平化快照会删除与父级共享任何潜在的块,并在后端上产生更大的快照大小,并增加快照创建时间。
验证
验证新快照出现在 Volume Snapshots 标签页中,或使用 CLI 列出卷快照,并验证快照是否已创建:
openstack volume snapshot list
$ openstack volume snapshot list
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.2. 从快照创建新卷 复制链接链接已复制到粘贴板!
您可以创建新卷作为卷快照的克隆。这些快照会在特定时间点保留卷的状态。
先决条件
- 要从中克隆并创建新卷的卷快照。有关创建卷快照的更多信息,请参阅 创建卷快照
- 访问 Red Hat OpenStack Platform (RHOSP) Dashboard (horizon)。如需更多信息,请参阅使用 OpenStack 控制面板管理云资源。
流程
- 登录控制面板。
- 选择 Project > Compute > Volumes。
- 在 Volume Snapshots 表中,为您要从中创建新卷的快照选择 Create Volume 操作。有关卷创建的更多信息,请参阅创建块存储卷。
如果要从加密卷快照创建新卷,您必须确保新卷至少大于旧卷。
验证
验证新卷出现在 Volumes 标签页中,或使用 CLI 列出卷并验证已创建了新卷:
openstack volume list
$ openstack volume list
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.3. 删除卷快照 复制链接链接已复制到粘贴板!
Red Hat OpenStack Platform (RHOSP) 17.1 使用 RBD CloneV2 API,这意味着您可以删除卷快照,即使它们有依赖项。如果您的 RHOSP 部署使用 director 部署的 Ceph 后端,则 director 会正确配置 Ceph 集群。
如果使用外部 Ceph 后端,您必须在 Ceph 集群上配置最小客户端。有关配置外部 Ceph 集群的更多信息,请参阅 Integrating the overcloud with an existing Red Hat Ceph Storage Cluster 中的配置现有的 Red Hat Ceph Storage 集群。
先决条件
- 要删除的卷快照。
- 访问 Red Hat OpenStack Platform (RHOSP) Dashboard (horizon)。如需更多信息,请参阅使用 OpenStack 控制面板管理云资源。
流程
- 登录控制面板。
- 选择 Project > Compute > Volumes。
- 在 Volume Snapshots 表中,为您要删除的快照选择 Delete Volume Snapshot 操作。
如果您的 OpenStack 部署使用 Red Hat Ceph 后端,以了解有关快照安全和故障排除的更多信息,请参阅 Red Hat Ceph Storage 后端中的保护和未保护的快照。
验证
验证快照是否不再存在在 Volume Snapshots 选项卡中,或使用 CLI 列出卷快照并验证快照是否已删除:
openstack volume snapshot list
$ openstack volume snapshot list
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.4. 将卷恢复到最新的快照 复制链接链接已复制到粘贴板!
要将卷恢复到其最新快照的状态,您可以更改卷的状态,而不是从这个快照创建新卷。
支持恢复到快照功能的块存储驱动程序,比没有驱动程序更快、更高效地执行此任务。例如,写时复制空间优化不会受到影响。有关驱动程序支持哪些功能,请联系您的驱动程序供应商。
限制
- 在多附加卷中使用恢复到快照功能可能会有限制。在使用此功能前,检查是否应用了这些限制。
- 在进行快照后,您无法恢复调整(扩展)的卷。
- 您不能在附加或正在使用的卷中使用 restore-to-snapshot 功能。
默认情况下,您无法在可引导的根卷中使用 restore-to-snapshot 功能。要使用这个功能,您必须使用
delete_on_termination=false
属性引导实例,以便在实例终止时保留引导卷。在这种情况下,要恢复到快照,您必须:- 删除实例,使卷可用,然后
- 恢复卷,然后恢复卷
- 从卷创建一个新实例。
先决条件
- 块存储(cinder) REST API 微版本 3.40 或更高版本。
- 您必须至少为卷创建了一个快照。
流程
- 提供您的凭据文件。
分离卷:
openstack server remove volume <instance_id> <vol_id>
$ openstack server remove volume <instance_id> <vol_id>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
将
<instance_id
> 和 <vol_id
> 替换为您要恢复的实例和卷的 ID。
-
将
找到您要恢复的快照的 ID 或名称。您只能恢复最新的快照。
cinder snapshot-list
$ cinder snapshot-list
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 恢复快照:
cinder --os-volume-api-version=3.40 revert-to-snapshot <snapshot_id>
$ cinder --os-volume-api-version=3.40 revert-to-snapshot <snapshot_id>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
将
<snapshot_id
> 替换为快照的 ID。
-
将
可选: 您可以使用
cinder snapshot-list
命令检查您要恢复的卷是否处于恢复状态。cinder snapshot-list
$ cinder snapshot-list
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重新附加卷:
openstack server add volume <instance_id> <vol_id>
$ openstack server add volume <instance_id> <vol_id>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
将
<instance_id
> 和 <vol_id
> 替换为您恢复的实例和卷的 ID。
-
将
验证
要检查流程是否成功,您可以使用
cinder list
命令验证您恢复的卷现在是否处于 available 状态。cinder list
$ cinder list
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.5. 上传卷到镜像服务(glance) 复制链接链接已复制到粘贴板!
您可以将现有卷作为镜像直接上传到镜像服务。
先决条件
- 访问 Red Hat OpenStack Platform (RHOSP) Dashboard (horizon)。如需更多信息,请参阅使用 OpenStack 控制面板管理云资源。
流程
- 登录控制面板。
- 选择 Project > Compute > Volumes。
- 选择目标卷的 Upload to Image 操作。
- 为卷提供 Image Name,并从列表中选择 Disk Format。
- 点 Upload。
要查看上传的镜像,请选择 Project > Compute > Images。新镜像会出现在 Images 表中。有关如何使用和配置镜像的详情,请参考 创建和管理镜像。
4.6. 可附加到多个实例的卷 复制链接链接已复制到粘贴板!
您可以创建一个多附件块存储卷,它可以附加到多个实例,并且这些实例可以同时读取和写入它。multi-attach 卷需要一个 multi-attach 卷类型。
您必须使用多附件或集群感知的文件系统来管理来自多个实例的写入操作。如果不这样做,会导致数据崩溃。
多附加卷的限制
- Block Storage (cinder)后端必须支持多附加卷。有关支持的后端的详情,请联系红帽支持。
您的 Block Storage (cinder)驱动程序必须支持多附加卷。支持 Ceph RBD 驱动程序。联系红帽支持,以验证您的厂商插件是否支持 multi-attach。有关厂商插件认证的更多信息,请参阅以下位置:
- 不支持只读多附件卷。
- 您可以实时迁移具有多附加卷的实例,但无法实时迁移多重附加卷。
- 不支持对多重附加卷的加密。
- Bare Metal Provisioning 服务(ironic) virt 驱动程序不支持 multi-attach 卷。只有在 libvirt virt 驱动程序才支持 multi-attach 卷。
- 您不能将附加的卷从 multi-attach 类型重新输入到非附加类型,您无法将非 multi-attach 类型重新输入到 multi-attach 类型。
- 在附加的卷迁移过程中,您无法使用多个读写附加作为源或目标卷的多附件。
- 您不能将多附件卷附加到 shelved 卸载的实例。
- 对附加到同一多附加卷的实例同时,(如创建或调整大小)的 API 调用可能会失败。如需更多信息,请参阅 https://access.redhat.com/solutions/7077470。
4.6.1. 创建多附加卷类型 复制链接链接已复制到粘贴板!
要将卷附加到多个实例,请在卷额外规格中将 multiattach
标志设置为 & lt;is> True
。当您创建 multi-attach 卷类型时,卷将继承 标记并成为多附件卷。
先决条件
- 您必须是项目管理员才能创建卷类型。
流程
提供 overcloud 凭证文件:
source ~/<credentials_file>
$ source ~/<credentials_file>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
将
<credentials_file
> 替换为您的凭据文件的名称,如overcloudrc
。
-
将
为 multi-attach 卷创建新卷类型:
cinder type-create multiattach
$ cinder type-create multiattach
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 为此 multi-attach 卷类型启用
multiattach
属性:cinder type-key multiattach set multiattach="<is> True"
$ cinder type-key multiattach set multiattach="<is> True"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来指定后端:
cinder type-key multiattach set volume_backend_name=<backend_name>
$ cinder type-key multiattach set volume_backend_name=<backend_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.6.2. 多附加卷重新处理 复制链接链接已复制到粘贴板!
您可以重新键入卷,使其能够多重附加,或者重新输入支持多重附加的卷,使其能够附加到多个实例。但是,您只能在不使用时重新键入卷,其状态为 可用
。
当您附加一个多附件卷时,一些虚拟机监控程序需要特殊考虑,比如当您禁用缓存时。目前,无法安全地更新附加的卷,同时保留整个卷。如果您试图重新输入附加到多个实例的卷,则重新处理会失败。
4.6.3. 创建一个多附件卷 复制链接链接已复制到粘贴板!
您可以创建一个可附加到多个实例的块存储卷,这些实例可以同时读取和写入它。
此流程在支持 multiattach
的任何后端上创建卷。因此,如果支持 multiattach
的两个后端,调度程序会决定使用哪个后端。如需更多信息,请参阅 多个后端上的卷分配。
先决条件
- 您的项目中提供了多附件卷类型。
流程
- 提供您的凭据文件。
运行以下命令来创建 multi-attach 卷:
cinder create <volume_size> --name <volume_name> --volume-type multiattach
$ cinder create <volume_size> --name <volume_name> --volume-type multiattach
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,以验证卷是否能够多重附加。如果卷可以 multi-attach,则
multiattach
字段等于True
。cinder show <vol_id> | grep multiattach
$ cinder show <vol_id> | grep multiattach | multiattach | True |
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
后续步骤
4.7. 在后端之间移动卷 复制链接链接已复制到粘贴板!
将卷从一个存储后端移动到另一个存储后端有很多原因,例如:
- 停用不再支持的存储系统。
- 更改卷的存储类或层。
- 更改卷的可用区。
使用 Block Storage 服务(cinder),您可以使用以下方法在后端间移动卷:
- Retype :只有卷所有者,管理员可以重新键入卷。retype 操作是在后端之间移动卷的最常见方法。如需更多信息,请参阅 块存储卷调整。
- migrate :只有管理员才能迁移卷。为特定的用例保留卷迁移,因为它受到限制,需要明确了解部署如何工作。如需更多信息,请参阅使用 仪表板在后端间迁移卷, 或使用 CLI 在后端间迁移卷。
限制
红帽支持在可用区内和跨可用区(AZ)间移动卷,但有以下限制:
- 卷必须具有 available 或 in-use 状态才能移动。
- 对使用中的卷的支持取决于驱动程序。
- 卷不能有快照。
- 卷不能属于组或一致性组。
4.7.1. 移动可用卷 复制链接链接已复制到粘贴板!
您可以在所有后端之间移动可用卷,但性能取决于您使用的后端。许多后端支持协助的迁移。有关协助迁移的后端支持的更多信息,请联系供应商。
支持的迁移可用于卷重新类型和卷迁移。通过协助的迁移,后端可以优化将数据从源后端迁移到目标后端,但两个后端都必须来自同一供应商。
红帽只支持带有多池后端的后端辅助迁移,或者在将 cinder migrate 操作用于单池后端时,如 RBD。
当无法支持在后端之间进行迁移时,块存储服务会执行通用卷迁移。
通用卷迁移要求在 Block Storage (cinder)服务将数据从源卷移动到 Controller 节点前连接两个后端的卷,并从 Controller 节点移到目标卷。无论源和目标后端中的存储类型如何,块存储服务都会无缝执行这个过程。
在执行通用卷迁移前,请确保您有足够的带宽。通用卷迁移的持续时间与卷的大小直接成比例,从而使操作比支持的迁移要慢。
4.7.2. 移动使用的卷 复制链接链接已复制到粘贴板!
没有可用于移动使用的卷的优化或辅助选项。当您移动使用的卷时,计算服务(nova)必须使用虚拟机监控程序将数据从源后端中的卷传输到目标后端的卷。这需要与运行卷正在使用的实例的虚拟机监控程序协调。
块存储服务(cinder)和计算服务协同工作,以执行此操作。Compute 服务管理大多数工作,因为数据通过 Compute 节点从一个卷复制到另一个卷。
在移动使用卷前,请确保您有足够的带宽。此操作的持续时间与卷的大小直接成比例,从而使操作比支持的迁移要慢。
限制
- 当卷附加到多个 nova 实例时,它们不会被移动。
- 不支持非块设备,将目标后端上的存储协议限制为 iSCSI、光纤通道(FC)和 RBD。
4.8. 块存储卷重新调整 复制链接链接已复制到粘贴板!
当您重新输入卷时,您可以将卷类型及其设置应用到现有卷。有关卷类型的更多信息,请参阅使用 卷类型分组卷配置。
只有卷所有者和管理员可以重新键入卷。
您可以重新键入新卷类型的额外规格可以应用到现有卷的卷。您可以重新键入卷,以将预定义的设置或存储属性应用到现有卷,例如:
- 将卷移动到不同的后端。
- 更改卷的存储类或层。
- 启用或禁用复制等功能。
卷重新调整是将卷从一个后端移动到另一个后端的标准方法。但是,重新制作卷不一定意味着您必须将卷从一个后端移到另一个后端。然而,在有些情况下,您必须移动卷才能完成重新输入:
-
新卷类型定义了不同的
volume_backend_name
。 -
当前卷类型的
volume_backend_name
未定义,该卷存储在新卷类型的volume_backend_name
指定的后端上。
将卷从一个后端移动到另一个后端可能需要大量时间和资源。因此,当重新类型需要移动数据时,块存储服务默认不会移动数据。除非将迁移策略指定为 retype 请求的一部分,否则操作会失败。如需更多信息,请参阅 Retyping a volume from the Dashboard 或 Retyping a volume from the CLI。
限制
其他资源
4.8.1. 从仪表板重新定义卷 复制链接链接已复制到粘贴板!
重新键入卷,以将卷类型及其设置应用到现有卷。
不支持将未加密的卷重新设置为相同大小的加密卷,因为加密卷需要额外的空间来存储加密数据。有关加密未加密的卷的更多信息,请参阅 加密未加密的卷。
先决条件
- 只有卷所有者和管理员可以重新键入卷。
- 访问 Red Hat OpenStack Platform (RHOSP) Dashboard (horizon)。如需更多信息,请参阅使用 OpenStack 控制面板管理云资源。
流程
- 以 admin 用户或卷所有者登录控制面板。
- 选择 Project > Compute > Volumes。
- 在您要迁移的卷的 Actions 列中,选择 Change Volume Type。
- 在 Change Volume Type 对话框中,选择目标卷类型并从 Type 列表中定义新后端。
- 如果要将卷迁移到另一个后端,请从 Migration Policy 列表中选择 On Demand。如需更多信息,请参阅在后端间移动卷。
- 点 Change Volume Type 开始迁移。
4.8.2. 通过 CLI 重新调整卷 复制链接链接已复制到粘贴板!
重新键入卷,以将卷类型及其设置应用到现有卷。
不支持将未加密的卷重新设置为相同大小的加密卷,因为加密卷需要额外的空间来存储加密数据。有关加密未加密的卷的更多信息,请参阅 加密未加密的卷。
先决条件
- 只有卷所有者和管理员可以重新键入卷。
流程
- 提供您的凭据文件。
输入以下命令重新输入卷:
cinder retype <volume name or id> <new volume type name>
$ cinder retype <volume name or id> <new volume type name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果重新类型操作需要将卷从一个后端移到另一个后端,则块存储服务需要特定的标记:
cinder retype --migration-policy on-demand <volume name or id> <new volume type name>
$ cinder retype --migration-policy on-demand <volume name or id> <new volume type name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.9. 使用控制面板在后端之间迁移卷 复制链接链接已复制到粘贴板!
使用 Block Storage 服务(cinder),您可以在可用区和跨可用区(AZ)之间迁移卷。这是将卷从一个后端移到另一个后端的最常用方法。
在高度自定义部署或必须停用存储系统的情况下,管理员可以迁移卷。在这两种用例中,多个存储系统共享相同的 volume_backend_name
,或者未定义。
限制
- 无法复制卷。
- 目标后端必须与卷的当前后端不同。
现有卷类型必须对新后端有效,这意味着必须满足以下条件:
-
卷类型不能在其额外 specs 中定义
backend_volume_name
,或者两个块存储后端都必须使用相同的backend_volume_name
配置。 - 两个后端都必须支持卷类型中配置的相同功能,如支持精简配置、密集置备或其他功能配置。
-
卷类型不能在其额外 specs 中定义
将卷从一个后端移动到另一个后端可能需要大量时间和资源。如需更多信息,请参阅在后端间移动卷。
先决条件
- 您必须是一个项目管理员才能迁移卷。
- 访问 Red Hat OpenStack Platform (RHOSP) Dashboard (horizon)。如需更多信息,请参阅使用 OpenStack 控制面板管理云资源。
流程
- 以 admin 用户身份登录控制面板。
- 选择 Admin > Volumes。
- 在您要迁移的卷的 Actions 列中,选择 Migrate Volume。
在 Migrate Volume 对话框中,从 Destination Host 下拉列表中选择目标主机。
注意要绕过主机迁移的任何驱动程序优化,请选择 Force Host Copy 复选框。
- 点 Migrate 开始迁移。
4.10. 使用 CLI 在后端之间迁移卷 复制链接链接已复制到粘贴板!
使用 Block Storage 服务(cinder),您可以在可用区和跨可用区(AZ)之间迁移卷。这是将卷从一个后端移到另一个后端的最常用方法。
在高度自定义部署或必须停用存储系统的情况下,管理员可以迁移卷。在这两种用例中,多个存储系统共享相同的 volume_backend_name
,或者未定义。
限制
- 无法复制卷。
- 目标后端必须与卷的当前后端不同。
现有卷类型必须对新后端有效,这意味着必须满足以下条件:
-
卷类型不能在其额外 specs 中定义
backend_volume_name
,或者两个块存储后端都必须使用相同的backend_volume_name
配置。 - 两个后端都必须支持卷类型中配置的相同功能,如支持精简配置、密集置备或其他功能配置。
-
卷类型不能在其额外 specs 中定义
将卷从一个后端移动到另一个后端可能需要大量时间和资源。如需更多信息,请参阅在后端间移动卷。
先决条件
- 您必须是一个项目管理员才能迁移卷。
流程
提供 overcloud 凭证文件:
source ~/<credentials_file>
$ source ~/<credentials_file>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
将
<credentials_file
> 替换为您的凭据文件的名称,如overcloudrc
。
-
将
输入以下命令来检索目标后端的名称:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 目标后端名称使用以下语法:
host@volume_backend_name#pool
。在示例输出中,块存储服务中有两个 LVM 后端:
localdomain@lvmdriver-1#lvmdriver-1
和localdomain@lvmdriver-2#lvmdriver-1
。请注意,两个后端都共享相同的volume_backend_name
,lvmdriver-1
。输入以下命令将卷从一个后端迁移到另一个后端:
cinder migrate <volume id or name> <new host>
$ cinder migrate <volume id or name> <new host>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.11. 管理并取消管理卷及其快照 复制链接链接已复制到粘贴板!
您可以使用 cinder manage
和 cinder unmanage
命令将卷添加到块存储卷服务(cinder-volume
)中或从卷中删除。通常,块存储卷服务管理它所创建的卷,以便它可以,例如,例如,列出、连接和删除这些卷。但是,您可以使用 cinder unmanage
命令从块存储服务中删除卷,使其不再列出、附加或删除这个卷。同样,您可以使用 cinder manage
命令将卷添加到块存储卷服务,以便它能够用于实例、列出、附加和删除此卷。
如果卷有快照,则无法取消管理。在这种情况下,您必须使用 cinder snapshot-unmanage
命令在取消管理卷前取消管理所有快照。同样,当您管理具有快照的卷时,您必须首先管理卷,然后使用 cinder snapshot-manage
命令管理快照。
您可以在并行升级 Red Hat OpenStack Platform (RHOSP)部署时使用这些块存储命令,在部署新版本的 RHOSP 时保持现有 RHOSP 版本运行。在这种情况下,您必须取消管理所有快照,然后取消管理卷从现有 RHOSP 中删除卷,然后您必须管理这个卷及其所有快照,将这个卷及其快照添加到新版本的 RHOSP 中。这样,您可以在运行现有云时将卷及其 snaphots 移到新的 RHOSP 版本。
另一种可能的场景是,如果您的一个存储阵列中有一个卷使用裸机,则可能的情况。然后,您决定将在这个机器上运行的软件移到云中,但您仍想使用这个卷。在这种情况下,您可以使用 cinder manage
命令将这个卷添加到块存储服务中。
您可以使用 cinder manageable-list
命令来确定块存储卷服务的存储阵列中是否有卷没有管理。此列表中的卷通常是用户已经管理的卷,或者已在存储阵列上手动创建的卷,而无需使用块存储卷服务。同样,cinder snapshot-manageable-list
命令会列出所有可管理的快照。
cinder manage
命令的语法特定于后端,因为识别卷所需的属性是特定于后端。大多数后端支持 source-name
和 source-id
属性,其他后端都需要设置额外的属性。有些后端可以列出可管理的卷,以及需要传递哪些参数。有关这些后端,请参阅供应商文档。cinder unmanage
命令的语法不特定于后端,您必须指定所需的卷名称或卷 ID。
同样,cinder snapshot-manage
命令的语法是特定于后端,因为识别快照所需的属性是特定于后端。cinder snapshot-unmanage
命令的语法不特定于后端,您必须指定所需的快照名称或快照 ID。
4.12. 加密未加密的卷 复制链接链接已复制到粘贴板!
您可以加密未加密的卷。
如果 cinder-backup
服务可用,请备份未加密的卷,然后将其恢复到新的加密卷。
如果 cinder-backup
服务不可用,则从未加密的卷创建一个 glance 镜像,并从此镜像创建新的加密卷。
先决条件
- 您必须是项目管理员才能创建加密卷。
- 要加密的未加密的卷。
流程
cinder-backup
服务可用:
提供 overcloud 凭证文件:
source ~/<credentials_file>
$ source ~/<credentials_file>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
将
<credentials_file
> 替换为您的凭据文件的名称,如overcloudrc
。
-
将
备份当前的未加密的卷:
cinder backup-create <unencrypted_volume>
cinder backup-create <unencrypted_volume>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
将
<unencrypted_volume
> 替换为未加密的卷的名称或 ID。
-
将
创建新加密卷:
cinder create <encrypted_volume_size> --volume-type <encrypted_volume_type>
cinder create <encrypted_volume_size> --volume-type <encrypted_volume_type>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
将
<encrypted_volume_size
> 替换为新卷的大小(以 GB 为单位)。这个值必须于未加密卷的大 1 GB,以便容纳加密元数据。 -
将
<encrypted_volume_type
> 替换为您需要的加密类型。
-
将
将未加密的卷的备份恢复到新的加密卷:
cinder backup-restore <backup> --volume <encrypted_volume>
cinder backup-restore <backup> --volume <encrypted_volume>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
将
<backup
> 替换为未加密的卷备份的名称或 ID。 -
将
<encrypted_volume
> 替换为新加密卷的 ID。
-
将
cinder-backup
服务不可用:
提供 overcloud 凭证文件:
source ~/<credentials_file>
$ source ~/<credentials_file>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
将
<credentials_file
> 替换为您的凭据文件的名称,如overcloudrc
。
-
将
创建未加密的卷的 glance 镜像:
cinder upload-to-image <unencrypted_volume> <new_image>
cinder upload-to-image <unencrypted_volume> <new_image>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
将
<unencrypted_volume
> 替换为未加密的卷的名称或 ID。 -
将
<new_image
> 替换为新镜像的名称。
-
将
从比镜像大 1 GB 的镜像创建一个新卷:
cinder volume create --size <size> --volume-type luks --image <new_image> <encrypted_volume_name>
cinder volume create --size <size> --volume-type luks --image <new_image> <encrypted_volume_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
将
<
size> 替换为新卷的大小。这个值必须比旧的未加密的卷大 1GB。 -
将
<new_image
> 替换为您从未加密的卷创建的镜像的名称。 -
将
<encrypted_volume_name
> 替换为新加密卷的名称。
-
将
4.13. Red Hat Ceph Storage 后端中的保护和未保护的快照 复制链接链接已复制到粘贴板!
当您使用 Red Hat Ceph Storage(RHCS)作为 Red Hat OpenStack Platform(RHOSP)部署的后端时,您可以在后端中将快照设置为 protected。不要通过 RHOSP 仪表板或 cinder snapshot-delete
命令删除受保护的快照,因为删除失败。
当发生这种情况时,首先在 RHCS 后端中将快照设置为 unprotected。然后,您可以正常通过 RHOSP 删除快照。
有关保护快照的更多信息,请参阅 Red Hat Ceph Storage 块设备指南中的保护块设备快照和取消保护块设备快照。
第 5 章 配置 Object Storage 服务 (swift) 复制链接链接已复制到粘贴板!
Red Hat OpenStack Platform (RHOSP) Object Storage 服务(swift)将其对象或数据存储在容器中。容器与文件系统中的目录类似,但它们无法嵌套。容器为用户提供了一种简单的方法来存储任何非结构化数据。例如,对象可以包含 photos、文本文件或镜像。存储的对象不会被压缩。
5.1. 对象存储环 复制链接链接已复制到粘贴板!
对象存储服务(swift)使用名为 ring 的数据结构来在集群中分发分区空间。这个分区空间是对象存储服务中的数据持久性引擎的核心。通过环,对象存储服务可以快速轻松地在集群中同步每个分区。
Ring 包含有关对象存储分区的信息,以及如何在不同的节点和磁盘间分布分区。当任何对象存储组件与数据交互时,会在环中本地执行快速查找来确定每个对象的可能的分区。
对象存储服务有三个环来存储以下类型的数据:
- 帐户信息
- 容器,以便于将对象组织到帐户下
- 对象副本
5.1.1. 检查集群健康状况 复制链接链接已复制到粘贴板!
对象存储服务(swift)在后台运行多个进程,以确保长期数据可用性、持久性和持久性。例如:
- 审核员会持续重新读取数据库和对象文件,并使用 checksums 进行比较,以确保没有静默的位。任何不再匹配其校验和的数据库或对象文件都是 quarantined,且在该节点上不可读取。然后,replicators 复制另一个副本,以便再次提供本地副本。
- 当您替换磁盘或节点或对象是 quarantined 时,对象和文件可能会消失。当发生这种情况时,replicators 会将缺少的对象或数据库文件复制到其他节点之一。
对象存储服务包含一个名为 swift-recon
的工具,用于从所有节点收集数据并检查整个集群健康状况。
流程
- 登录到其中一个 Controller 节点。
运行以下命令:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 可选: 使用
--all
选项返回附加输出。此命令查询 ring 上的所有服务器以获取以下数据:
- async pendings :如果集群负载过高,且进程无法快速更新数据库文件,则一些更新会异步进行。这些数字会随时间而减少。
- 复制指标 :查看复制时间戳;完整复制通过频繁出现几个错误。旧条目(例如,带有 6 个月前的时间戳的条目)表示节点上的复制还没有在最后的六个月内完成。
- Ring md5sums:这样可确保所有环文件在所有节点上都一致。
-
swift.conf
md5sums:这样可确保所有配置文件在所有节点上都一致。 - Quarantined 文件:所有节点必须具有 no 或非常少的 quarantined 文件。
- time-sync :所有节点必须同步。
5.1.2. 增加环分区电源 复制链接链接已复制到粘贴板!
Ring power 决定将资源(如帐户、容器或对象)映射到的分区。分区包含在资源存储在后端文件系统中的路径中。因此,更改分区电源需要将资源重新定位到后端文件系统中的新路径。
在大量填充的集群中,重新定位过程会非常耗时。为避免停机,在集群仍在运行时重新定位资源。您必须在不临时丢失数据访问或损害进程性能(如复制和审核)的情况下执行此操作。如需增加环分区电源的帮助,请联系红帽支持。
5.1.3. 对象存储服务的分区电源建议 复制链接链接已复制到粘贴板!
使用单独的 Red Hat OpenStack Platform (RHOSP) Object Storage 服务(swift)节点时,使用较高的分区电源值。
对象存储服务使用修改后的 哈希环 在磁盘和节点之间分发数据。默认有三个环:一个用于帐户,一个用于容器,另一个用于对象。每个环使用一个称为 分区电源 的固定参数。此参数设置可创建的最大分区数。
分区电源参数非常重要,只能为新容器及其对象更改。因此,在初始部署 前设置这个值非常重要。
对于 RHOSP director 部署的环境,默认分区 power 值为 10
。对于较小的部署来说,这是合理的值,特别是您只计划在 Controller 节点上为对象存储服务使用磁盘。
如果使用三个副本,下表可帮助您选择适当的分区电源:
分区 Power | 磁盘的最大数量 |
10 | ~ 35 |
11 | ~ 75 |
12 | ~ 150 |
13 | ~ 250 |
14 | ~ 500 |
设置过度高的分区电源值(例如,14
代表 40 个磁盘)对复制时间造成负面影响。
要设置分区电源,请使用以下资源:
parameter_defaults: SwiftPartPower: 11
parameter_defaults:
SwiftPartPower: 11
您还可以为新容器配置额外的对象服务器 ring。如果要在最初使用低分区电源的对象存储服务部署中添加更多磁盘,这非常有用。
5.1.4. 自定义环 复制链接链接已复制到粘贴板!
随着技术进步和存储容量的增加,创建自定义环是更新现有 Object Storage 集群的方法。
当您向集群添加新节点时,它们的特征可能与原始节点的不同。如果没有自定义调整,可能会使用新节点的较大的容量。或者,如果对环中的权重发生变化,数据分布可能会变得不均匀,这会降低安全性。
自动化可能无法与未来的技术趋势保持同步。例如,现在使用的一些较旧的 Object Storage 集群以前源自在 SSD 可用之前。
在集群不断增长和技术时,ring 构建器有助于管理对象存储。如需创建自定义环的帮助,请联系红帽支持。
5.2. 自定义对象存储服务 复制链接链接已复制到粘贴板!
根据 Red Hat OpenStack Platform (RHOSP)环境的要求,您可能需要自定义 Object Storage 服务(swift)的一些默认设置来优化部署性能。
5.2.1. 配置 fast-post 复制链接链接已复制到粘贴板!
默认情况下,Object Storage 服务(swift)会在其元数据的任何部分更改时完整复制对象。您可以使用 fast-post 功能来防止这种情况。当更改多个大型对象的内容类型时,fast-post 功能会节省时间。
要启用 fast-post 功能,请在 Object Storage 代理服务中禁用 object_post_as_copy
选项。
流程
编辑
swift_params.yaml
:cat > swift_params.yaml << EOF parameter_defaults: ExtraConfig: swift::proxy::copy::object_post_as_copy: False EOF
$ cat > swift_params.yaml << EOF parameter_defaults: ExtraConfig: swift::proxy::copy::object_post_as_copy: False EOF
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 部署或更新 overcloud 时包含参数文件:
openstack overcloud deploy [... previous args ...] \ -e swift_params.yaml
$ openstack overcloud deploy [... previous args ...] \ -e swift_params.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.2.2. 启用 at-rest 加密 复制链接链接已复制到粘贴板!
默认情况下,上传到 Object Storage 服务(swift)的对象是未加密的。因此,可以从文件系统中直接访问对象。如果在磁盘被丢弃前没有正确清除磁盘,这可能会带来安全风险。对象存储对象。如需更多信息,请参阅使用 Key Manager 服务管理 secret 中的加密 Object Storage (swift) at-rest 对象。
5.2.3. 部署独立对象存储服务集群 复制链接链接已复制到粘贴板!
您可以使用可组合角色概念来部署独立 Object Storage 服务(swift)集群,其最小其他服务,如 OpenStack Identity service (keystone)或 HAProxy。
流程
-
从
/usr/share/openstack-tripleo-heat-templates
复制roles_data.yaml
。 - 编辑新文件。
- 删除不需要的控制器角色,如 Aodh*、Ceilometer、Ceph*、Cinder*、Glance*、Ironic*、Manila*、Nova*、Octaana、Octaana、Swift*。
-
在
roles_data.yaml
中查找 ObjectStorage 角色。 -
将此角色复制到同一文件中的新角色,并将其命名为
ObjectProxy
。 将
SwiftStorage
替换为此角色中的SwiftProxy
。以下
roles_data.yaml
文件示例显示了示例角色。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用常规的
openstack deploy
命令部署 overcloud,包括新角色。openstack overcloud deploy --templates -r roles_data.yaml -e [...]
$ openstack overcloud deploy --templates -r roles_data.yaml -e [...]
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.2.4. 对象存储服务的磁盘建议 复制链接链接已复制到粘贴板!
为 Red Hat OpenStack Platform (RHOSP) Object Storage 服务(swift)使用一个或多个单独的本地磁盘。
默认情况下,RHOSP director 将系统磁盘上的 /srv/node/d1
目录用于对象存储服务。在 Controller 上,其他服务也会使用这个磁盘,磁盘可能会成为性能瓶颈。
以下示例是 RHOSP 编排服务(heat)自定义环境文件摘录。在每个 Controller 节点上,对象存储服务使用两个独立磁盘。两个磁盘的完整都包含一个 XFS 文件系统:
parameter_defaults: SwiftRawDisks: {"sdb": {}, "sdc": {}}
parameter_defaults:
SwiftRawDisks: {"sdb": {}, "sdc": {}}
SwiftRawDisks
定义节点上的每个存储磁盘。这个示例在每个 Controller 节点上同时定义了 sdb
和 sdc
磁盘。
在 RHEL 9 中,sdx
名称可能在 overcloud 节点之间有所不同,即使您的硬件配置是相同的。有关 定义用于 SwiftRawDisks
参数的磁盘的详情,请查看 Red Hat 知识库文章,在 Red Hat OpenStack Platform 17 中使用 OpenStack Swift。
在配置多个磁盘时,请确保 Bare Metal 服务(ironic)使用预期的根磁盘。
5.2.5. 使用外部 SAN 磁盘 复制链接链接已复制到粘贴板!
默认情况下,Object Storage 服务(swift)配置为配置为使用独立的本地磁盘。此配置可确保工作负载在所有磁盘上分布,这有助于在节点故障或其他系统问题期间最大程度降低性能影响。
在性能影响事件时,使用单个 SAN 的环境可能会遇到所有 LUN 的性能降低。对象存储服务无法缓解使用 SAN 磁盘的环境中的性能问题。因此,为对象存储使用额外的本地磁盘来满足性能和磁盘空间要求。
将外部 SAN 用于对象存储需要根据具体情况进行评估。如需更多信息,请联系红帽支持团队。
如果您选择将外部 SAN 用于对象存储,请评估并测试部署的性能要求。要确认您的 SAN 部署经过测试、受支持并满足您的性能要求,请联系您的存储供应商。
红帽不提供对以下问题的支持:
- 与使用外部 SAN 进行对象存储的性能相关的问题。
- 核心对象存储服务产品外出现的问题。要获得高可用性和性能的支持,请联系您的存储厂商。
流程
此模板是如何将两个设备(
/dev/mapper/vdb
和/dev/mapper/vdc
)用于对象存储的示例:parameter_defaults: SwiftMountCheck: true SwiftUseLocalDir: false SwiftRawDisks: {"vdb": {"base_dir":"/dev/mapper/"}, \ "vdc": {"base_dir":"/dev/mapper/"}}
parameter_defaults: SwiftMountCheck: true SwiftUseLocalDir: false SwiftRawDisks: {"vdb": {"base_dir":"/dev/mapper/"}, \ "vdc": {"base_dir":"/dev/mapper/"}}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.3. 添加或删除对象存储节点 复制链接链接已复制到粘贴板!
要向集群添加新的 Object Storage (swift)节点,您必须增加节点数,更新环,并同步更改。您可以通过添加节点到 overcloud 或扩展裸机节点来增加节点数。
要从集群中删除 Object Storage 节点,您可以执行简单删除或增量删除,具体取决于集群中的数据量。
5.3.1. 向 overcloud 添加节点 复制链接链接已复制到粘贴板!
您可以将更多节点添加到 overcloud。
全新安装 Red Hat OpenStack Platform (RHOSP)不包括某些更新,如安全勘误和程序错误修复。因此,如果您要扩展使用红帽客户门户网站或 Red Hat Satellite Server 的连接环境,RPM 更新不会应用到新节点。要将最新的更新应用到 overcloud 节点,您必须执行以下操作之一:
- 在 scale-out 操作后完成节点的 overcloud 更新。
-
使用
virt-customize
工具,在横向扩展操作前将软件包修改为基础 overcloud 镜像。有关更多信息,请参阅红帽知识库解决方案 使用 virt-customize 修改 Red Hat Linux OpenStack Platform Overcloud 镜像。
流程
创建名为
newnodes.json
的新 JSON 文件,其中包含您要注册的新节点的详情:Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
以
stack
用户身份登录 undercloud 主机。 查找
stackrc
undercloud 凭证文件:source ~/stackrc
$ source ~/stackrc
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注册新节点:
openstack overcloud node import newnodes.json
$ openstack overcloud node import newnodes.json
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 为每个新节点启动内省过程:
openstack overcloud node introspect \ --provide <node_1> [<node_2>] [<node_n>]
$ openstack overcloud node introspect \ --provide <node_1> [<node_2>] [<node_n>]
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
使用--
provide
选项将所有指定节点在内省后重置为available
状态。 -
将
<node_1&
gt;、<node_
2> 以及所有节点(直到 <node_n
>)替换为您要内省的每个节点的 UUID。
-
使用--
为每个新节点配置镜像属性:
openstack overcloud node configure <node>
$ openstack overcloud node configure <node>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.3.2. 扩展裸机节点 复制链接链接已复制到粘贴板!
要增加现有 overcloud 中裸机节点的数量,请在 overcloud-baremetal-deploy.yaml
文件中增加节点数并重新部署 overcloud。
先决条件
- 新的裸机节点已注册、内省,并可用于调配和部署。有关更多信息,请参阅为 overcloud 注册节点,以及创建 裸机节点硬件的清单。
流程
-
以
stack
用户身份登录 undercloud 主机。 查找
stackrc
undercloud 凭证文件:source ~/stackrc
$ source ~/stackrc
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
打开用于置备裸机节点的
overcloud-baremetal-deploy.yaml
节点定义文件。 增加您要扩展的角色的
count
参数。例如,以下配置将 Object Storage 节点数增加到 4:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 可选:为新节点配置预测节点放置。例如,使用以下配置在
node03
上置备一个新的 Object Storage 节点:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 可选:定义您要分配给新节点的任何其他属性。有关您可以在节点定义文件中配置节点属性的属性的更多信息,请参阅 裸机节点置备属性。
-
如果您使用 Object Storage 服务(swift)和整个磁盘 overcloud 镜像,
overcloud-hardened-uefi-full
,请根据磁盘大小以及/var
和/srv
的存储要求配置/srv
分区大小。如需更多信息,请参阅为对象存储服务配置整个磁盘分区。 置备 overcloud 节点:
openstack overcloud node provision \ --stack <stack> \ --network-config \ --output <deployment_file> \ /home/stack/templates/overcloud-baremetal-deploy.yaml
$ openstack overcloud node provision \ --stack <stack> \ --network-config \ --output <deployment_file> \ /home/stack/templates/overcloud-baremetal-deploy.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
将
&
lt;stack> 替换为置备裸机节点的堆栈的名称。如果未指定,则默认为overcloud
。 -
包含
--network-config
参数,为cli-overcloud-node-network-config.yaml
Ansible playbook 提供网络定义。 将
<deployment_file>
替换为用于部署命令生成的 heat 环境文件的名称,如/home/stack/templates/overcloud-baremetal-deployed.yaml
。注意如果从 Red Hat OpenStack Platform 16.2 升级到 17.1,则必须在
openstack overcloud node provision
命令升级过程中包含在升级过程中创建或更新的 YAML 文件。例如,使用/home/stack/tripleo-[stack]-baremetal-deployment.yaml
文件,而不是/home/stack/templates/overcloud-baremetal-deployed.yaml
文件。如需更多信息,请参阅 执行 overcloud 的使用和 准备 升级框架(16.2 到 17.1)。
-
将
在单独的终端中监控调配进度。当置备成功后,节点状态会从
available
改为active
:watch openstack baremetal node list
$ watch openstack baremetal node list
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用其他环境文件将生成的
overcloud-baremetal-deployed.yaml
文件添加到堆栈中,并部署 overcloud:openstack overcloud deploy --templates \ -e [your environment files] \ -e /home/stack/templates/overcloud-baremetal-deployed.yaml \ --disable-validations \ ...
$ openstack overcloud deploy --templates \ -e [your environment files] \ -e /home/stack/templates/overcloud-baremetal-deployed.yaml \ --disable-validations \ ...
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.3.3. 定义专用对象存储节点 复制链接链接已复制到粘贴板!
将额外的节点专用于 Red Hat OpenStack Platform (RHOSP) Object Storage 服务,以提高性能。
如果您要将额外的节点专用于对象存储服务,请编辑自定义 roles_data.yaml
文件,从 Controller 节点中删除 Object Storage 服务条目。具体来说,从 Controller
角色的 ServicesDefault
列表中删除以下行:
- OS::TripleO::Services::SwiftStorage
- OS::TripleO::Services::SwiftStorage
5.3.4. 更新和重新平衡对象存储环 复制链接链接已复制到粘贴板!
Object Storage 服务(swift)需要所有 Controller 和 Object Storage 节点上的相同的 ring 文件。如果替换 Controller 节点或 Object Storage 节点,则必须在 overcloud 更新后同步这些节点,以确保正常工作。
流程
以
stack
用户身份登录 undercloud,再创建一个临时目录:mkdir temp && cd temp/
$ mkdir temp && cd temp/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将 overcloud 环文件从之前存在的节点之一(本例中为Controller 0)下载到新目录中:
ssh tripleo-admin@overcloud-controller-0.ctlplane 'sudo tar -czvf - \ /var/lib/config-data/puppet-generated/swift_ringbuilder/etc/swift \ /{*.builder,*.ring.gz,backups/*.builder}' > swift-rings.tar.gz
$ ssh tripleo-admin@overcloud-controller-0.ctlplane 'sudo tar -czvf - \ /var/lib/config-data/puppet-generated/swift_ringbuilder/etc/swift \ /{*.builder,*.ring.gz,backups/*.builder}' > swift-rings.tar.gz
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 提取环,并更改到 ring 子目录:
tar xzvf swift-rings.tar.gz && cd \ var/lib/config-data/puppet-generated/swift_ringbuilder/etc/swift/
$ tar xzvf swift-rings.tar.gz && cd \ var/lib/config-data/puppet-generated/swift_ringbuilder/etc/swift/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 根据您的设备详情收集以下变量的值:
<device_name>
:openstack baremetal introspection data save \ <node_name> | jq ".inventory.disks"
$ openstack baremetal introspection data save \ <node_name> | jq ".inventory.disks"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow <node_ip>
:metalsmith <node_name> show
$ metalsmith <node_name> show
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
<port
> : 默认端口为600x
。如果您更改了默认值,请使用适用端口。 -
<builder_file
> : 第 3 步中的构建器文件名。 -
<weight
> 和 <zone
> 变量是用户定义的。
使用
swift-ring-builder
将新节点添加到现有环中。根据设备详情替换变量。注意您必须安装
python3-swift
RPM 以使用swift-ring-builder
命令。swift-ring-builder etc/swift/<builder_file> \ add <zone>-<node_ip>:<port>/<device_name> <weight>
$ swift-ring-builder etc/swift/<builder_file> \ add <zone>-<node_ip>:<port>/<device_name> <weight>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重新平衡环,以确保使用新设备:
swift-ring-builder etc/swift/<builder_file> rebalance
$ swift-ring-builder etc/swift/<builder_file> rebalance
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将修改后的环文件上传到 Controller 节点,并确保使用这些 ring 文件。使用类似以下示例的脚本来分发 ring 文件:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将环上传到所有节点并重启对象存储服务:
for DST in ${ALL}; do cat swift-rings.tar.gz | ssh "${DST}" 'sudo tar -C / -xvzf -' ssh "${DST}" 'sudo podman restart swift_copy_rings' ssh "${DST}" 'sudo systemctl restart tripleo_swift*' done
for DST in ${ALL}; do cat swift-rings.tar.gz | ssh "${DST}" 'sudo tar -C / -xvzf -' ssh "${DST}" 'sudo podman restart swift_copy_rings' ssh "${DST}" 'sudo systemctl restart tripleo_swift*' done
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.3.5. 同步节点更改并迁移数据 复制链接链接已复制到粘贴板!
在将新 ring 文件复制到其正确的文件夹后,您必须将更改的环文件发送到 Object Storage (swift)容器。
- 重要的
- 不要同时迁移所有数据。以 10% 为单位迁移数据。例如,将源设备的 weight 配置为 90.0,目标设备配置为 equal 10.0。然后,将源设备的权重配置为 80.0 和 20.0。继续逐步迁移数据,直到您完成这个过程。在迁移过程中,如果您同时移动所有数据,旧数据位于源设备上,但环指向所有副本的新目标设备。在 replicators 已将所有数据移至目标设备之前,无法访问数据。
在迁移过程中,对象存储环会重新分配数据的位置,然后复制器将数据移到新位置。随着集群活动增加,因为负载增加,复制过程会减慢。集群越大,复制传递所需的时间越长。这是预期的行为,但如果客户端访问当前被重新定位的数据,则日志文件中可能会导致 404 错误。当代理尝试从新位置检索数据时,但数据还没有在新位置中检索数据时,
swift-proxy
会在日志文件中报告 404 错误。当迁移逐渐时,代理会访问没有移动的副本,且不会发生错误。当代理尝试从替代副本检索数据时,日志文件中的 404 错误会被解决。要确认复制过程正在进行,请参阅复制日志。Object Storage 服务(swift)每五分钟发出复制日志。
流程
使用类似以下示例的脚本,将之前存在的 Controller 节点中的环文件分发到所有 Controller 节点,并重启这些节点上的对象存储服务容器:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 获取当前的 ring 文件集合:
ssh "${SRC}" 'sudo tar -czvf - \ /var/lib/config-data/puppet-generated/swift_ringbuilder/etc/swift \ /{*.builder,*.ring.gz,backups/*.builder}' > swift-rings.tar.gz
ssh "${SRC}" 'sudo tar -czvf - \ /var/lib/config-data/puppet-generated/swift_ringbuilder/etc/swift \ /{*.builder,*.ring.gz,backups/*.builder}' > swift-rings.tar.gz
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将环上传到所有节点并重启对象存储服务:
for DST in ${ALL}; do cat swift-rings.tar.gz | ssh "${DST}" 'sudo tar -C / -xvzf -' ssh "${DST}" 'sudo podman restart swift_copy_rings' ssh "${DST}" 'sudo systemctl restart tripleo_swift*' done
for DST in ${ALL}; do cat swift-rings.tar.gz | ssh "${DST}" 'sudo tar -C / -xvzf -' ssh "${DST}" 'sudo podman restart swift_copy_rings' ssh "${DST}" 'sudo systemctl restart tripleo_swift*' done
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
要确认数据正在移到新磁盘中,请在新存储节点上运行以下命令:
sudo grep -i replication /var/log/container/swift/swift.log
$ sudo grep -i replication /var/log/container/swift/swift.log
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.3.6. 删除 Object Storage 节点 复制链接链接已复制到粘贴板!
删除 Object Storage (swift)节点的方法有两种:
- 简单移除:此方法在一个操作中删除节点,并适合以较小的数据量为中心的集群。
- 增量移除:更改环,以降低您要删除的节点上磁盘的权重。如果要最大程度降低对存储网络使用量的影响,或者集群包含更多数量的数据,这个方法是适当的。
对于这两种方法,您遵循 缩减裸机节点 流程。但是,为了进行增量移除,请完成这些先决条件,以更改存储环,以减少您要删除的节点上的磁盘权重:
先决条件
- 对象存储环被更新并重新平衡。如需更多信息,请参阅更新和重新平衡对象存储环。
- Object Storage 环中的更改会被同步。如需更多信息,请参阅 同步节点更改和迁移数据。
有关替换对象存储节点的详情,请查看 缩减裸机节点 开始的先决条件。
5.3.7. 缩减裸机节点 复制链接链接已复制到粘贴板!
要缩减 overcloud 中的裸机节点数量,请标记您要从节点定义文件中的堆栈中删除的节点,重新部署 overcloud,然后从 overcloud 中删除裸机节点。
先决条件
- 成功安装 undercloud。有关更多信息,请参阅在 undercloud 上安装 director。
- 成功部署 overcloud。有关更多信息,请参阅 使用预置备节点配置基本 overcloud。
如果要替换 Object Storage 节点,请从您要删除的节点中复制数据到新的替换节点。等待复制通过在新节点上完成。在
/var/log/swift/swift.log
文件中检查复制传递进度。在传递完成后,Object Storage 服务(swift)向日志添加类似于以下示例的条目:Mar 29 08:49:05 localhost object-server: Object replication complete. Mar 29 08:49:11 localhost container-server: Replication run OVER Mar 29 08:49:13 localhost account-server: Replication run OVER
Mar 29 08:49:05 localhost object-server: Object replication complete. Mar 29 08:49:11 localhost container-server: Replication run OVER Mar 29 08:49:13 localhost account-server: Replication run OVER
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
流程
-
以
stack
用户身份登录 undercloud 主机。 查找
stackrc
undercloud 凭证文件:source ~/stackrc
$ source ~/stackrc
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
为您要缩减的角色减少
overcloud-baremetal-deploy.yaml
文件中的count
参数。 -
定义您要从堆栈中删除的每个节点的
主机名和
名称
(如果尚未在角色的instances
属性中定义)。 将属性
provisioned: false
添加到您要删除的节点。例如,要从堆栈中删除节点overcloud-objectstorage-1
,请在overcloud-baremetal-deploy.yaml
文件中包含以下片断:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重新部署 overcloud 后,堆栈中不再存在使用
provisioned: false
属性定义的节点。但是,这些节点仍然以置备状态运行。注意如果要临时从堆栈中删除节点,在使用
provisioned: false
属性部署 overcloud 后,您可以使用provisioned: true
属性重新部署 overcloud,以将节点返回到堆栈。从 overcloud 中删除节点:
openstack overcloud node delete \ --stack <stack> \ --baremetal-deployment \ /home/stack/templates/overcloud-baremetal-deploy.yaml
$ openstack overcloud node delete \ --stack <stack> \ --baremetal-deployment \ /home/stack/templates/overcloud-baremetal-deploy.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
&
lt;stack> 替换为置备裸机节点的堆栈的名称。如果未指定,则默认为overcloud
。注意不要将您要从堆栈中删除的节点作为命令参数包括在
openstack overcloud node delete
命令中。
删除 ironic 节点:
openstack baremetal node delete <ironic_node_uuid>
$ openstack baremetal node delete <ironic_node_uuid>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
<ironic_node_uuid
> 替换为节点的 UUID。删除已删除的节点的网络代理:
for AGENT in $(openstack network agent list \ --host <ironic_node_uuid> -c ID -f value) ; \ do openstack network agent delete $AGENT ; done
(overcloud)$ for AGENT in $(openstack network agent list \ --host <ironic_node_uuid> -c ID -f value) ; \ do openstack network agent delete $AGENT ; done
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 置备 overcloud 节点,以生成更新的 heat 环境文件,以包含在部署命令中:
openstack overcloud node provision \ --stack <stack> \ --output <deployment_file> \ /home/stack/templates/overcloud-baremetal-deploy.yaml
$ openstack overcloud node provision \ --stack <stack> \ --output <deployment_file> \ /home/stack/templates/overcloud-baremetal-deploy.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
将
<deployment_file>
替换为用于部署命令生成的 heat 环境文件的名称,如/home/stack/templates/overcloud-baremetal-deployed.yaml
。
-
将
使用其他环境文件,将 provisioning 命令生成的
overcloud-baremetal-deployed.yaml
文件添加到堆栈中,并部署 overcloud:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.4. 对象存储服务中的容器管理 复制链接链接已复制到粘贴板!
为了帮助使用对象存储服务(swift)中的组织,您可以使用伪文件夹。这些文件夹是可包含对象和嵌套的逻辑设备。例如,您可以创建一个 Images 文件夹来存储图片和用于存储视频的 Media 文件夹。
您可以在各个项目中创建一个或多个容器,以及每个容器中的一个或多个对象或伪文件夹。
5.4.1. 创建私有和公共容器 复制链接链接已复制到粘贴板!
使用控制面板在 Object Storage 服务(swift)中创建容器。
流程
- 在控制面板中,选择 Project > Object Store > Containers。
- 单击 Create Container。
指定 Container Name,并在 Container Access 字段中选择以下之一。
Expand 类型 描述 私有
限制对当前项目中的用户的访问权限。
公开
允许 API 访问具有公共 URL 的任何人。但是,在仪表板中,项目用户无法看到来自其他项目的公共容器和数据。
- 单击 Create Container。
可选:新容器使用默认存储策略。如果您定义了多个存储策略,例如,默认策略和启用纠删代码的另一个策略,您可以将容器配置为使用非默认存储策略:
swift post -H "X-Storage-Policy:<policy>" <container_name>
$ swift post -H "X-Storage-Policy:<policy>" <container_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
将 &
lt;policy
> 替换为您要使用容器的策略的名称或别名。 -
将
<container_name
> 替换为容器的名称。
-
将 &
5.4.2. 为容器创建伪文件夹 复制链接链接已复制到粘贴板!
使用控制面板为对象存储服务(swift)中的容器创建伪文件夹。
流程
- 在控制面板中,选择 Project > Object Store > Containers。
- 单击您要添加伪文件夹的容器的名称。
- 单击 Create Pseudo-folder。
- 在 Pseudo-folder Name 字段中指定名称,然后单击 Create。
5.4.3. 从对象存储服务删除容器 复制链接链接已复制到粘贴板!
使用控制面板从 Object Storage 服务(swift)中删除容器。
流程
- 在控制面板中,选择 Project > Object Store > Containers。
- 浏览 Containers 部分中的容器,并确保所有对象都已删除。如需更多信息 ,请参阅从对象存储服务中删除对象。
- 在容器箭头菜单中选择 Delete Container。
- 单击 Delete Container 以确认移除容器。
5.4.4. 将对象上传到容器 复制链接链接已复制到粘贴板!
如果您没有将实际文件上传到对象存储服务(swift),则对象仍会创建为稍后可用于上传该文件的占位符。
流程
- 在控制面板中,选择 Project > Object Store > Containers。
- 单击您要放置上传对象的容器的名称。如果容器中已存在伪文件夹,您可以单击其名称。
- 浏览您的文件,然后单击 Upload Object。
在 Object Name 字段中指定名称:
- 您可以使用 / 字符(如 Images/myImage.jpg )在名称中指定伪文件夹。如果指定的文件夹尚不存在,则在上传对象时会创建它。
- 对位置不唯一的名称,即对象已存在,覆盖对象的内容。
- 单击 Upload Object。
5.4.5. 在容器间复制对象 复制链接链接已复制到粘贴板!
使用控制面板在 Object Storage 服务(swift)中复制对象。
流程
- 在控制面板中,选择 Project > Object Store > Containers。
- 单击对象的容器或文件夹的名称(以显示对象)。
- 单击 Upload Object。
- 浏览要复制的文件,然后在其箭头菜单中选择 Copy。
指定以下内容:
Expand 字段 描述 目标容器
新对象的目标容器。
路径
目标容器中的伪文件夹;如果文件夹尚不存在,则会创建它。
目标对象名称
新对象的名称。如果您使用对位置不唯一的名称(即对象已存在),它会覆盖对象之前的内容。
- 单击 Copy Object。
5.4.6. 从对象存储服务中删除对象 复制链接链接已复制到粘贴板!
使用控制面板从 Object Storage 服务(swift)中删除对象。
流程
- 在控制面板中,选择 Project > Object Store > Containers。
- 浏览对象,并在其箭头菜单中选择 Delete Object。
- 单击 Delete Object 以确认对象已被删除。