类似Nova中虚拟机的生命周期管理由nova-compute服务来管理,Cinder中的Volume的生命周期则由cinder-volume服务来管理。
一 cinder-volume源码结构
cinder-volume服务代码位于cinder/volume
--api.py
--configuration.py
--driver.py
--flows
--iscsi.py
--manager.py
--qos_specs.py
--rpcapi.py
--targets
--utils.py
--volume_types.py
rpcapi.py文件定义了提供给RPC调用的接口VolumeAPI。
api.py文件中又对RPC的调用做了一层封装,其他模块需要导入的是api模块。
manager.py是cinder-volume最为核心的代码,其中VolumeManager类用于执行接收到的RPC请求,所有有关Volume生命周期管理的函数都涵盖在内。
不同的后端存储技术与存储厂商的设备以Driver的形式在Cinder中得以支持,driver.py文件定义了各种Driver的基类VolumeDriver,所有具体的Driver的实现都位于drivers子目录。
configuration.py文件则是为了所有Driver实现提供了一些配置相关的支持。
创建好的Volume一般通过iSCSI Target的方式展现给Nova,这样Nova可以通过iSCSI协议将其连接到计算节点上供虚拟机使用。Cinder支持多种提供iSCSI Target的方法,包括IET、ISER、LIO以及TGT等,相关实现位于targets目录,默认使用TGT(Linux SICI Target Framwork)。