Cinder

展开目录
Cinder
Cinder是什么?
  Cinder是OpenStack Block Storage service,即OpenStack的块存储服务。Cinder是为了将存储资源呈现给终端用户而设计的,即将块存储block storage作为服务对外提供。Cinder是将块存储block storage的管理进行虚拟化,并提供Cinder自己的API,使得用户无需了解存储和设备的类型和细节就可以通过这些API请求和使用存储资源。
Cinder的优势
  结构化组件:能够快速地添加功能。
  高可用性:可以扩展。
  缺陷容忍:通过隔离避免大面积的失败。
  可恢复的:失败可以容易进行诊断、调试和校正。
  开放的标准:是一个社区驱动的参考实现。
Cinder与OpenStack其它组件的交互
  交互图
  
Cinder内部组件
  Cinder包括四个组件:cinder-api、cinder-scheduler、cinder-volume和cinder-backup。
  cinder-api:cinder-api为整个Cinder提供对外的接口,对块存储资源的请求是通过cinder-api来接收的。cinder-api对外提供的接口是REST类型的接口。cinder-api接收到请求后,将其发送给cinder-scheduler是cinder服务的endpoint,提供rest接口,负责处理client请求,并将RPC请求发送至cinder-scheduler组件。
  cinder-scheduler:负责cinder请求调度,其核心部分就是scheduler_driver,作为scheduler manager的driver,负责cinder-volume具体的调度处理,发送cinderRPC请求到选择的cinder-volume。
  cinder-volume:负责具体的volume请求处理,由不同后端存储提供volume存储空间。
  cinder-backup:可以提供块设备的备份服务,与cinder-volume类似的是,通过加载不同设备厂商的驱动,可以将块设备备份到各个不同的存储系统或者磁盘阵列上。
Cinder内部组件交互
  Cinder内部组件交互图
  
  Cinder内部各组件之间使用基于RabbitMQ的RPC通信。cinder-scheduler和cinder-volume分别会 创建RPC连接,启动消费者线程,然后等待队列消息。当轮询查询到消息到达后,创建线程处理相关消息。