跟nova相似,cinder也有很多组件,每个组件负责各自的业务,然后共同协作完成volume的管理。组件之间的通信方式与nova个组件之间的通信方式相同,都是通过消息队列进行通信。
cinder-api
类似于nova的nova-api组件,负责接受和处理外界的API请求。
cinder-scheduler
类似于nova的nova-scheduler组件,只不过它是筛选出合适的backend。模式相同,根据配置文件中配置的filter以及weight进行筛选。cinder中使用的filter种类较少,这里罗列几种比较常用的filter:
- AvailabilityZoneFilter会判断cinder host的availability zone是不是与目的az相同。不同则被过滤掉。
- CapacityFilter会判断host上的剩余空间free_capacity_gb大小,确保free_capacity_gb 大于volume 的大小。不够则被过滤掉。
- CapabilitiesFilter会检查host的属性是否和volume type中的extra specs是否完全一致。不一致则被过滤掉。
cinder-api和cinder-scheduler两个组件部署在控制节点即可。
cinder-volume
使用环境提供的driver进行存储资源的管理。
但谈何容易。