揭开cinder-backup服务的神秘面纱

注意:转载请注明出处,欢迎大家交流学习!!!


cinder-backup的作用

cinder-backup用于将volume备份到其他存储系统上,目前支持的备份存储系统有swift、ceph、IBM Tivoli storage manager(TSM)、glusterFS等,默认是swift。


cinder-backup代码分析

Cinder-backup服务的代码位于/usr/lib/python2.7/site-packages/cinder/backup:

[root@NFJD-PSC-EBS-SV162 ~]# tree -L 2/usr/lib/python2.7/site-packages/cinder/backup

/usr/lib/python2.7/site-packages/cinder/backup

|-- __init__.py   指定并导入cinder-backupAPI类;

|-- __init__.pyc

|-- __init__.pyo

|-- api.py 处理所有与卷备份服务相关的请求;

Cat  api.py

class API(base.Base):卷备份管理的接口API,主要定义了卷的备份相关的三个操作的API

    create:实现卷的备份的建立;

    delete:实现删除卷的备份;

restore:实现恢复备份;

这三个操作都需要通过backuprpcapi定义的RPC框架类的远程调用来实现;

|-- api.pyc

|-- api.pyo

|-- chunkeddriver.py

|-- chunkeddriver.pyc

|-- chunkeddriver.pyo

|-- driver.py 所有备份驱动类的基类;

Cat driver.py

classBackupDriver(base.Base):所有备份驱动类的基类;

|-- driver.pyc

|-- driver.pyo

|-- drivers

|  |-- __init__.py

|  |-- __init__.pyc

|  |-- __init__.pyo

|  |-- bcec.py

|  |-- bcec.pyc

|  |-- bcec.pyo

|   |-- ceph.py   ceph备份服务实现;

cat  ceph.py

class CephBackupDriver(BackupDriver):Ceph对象存储的Cinder卷备份类;这个类确认备份Cinder卷到Ceph对象存储系统;

|  |-- ceph.pyc

|  |-- ceph.pyo

|  |-- fujitsu_onest.py

|  |-- fujitsu_onest.pyc

|  |-- fujitsu_onest.pyo

|  |-- nfs.py

|  |-- nfs.pyc

|  |-- nfs.pyo

|  |-- sheepdog.py

|  |-- sheepdog.pyc

|  |-- sheepdog.pyo

|   |-- swift.py   swift作为后端的备份服务的实现;

cat  swift.py 

classSwiftBackupDriver(BackupDriver):swift作为后端的备份服务的各种管理操作实现类;

|  |-- swift.pyc

|  |-- swift.pyo

|   |-- tsm.py IBM Tivoli存储管理(TSM)的备份驱动类;

cat  tsm.py

classTSMBackupDriver(BackupDriver):实现了针对TSM驱动的卷备份的备份、恢复和删除等操作;

|  |-- tsm.pyc

|  `-- tsm.pyo

|-- manager.py  卷备份的管理操作的实现,其中的backupmanager类用于执行接收到的rpc请求

Cat manager.py

classBackupManager(manager.SchedulerDependentManager):块存储设备的备份管理;继承自类 SchedulerDependentManager

主要实现的是三个远程调用的方法:

   create_backup:实现卷的备份的建立(对应api.py中的creat方法);

   restore_backup:实现恢复备份(对应api.py中的restore方法);

   delete_backup:实现删除卷的备份(对应api.py中的delete方法);

|-- manager.pyc

|-- manager.pyo

|-- rpcapi.py 类似于cinder-volume服务,rpcapi.py文件定义了提供给RPC调用的接口backupAPI

|-- rpcapi.pyc

`-- rpcapi.pyo


不同的备份存储系统已driver的形式得以支持,driver文件中定义了各种driver的基类backupdriver,所有具体driver的实现都位于drivers子目录,通过配置文件的backup_driver选项指定使用的driver。


cinder 驱动服务的配置在cinder.conf文件中,默认配置如下所示:

backup_driver=cinder.backup.drivers.swift


用Ceph作为后端存储的配置

backup_driver = cinder.backup.drivers.ceph

backup_ceph_conf=/etc/ceph/ceph.conf

backup_ceph_user = cinder

backup_ceph_chunk_size = 134217728

backup_ceph_pool = backups

backup_ceph_stripe_unit = 0

backup_ceph_stripe_count = 0



TSM作为后端存储的配置

backup_driver = cinder.backup.drivers.tsm

backup_tsm_compression = True    (BoolOpt)启用或禁用压缩备份

backup_tsm_password = password    (StrOpt) 运行TSM用户的密码(节点密码)

backup_tsm_volume_prefix = backup    (StrOpt)当备份到TSM时备份标识id的卷前缀



Swift作为后端存储的配置

backup_driver = cinder.backup.drivers.swift

backup_swift_url = http://localhost:8080/v1/AUTH

backup_swift_auth = per_user

backup_swift_user = <None>

backup_swift_key = <None>

backup_swift_container = volumebackups

backup_swift_object_size = 52428800

backup_swift_retry_attempts = 3

backup_swift_retry_backoff = 2

backup_compression_algorithm = zlib


当前cinder只支持设置一个备份存储后端,从mitaka开始,backup服务和volume服务解除了紧耦合,不再需要安装在同一台主机上,cinder-backup服务在接到情况后任何挑选

一个backup host来提供备份服务。

 

创建备份:cinder-backup通过rpc请求cinder-volume服务提供需要备份的卷(get_backup_device)。如果需要备份的卷处于available状态,直接把该卷返回给

cinder_backup,如果需要备份的卷正在被使用,则先根据该卷创建一份快照或者克隆卷,返回快照或者克隆卷给cinder-backup。Cinder-backup收到备份卷后,把备份卷挂载

到本机,将数据备份到后端存储,如下图所示:


 

恢复备份:cinder-backup将需要进行数据还要的卷挂载到本机,将数据从备份存储读出,恢复到卷上。

删除备份:cinder-backup直接调用backup driver中的接口进行删除


cinder-backup服务的相关操作


cinder type-create  EBS  创建EBS卷类型

cinder type-list  查看卷类型

cinder  create --display-name ling_volume 1   创建大小为1G的卷  (创建卷)

cinder  create --volume-type ebs-ssd  --display-name hing_volume 1     创建大小为1G,类型为ebs-ssd的卷(创建指定类型的卷)

cinder backup-create --container volumes_backup --display-name backuphing  hing_volume  备份hing_volume卷,卷名为backuphing  (备份卷)

cinder backup-restore  --volume-id b5391c29-bf67-4e73-8337-5b322a057316 hing_volume (恢复卷)

cinder delete b5391c29-bf67-4e73-8337-5b322a057316   (删除卷)

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

远虑近忧

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值