words from david

0%

Cinder 简介

本文主要是作为Cinder模块的原理简介,这里的东西其实在OpenStack 简介中说了大部分,增加了一幅工作架构图片。

Cinder是OpenStack项目的块存储模块,从Folsom版本加入。是原来的nova-volume模块的演化。主要负责OpenStack持久化存储卷的管理。

Cinder 架构

Cinder核心主要有四块:

  • cinder-api
  • cinder-volume
  • cinder-schedule
  • cinder-backup

数据状态位存储通过sql数据库实现,官方推荐是MySql。进程间通信采用消息队列,一般是RabbitMQ。

cinder-api: 对外通信接口,外部request都是通过cinder-api传入,然后进行相应的转发进行相应的处理。常见的操作包括创建删除管理卷或快照,或者对现有的卷进行备份。

cinder-volume:cinder管理volume的控制模块,负责对volume进行创建删除管理工作。设备驱动即存在在这个部分,通过驱动实现cinder-volume与物理或逻辑存储的通信。

cinder-schedule: cinder-schedule的工作是对不同的存储形式进行筛选。当cinder-api接收到创建volume的请求,一般会附带一个volume-type的参数,cinder-schedule的工作就是根据这个volume-type进行backend storage的路由。选择相应的后端存储进行创建volume的工作。

cinder-backup:这个模块是将现有卷数据进行备份,然后转储到对象存储中去。

Cinder 工作原理

Cinder对于OpenStack的意义类似于磁盘管理对于操作系统。就是一个存储管理系统,将物理存储虚拟化为系统可用的存储。目前各厂商驱动大都自主开发,集成在cinder/volume/driver模块下。后端存储可以是 NAS,SAN 等。存储数据的完整性和可用性也是由后端存储保障的。
详细的工作流:

request由cinder-api接收,然后分析,传送到MQ中,后端相应的模块从MQ中取出requst。然后根据指令进行必要的操作。图片已经说的相当详尽了。cinder 内部间通讯都是基于AMQP的。

总结

Cinder模块并不是一个特别复杂的模块,处于去耦的需要,在F版以后独立了出来。模块的主要功能也是进行存储管理的工作,做相应的全盘数据备份工作。
当然随着OpenStack项目的日益完善,社区的活跃,越来越多的厂商贡献代码,Cinder的功能自然也会愈来愈加强大。

参考文档

  1. cinder
  2. 块存储的世界(入门级)
  3. Cinder-grizzly-deep-dive-pub