第 1 章 Red Hat OpenStack Platform 中持久性存储简介
本指南讨论了创建和管理持久性存储的步骤。在 Red Hat OpenStack Platform (RHOSP)中,此存储由三个主要服务提供:
- Block Storage (openstack-cinder)
- Object Storage (openstack-swift)
- 共享文件系统存储(openstack-manila)
这些服务提供不同类型的持久性存储,它们在不同用例中都有自己的一组优点。本指南讨论了用于一般企业存储要求的适用性。
您可以使用 RHOSP 仪表板或命令行客户端管理云存储。您可以使用任一方法执行大多数步骤。但是,您只能在命令行中完成一些更高级的步骤。本指南为仪表板提供尽可能使用的步骤。
有关 Red Hat OpenStack Platform 文档的完整套件,请参阅 Red Hat OpenStack Platform 文档。
本指南记录了使用 crudini
应用一些自定义服务设置。因此,您需要首先安装 crudini
软件包:
# dnf install crudini -y
RHOSP 识别两种类型的存储: ephemeral 和 persistent。临时存储是仅与特定 Compute 实例关联的存储。实例终止后,即其临时存储。这种类型的存储对基本运行时要求很有用,如存储实例的操作系统。
持久性存储 的设计目的是独立于任何正在运行的实例的存活(持久性)。此存储用于需要被不同实例重复使用的任何数据,或超过特定实例的生命周期。RHOSP 使用以下类型的持久性存储:
- 卷
OpenStack Block Storage 服务(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)节点来扩展存储容量和冗余。Block Storage、Object Storage (swift)和共享文件系统服务(manila)服务支持 Red Hat Ceph Storage 作为后端。
块存储服务可以使用多种存储解决方案作为离散后端。在后端级别,您可以通过添加更多后端并重新启动服务来扩展容量。块存储服务还具有大量支持的后端解决方案列表,其中的一些功能具有额外的可扩展性功能。
默认情况下,对象存储服务使用配置的存储节点上的文件系统,并且可以使用尽可能多的空间。对象存储服务支持 XFS 和 ext4 文件系统,它们都可以扩展为消耗尽可能多的底层块存储。您还可以通过向存储节点添加更多存储设备来扩展容量。
共享文件系统服务从被一个或多个第三方后端存储系统管理的指定存储池中置备文件共享。您可以通过增加服务可用的大小或数量来扩展此共享存储,或者向部署添加更多第三方后端存储系统。