文章目录

  • 前言
  • 一、什么是Cinder?
  • 二、cinder架构
  • cinder-api
  • cinder-scheduler
  • cinder-volume
  • cinder-backup
  • 总结



前言

近期研究OpenStack相关技术,将学习过程中思路形成文字记录下来并进行分享,以便后期查阅。如有错误请不吝指出,我将虚心学习☺️


一、什么是Cinder?

操作系统得到存储空间一般有两种方式:

  • 块存储:挂接裸硬盘,分区,格式化,创建文件系统;或者直接使用裸硬盘存储数据
  • 文件系统存储:通过nfs等方式挂载远程的文件系统
    在块存储中,裸硬盘通常被称为volume(卷)。

理解了块存储,就能很容易的理解cinder。cinder是OpenStack平台中负责提供块存储服务的组件,它的任务就是管理volume从创建到删除的整个生命周期。

cinder的前身是nova中的nova-volume组件,后来被从nova中剥离出来成为一个独立的OpenStack组件。

二、cinder架构

cinder整体由以下主要模块组成:

  • cinder-api
  • cinder-scheduler
  • cinder-volume
  • cinder-backup

cinder-api

cinder-api对外提供REST API、响应请求、调用cinder-volume,是整个cinder组件的门户。具体来说cinder-api的任务就是:

  • 检查客户端传入的参数是否有效
  • 调用cinder其他子组件处理客户端请求
  • 将其他子组件处理的结果返回客户端

cinder-scheduler

当用户向cinder-api发出请求创建一个volume时,有以下两种场景:

  • 如果用户已经指定存储节点,则cinder-api会直接调用cinder-volume去创建volume
  • 当用户没有指定节点时,cinder-api会将请求发送给cinder-scheduler,然后cinder-scheduler会根据调度算法选择最合适的存储节点创建volume

cinder-volume

cinder-volume运行在存储节点上,负责管理具体存储设备的存储空间。每个存储节点都会运行cinder-volume服务,多个存储节点便组成了一个存储资源池。

  • cinder-volume运行在存储节点
    通过OpenStack平台对volume的指令最后都会由cinder-volume完成。
  • 真正的存储设备是volume provider
    cinder-volume与volume provider一起实现了对volume全生命周期的管理。

volume provider有开源的也有商业的,如LVM、Huawei、IBM、Dell等商业块存储解决方案。

openstack的keyston组件 openstack的cinder组件_ide

但是cinder在这里遇见了和neutron同样的问题,市面上有这么多volume provider,是将cinder-volume设计成与volume provider一一对应的形式吗,但这样就要设计很多代码相似度很高的cinder-volume。在这个问题上,cinder也运用了和neutron同样的思路:
通过驱动架构,cinder-volume为volume provider定义了统一的接口,对于volume provider来说,只要实现这些接口就可以以驱动的形式像插件一样插入OpenStack系统中。

cinder-backup

cinder-backup用于将volume备份到其他存储系统上,目前支持的备份存储系统有swift、ceph、IBM Tivoli storage manager(TSM)、glusterFS等,默认是swift。


总结

以上就是今天要讲的内容,本文仅仅简单介绍了cinder的概念,cinder为OpenStack提供了块存储管理能力,后面的文章将就源码做一个简单导读。