OpenStack - cinder 组件

时间:2024-04-08 09:33:07

简介

cinder 在虚拟机与具体存储设备之间引入了一层 “逻辑存储卷” 的抽象,为虚拟机提供持久化的块存储能力,实现虚拟机存储卷的创建、挂载、卸载、快照等生命周期管理。

cinder 本身并不是一种存储技术。它只是提供了一个中间抽象层,为后端不同的存储技术提供了统一的接口。不同的块设备服务厂商在 cinder 中以 driver 的形式实现这些接口来与 OpenStack 进行整合。

cinder 默认使用 LVM 作为后端存储。

结构

cinder 主要由 cinder-api、cinder-scheduler、cinder-volume 以及 cinder-backup 组成,它们之间通过 AMQP 消息队列进行通信。

  • cinder-api :cinder 的 HTTP 接口。
  • cinder-volume :运行在存储节点上,管理具体存储设备的存储空间。
  • cinder-scheduler :根据预定的策略选择合适的 cinder-volume 节点来处理用户请求。如果用户明确指定了具体的存储节点,则该节点上的 cinder-volume 会进行处理,而无需 cinder-scheduler 的参与。
  • cinder-backup :提供存储卷的备份功能,将存储卷备份到存储后端,如 swfit 。

OpenStack - cinder 组件

调度

FilterScheduler 首先使用指定的 Filters 过滤得到符合条件的 cinder-volume 节点;然后对得到的主机列表计算权重并排序,选择最佳的一个。
OpenStack - cinder 组件


管理卷

cinder-volume 用于管理存储卷的生命周期。

创建好的 volume 一般通过 iSCSI Target 的方式展现给 nova,这样 nova 就可以通过 iSCSI 协议将其连接到计算节点上供虚拟机使用。

  • iSCSI 属于传输层协议,规定了 iSCSI Target 和 iSCSI Initiator 间的通信机制。
  • iSCSI Target 通常指存储设备,iSCSI Initiator 则是指通过 iSCSI 协议访问 iSCSI Target 的客户端软件。
    OpenStack - cinder 组件

备份

cinder-backup 用于将 volume 备份到其他存储系统上去,默认使用 swift 作为备份后端。

不同的备份存储系统以 driver 的形式得以支持。

  • 创建备份:cinder-backup 通过 RPC 请求 cinder-volume 服务提供需要备份的卷。

    如果该卷处于可用状态,则直接将其返回给 cinder-backup。

    如果该卷正在被使用,则创建该卷的一份快照或克隆,然后返回快照或克隆给 cinder-backup。

    cinder-backup 收到备份卷后,把该卷挂载到本机,将数据备份到后端备份存储。

  • 恢复备份:cinder-backup 将需要进行数据还原的卷挂载到本机,然后将数据从备份存储读出,恢复到卷上。