Cinder
Cinder(Block Storage service)提供对volume从创建到删除整个生命周期的管理,从instance的角度看,挂载的每一个volume都是一块硬盘。
在openstack最小化安装中,可以选择不安装Cinder服务,此时所有的虚拟机的磁盘数据都会写入到启动这个虚拟机的计算节点上的本地磁盘。因此会面临数据丢失的风险。
所以在生产环境中,Cinder服务可以帮助我们将虚拟机的磁盘和计算节点分离,这样既安全又方便迁移。
Cinder组件
cinder-api
负责接收和处理外界的API请求,通过消息队列服务调用cinder-volume执行操作。
cinder-volume
cinder-volume服务运行在存储节点上,用于管理存储空间,主要执行卷管理相关的功能管理,与volume provider协调工作,OpenStack对Volume的操作,最后都是交给cinder-volume来完成的。
cinder-volume自身并不管理真正的存储设备,存储设备是由 volume provider管理的。cinder-volume与 volume provider一起实现volume生命周期的管理。
cinder-scheduler
scheduler通过调度算法选择最合适的存储节点创建volume,功能和nova-scheduler类似。
cinder-backup
cinder-backup服务用于将Cinder卷备份到其他的存储系统上去。和 cinder-volume
服务一样, 可以通过驱动框架和各种storage providers交互。
Volume Provider
Cinder支持多种volume provider,包括 LVM, NFS, Ceph, GlusterFS等存储系统。 更多volumn provider可参考support-matrix。
cinder-volume为这些volume provider定义了统一的driver接口,volume provider只需要实现这些接口,就可以driver的形式在OpenStack中使用。
下面是cinder driver的架构示意图: