第 1 章 OpenStack 中的持久性存储简介
OpenStack 可识别两种类型的存储: 临时和持久 。临时存储是仅与特定 Compute 实例关联的存储。该实例终止后,是其临时存储。这种类型的存储可用于基本运行时要求,如存储实例的操作系统。
另一方面,持久性存储 被设计为保留("持久性")独立于任何正在运行的实例。此存储用于需要被不同实例或特定实例生命周期之外的任何数据。OpenStack 使用以下类型的持久性存储:
- 卷
OpenStack 块存储服务(openstack-cinder)允许用户通过 卷 访问块存储设备。用户可以将卷附加到实例,以便使用通用持久性存储来增强其临时存储。卷可以在实例上分离和重新附加,只能通过它们所连接的实例访问。
卷还通过备份和快照提供固有冗余和灾难恢复。另外,您还可以加密卷以提高安全性。有关卷的更多信息,请参阅 第 2 章 块存储和卷。
注意实例也可以配置为使用绝对无临时存储。在这种情况下,块存储服务可以将镜像写入卷;反过来,该卷可以用作实例的可引导根卷。
- 容器
OpenStack Object Storage 服务(openstack-swift)提供完全分布式的存储解决方案,用于存储任何类型的静态数据或二进制 对象,如介质文件、大型数据集和磁盘镜像。对象存储服务通过 容器 将这些对象组织到这些对象。
虽然卷的内容只能通过实例访问,但容器内的对象可以通过 Object Storage REST API 访问。因此,对象存储服务可以通过接近云中的每个服务用作存储库。例如,数据处理服务(openstack-sahara)可以通过对象存储服务直接管理其所有二进制文件、数据输入、数据输出和模板。
- 共享
- OpenStack 共享文件系统服务(openstack-manila)提供了方法来轻松调配远程、可共享的文件系统 或共享。共享允许云中的租户开放共享存储,并可供多个实例同时使用。
OpenStack 共享文件系统服务在此发行版本中 作为技术预览提供,因此不受红帽完全支持。它只应用于测试,不应部署在生产环境中。有关技术预览功能的更多信息,请参阅覆盖范围详细信息。
每个存储类型都设计为满足特定的存储要求。容器是为广泛访问而设计的,例如,所有存储类型之间吞吐量、访问和容错能力的功能。对于服务,容器使用量更多。
另一方面,卷主要用于实例消耗。它们不享受与容器相同的访问和性能级别,但它们的功能集更大,并且具有比容器更多的原生安全功能。共享与卷类似,但可由多个实例使用。
以下章节会在特定存储标准的情况下详细讨论每种存储类型的架构和功能集。
1.1. 可扩展性和后端 复制链接链接已复制到粘贴板!
通常,集群存储解决方案提供更高的后端可扩展性。例如,在将 Red Hat Ceph 用作块存储后端时,您可以通过添加更多 Ceph OSD (对象存储守护进程)节点来扩展存储容量和冗余。Block Storage 和 Object Storage 服务都支持 Red Hat Ceph 作为后端。
块存储服务可以将多个存储解决方案用作离散后端。在后端级别,您可以通过添加更多后端并重启服务来扩展容量。块存储服务也具有大量支持的后端解决方案列表,其中一些具有额外的可扩展性功能。
默认情况下,对象存储服务在配置 的存储节点上使用 文件系统,并可使用尽可能多的空间。对象存储服务支持 XFS 和 ext4 文件系统,可以同时扩展为消耗可用的基础块存储。您还可以通过向存储节点添加更多存储设备来扩展容量。
共享文件系统服务置备由存储支持的共享,以及单独的 存储池。此池(通常由第三方后端服务管理)在文件系统级别上与存储提供共享。OpenStack 共享文件系统服务支持 NetApp,它可以配置为使用预先创建可用于存储的卷的存储池。在这个部署中,扩展涉及向池添加更多卷。