[ English | Indonesia | русский ]
存储架构¶
OpenStack 包含多个需要考虑的存储领域
块存储 (cinder)
对象存储 (swift)
镜像存储 (glance)
临时存储 (nova)
共享文件系统存储 (manila)
块存储 (cinder)¶
块存储 (cinder) 服务负责管理环境中存储设备上的卷。在生产环境中,设备通过存储协议(例如 NFS、iSCSI 或 Ceph RBD)向存储网络(`br-storage')提供存储,并通过存储管理 API 向管理网络(`br-mgmt')提供管理。实例通过计算主机上的虚拟机监控程序连接到存储网络上的卷。
下图说明了块存储如何连接到实例。
图示显示了以下步骤。¶
卷由指定的 ` |
|
卷创建后,` |
|
虚拟机监控程序连接到卷后,它将卷作为本地硬件设备呈现给实例。 |
重要提示
LVMVolumeDriver 被设计为参考驱动程序实现,不建议在生产环境中使用。LVM 存储后端是单服务器解决方案,不提供高可用性选项。如果服务器不可用,则该服务器上运行的 `cinder-volume` 服务管理的所有卷都将不可用。升级服务器上的操作系统软件包(例如,内核或 iSCSI)会导致存储连接中断,因为 iSCSI 服务(或主机)会重启。
由于 容器 iSCSI 连接的限制,在使用通过 iSCSI 连接的存储后端时,您必须将 `cinder-volume` 服务直接部署在物理主机上(而不是部署在容器中)。这包括 LVMVolumeDriver 以及许多商业存储设备的驱动程序。
注意
`cinder-volume` 服务不以高可用性配置运行。当 `cinder-volume` 服务配置为从多个主机或容器管理同一后端上的卷时,会安排一个服务来管理卷的生命周期,直到分配另一个服务来执行此操作。此分配可以通过 cinder-manage CLI 工具 进行。如果实现了 cinder volume active-active support spec,此配置可能会发生更改。
对象存储 (swift)¶
对象存储 (swift) 服务实现了一个高可用、分布式、最终一致的对象/blob 存储,可通过 HTTP/HTTPS 访问。
下图说明了数据如何被访问和复制。
客户端通过管理网络(`br-mgmt')上的负载均衡器访问 `swift-proxy` 服务。`swift-proxy` 服务通过存储网络(`br-storage')与对象存储主机上的账户、容器和服务进行通信。对象存储主机之间的复制通过复制网络(`br-repl')进行。¶
镜像存储 (glance)¶
镜像服务 (glance) 可以配置为将镜像存储在 glance_store 驱动程序 支持的各种存储后端上。
重要提示
当使用文件系统存储时,镜像服务本身没有机制来在镜像服务主机之间复制镜像。我们建议使用共享存储后端(通过文件系统挂载)来确保所有 `glance-api` 服务都能访问所有镜像。这样做可以防止在基础架构(控制平面)主机丢失时丢失对镜像的访问。
下图说明了在创建实例时,镜像服务、存储设备和 `nova-compute` 服务之间的交互。
图示显示了以下步骤。¶
1 |
当客户端请求镜像时,` |
2 |
当实例被调度在计算主机上创建时,` |
3 |
检索到镜像后,` |
临时存储 (nova)¶
当计算服务的 sabores 配置为向实例提供根磁盘或临时磁盘时,`nova-compute` 服务使用其临时磁盘存储位置来管理这些分配。
在许多环境中,临时磁盘存储在计算主机本地磁盘上,但对于生产环境,我们建议将计算主机配置为使用共享存储子系统。共享存储子系统允许在计算主机之间进行快速、实时的实例迁移,这在管理员需要对计算主机进行维护并希望将其迁移时非常有用。使用共享存储子系统还可以在计算主机离线时恢复实例。管理员可以将实例迁移到另一台计算主机并重新启动它。下图说明了存储设备、计算主机、虚拟机监控程序和实例之间的交互。
图示显示了以下步骤。¶
1 |
计算主机已配置为可以访问存储设备。计算主机通过存储网络(` |
2 |
` |
3 |
虚拟机监控程序将磁盘作为设备呈现给实例。 |