Backup 是将 volume 备份到别的地方(备份设备),将来可以通过 restore 操作恢复。
初看 backup 功能好像与 snapshot 很相似,都可以保存 volume 的当前状态,以备以后恢复。但二者在用途和实现上还是有区别的,具体表现在:
-
Snapshot 依赖于源 volume,不能独立存在;而 backup 不依赖源 volume,即便源 volume 不存在了,也可以 restore。
-
Snapshot 与源 volume 通常存放在一起,都由同一个 volume provider 管理;而 backup 存放在独立的备份设备中,有自己的备份方案和实现,与 volume provider 没有关系。
-
上面两点决定了 backup 具有容灾功能;而 snapshot 则提供 volume provider 内便捷的回溯功能。
配置 cinder-backup
Cinder 的 backup 功能是由 cinder-backup 服务提供的,devstack 默认没有启用该服务,需要手工启用。与 cinder-volume 类似,cinder-backup 也通过 driver 架构支持多种备份 backend,包括 POSIX 文件系统、NFS、Ceph、GlusterFS、Swift 和 IBM TSM。支持的driver 源文件放在 /opt/stack/cinder/cinder/backup/drivers/
本节我们将以 Ceph 为 backend 来研究 backup 操作。
需要在 /etc/cinder/cinder.conf 中作相应配置。
[DEFAULT]
verbose = true
backup_driver = cinder.backup.drivers.ceph
backup_ceph_conf=/etc/ceph/ceph.conf
backup_ceph_user = cinder-backup
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
然后手工启动 cinder-backup 服务
systemctl restart openstack-cinder-backup
/usr/bin/python /usr/local/bin/cinder-backup --config-file /etc/cinder/cinder.conf
一切准备就绪,下面我们来看 backup 操作的流程
-
向 cinder-api 发送 backup 请求
-
cinder-api 发送消息
-
cinder-backup 执行 backup 操作
下面我们详细讨论每一个步骤。
先创建一个volume cinder create --name volume1 2
一般情况下nova创建volume都是--display-name,cinder创建volume都是--name
--name :指定卷的名称 也可以--display-name 最后的2是卷的大小,默认不写的话是1G 可以随意指定,这里为2
删除volume
向 cinder-api 发送 backup 请求
客户(可以是 OpenStack 最终用户,也可以是其他程序)向 cinder-api 发送请求:“请 backup 指定的 volume。
这里我们将 backup volume “volume1”,目前 backup 只能在 CLI 中执行。
--name 可以不写,也可以写成--display-name 名字,列出的时候就是空,但是卷名称必须要写
一般情况下nova创建volume都是--display-name,cinder创建volume都是--name
cinder backup-create --name backvolume1 volume1
查看cinder backupl列表
cinder backup-list
另外我们可以查看一下 cinder backup-create 的用法。
这里有 --incremental 选项,表示可以执行增量备份。如果之前做过普通(全量)备份,之后可以通过增量备份大大减少需要备份的数据量,是个很不错的功能。
--force 允许或不允许备份卷卷时连接到一个实例
cinder backup-create --name incremental-volume1 --incremental volume1
查看增量备份之后的cinder backupl列表
cinder backup-list
cinder-api 接收到 backup volume 的请求。日志文件在 /opt/stack/logs/c-api.log。
cinder-api 发送消息
cinder-api 发送 backup 消息。cinder-api 没有打印发送消息的日志,只能通过源代码查看 /opt/stack/cinder/cinder/backup/api.py,方法为 create。
cinder-backup 执行 backup 操作
cinder-backup 收到消息后,通过如下步骤完成 backup 操作。
以上就是 volume backup 的分析。