通过对Openstack cinder cli及 cinder api的查阅,得知cinder支持块存储的备份及恢复功能。当前L版的cinder backup支持如下几种后端backup存储,包括ceph rbd、glusterfs、nfs、swift、tsm。各个存储后端以组件的方式与cinder集成。按照上述后端存储的开发规则,可以开发源生cinder backend s3 driver组件,使其支持cinder backup api。配合s3 multisite,可以达到AWS EBS的跨AZ迁移功能。考虑后续NOVA backup支持s3,使整体虚机跨AZ迁移达到可能。
openstack的官方backup项目freezer可以参考下列连接:
http://www.aixchina.net/Article/159885
http://qoofan.com/read/VGq1eVKaG9.html
对象存储类实现与swift backup非常相似,继承抽象类ChunkedBackupDriver,并实现它的所有方法,s3接口采用AWS官方的python boto库开发:
1. def put_container(self, container)
2. def get_container_entries(self, container, prefix)
3. def get_object_writer(self, container, object_name, extra_metadata=None)
4. def get_object_reader(self, container, object_name, extra_metadata=None)
5. def delete_object(self, container, object_name)
6. def _generate_object_name_prefix(self, backup)
7. def update_container_name(self, backup, container)
8. def get_extra_metadata(self, backup, volume)