cinder 備份提供了三種驅動服務: Ceph,TSM,Swift 其中默認備份驅動服務為swift
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
配置 Nova 來掛載 Ceph RBD 塊設備
為了掛載 Cinder 塊設備(塊設備或者啟動卷),必須告訴 Nova 掛載設備時使用的用戶和 uuid 。libvirt會使用該用戶來和 Ceph 集群進行連接和認證。
rbd_user = cinder
rbd_secret_uuid = 457eb676-33da-42ec-9a8c-9293d545c337
完整版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
rbd_user = cinder
rbd_secret_uuid = 457eb676-33da-42ec-9a8c-9293d545c337
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
代碼分析
backup(/cinder/backup/)
/cinder/backup/__init__.py:指定並導入cinder-backup的API類;
/cinder/backup/api.py:處理所有與卷備份服務相關的請求;
class API(base.Base):卷備份管理的接口API,主要定義了卷的備份相關的三個操作的API:
create:實現卷的備份的建立;
delete:實現刪除卷的備份;
restore:實現恢復備份;
這三個操作都需要通過backup_rpcapi定義的RPC框架類的遠程調用來實現;
/cinder/backup/driver.py:所有備份驅動類的基類;
class BackupDriver(base.Base):所有備份驅動類的基類;
/cinder/backup/manager.py:卷備份的管理操作的實現;
class BackupManager(manager.SchedulerDependentManager):塊存儲設備的備份管理;繼承自類 SchedulerDependentManager;
主要實現的是三個遠程調用的方法:
create_backup:實現卷的備份的建立(對應api.py中的creat方法);
restore_backup:實現恢復備份(對應api.py中的restore方法);
delete_backup:實現刪除卷的備份(對應api.py中的delete方法);
/cinder/backup/drivers/ceph.py:ceph備份服務實現;
class CephBackupDriver(BackupDriver):Ceph對象存儲的Cinder卷備份類;這個類確認備份Cinder卷到Ceph對象存儲系統;
/cinder/backup/drivers/swift.py:用swift作為后端的備份服務的實現;
class SwiftBackupDriver(BackupDriver):用swift作為后端的備份服務的各種管理操作實現類;
/cinder/backup/drivers/tsm.py:IBM Tivoli存儲管理(TSM)的備份驅動類;
class TSMBackupDriver(BackupDriver):實現了針對TSM驅動的卷備份的備份、恢復和刪除等操作;
具體操作
創建卷 cinder create --display-name volume1 1 備份卷 cinder backup-create --container volumes_backup --display-name backuptoswift volume1 恢復卷 cinder backup-restore --volume-id cb0fe233-f9b6-4303-8a61-c31c863ef7ce volume1 刪除卷 cinder backup-delete 1b9237a4-b384-4c8e-ad05-2e2dfd0c698c
