- 向 cinder-api 发送 backup 请求
- 客户(可以是 OpenStack 最终用户,也可以是其他程序)向 cinder-api 发送请求:“请 backup 指定的 volume。” 这里我们将 backup volume “vol-1”。
- 这里我们将 backup volume “vol-1”。进入 GUI 操作菜单 Project -> Volumes -> Volumes。
- 选择“vol-1”,点击 “Create Backup”。为 Backup和Container命名。
|

|
- cinder-api 将接收到 backup volume 的请求
- 查看日志文件c-api
|
|
Jun 22 18:46:22 controller devstack@c-api.service[8283]: INFO cinder.api.openstack.wsgi
[None req-6ccc7d02-2350-4a73-82d8-1aed7fdf570f admin admin] http://172.16.1.17/volume/v3/2256dfc087b3452dad55ba5de03ecc10/backups
|
|
Jun 22 18:46:22 controller devstack@c-api.service[8283]: DEBUG cinder.api.openstack.wsgi
[None req-6ccc7d02-2350-4a73-82d8-1aed7fdf570f admin admin] Action: , calling method: <bound method BackupsController.create of <cinder.api.v3.backups... body: {: {, "description": "", "snapshot_id": null, "incremental": false, , ,
{{(pid=8285) process_stack /opt/stack/cinder/cinder/api/openstack/wsgi.py:868
|
这里因为 vol-1 已经 attach 到 instance,需要使用 --force 选项(使用命令行时: )
|
Jun 22 18:46:22 controller devstack@c-api.service[8283]: DEBUG cinder.api.contrib.backups
[None req-6ccc7d02-2350-4a73-82d8-1aed7fdf570f admin admin] {u'backup': {u'container': u'conta-1', u'description': u'', u'snapshot_id': None,
u'incremental': False, u'volume_id': u'be755f52-76ba-44bf-bf87-14ccd580336b', u'force': True,
u'name': u'back-1'
{{(pid=8285) create /opt/stack/cinder/cinder/api/contrib/backups.py:150
|
|
Jun 22 18:46:22 controller devstack@c-api.service[8283]: INFO cinder.api.contrib.backups
[None req-6ccc7d02-2350-4a73-82d8-1aed7fdf570f admin admin]
|
|
- cinder-api 发送消息
- cinder-api 发送 backup 消息。cinder-api 没有打印发送消息的日志,只能通过源代码查看 /opt/stack/cinder/cinder/backup/api.py,方法为 create。
|
 |
- cinder-backup 执行 backup 操作:查看c-vol日志
- 启动 backup 操作,mount NFS。
- 我没找到
- 在配置cinder-backup时,已经将 172:16.1.55/backup 目录计算节点挂载到
|
/opt/stack/data/cinder/backup_mount
/815381051c57f439493e8c2d80e70715/ |
控制节点(存储节点) 参考见08.存储Cinder→5.场景学习→8.Backup Volume→1.概述与配置
|
cloudman:
 我的:
|
Jun 22 18:46:23 controller cinder-volume[9747]: DEBUG cinder.volume.driver
[None req-6ccc7d02-2350-4a73-82d8-1aed7fdf570f admin None] Creating a new backup for volume volume-be755f52-76ba-44bf-bf87-14ccd580336b.
{{(pid=9891) get_backup_volume_temp_volume /opt/stack/cinder/cinder/volume/driver.py:1162 |
|
- 创建 volume 的临时快照。
|
|
Jun 22 18:46:24 controller cinder-volume[9747]: DEBUG oslo_concurrency.processutils
[None req-6ccc7d02-2350-4a73-82d8-1aed7fdf570f admin None] Running cmd (subprocess): sudo cinder-rootwrap /etc/cinder/rootwrap.conf env LC_ALL=C
{{(pid=9891) execute /usr/local/lib/python2.7/dist-packages/oslo_concurrency/processutils.py:372 |
|
- 创建存放 backup 的 container 目录
- 我没找到
- 容器conta-1可以根据backup_mount_point_base的设置找到 参考见08.存储Cinder→5.场景学习→8.Backup Volume→1.概述与配置
|
cloudman:
 我:
|
- 对临时快照数据进行压缩,并保存到 container 目录。
- 我没找到
|
cloudman:
 chunk (N-COUNT) 厚块;大块 [tʃʌŋk] chunkeddriver.py Generic base class to implement metadata, compression and chunked data operations
|
-
创建并保存 sha256(加密)文件和 metadata 文件。
- 我没找到
|
cloudman:
|
- 删除临时快照
|
|
Jun 22 18:47:01 controller cinder-volume[9747]: DEBUG oslo_concurrency.processutils
[None req-6ccc7d02-2350-4a73-82d8-1aed7fdf570f admin None] CMD "sudo cinder-rootwrap /etc/cinder/rootwrap.conf --config activation { retry_deactivation = 1} -f " returned: 0 in 0.788s
{{(pid=9891) execute /usr/local/lib/python2.7/dist-packages/oslo_concurrency/processutils.py:409 |
|
- Backup 完成后,我们可以查看一下 container 目录的内容
- volum..._backup...-00001,压缩后的 backup 文件
- volum_..._backup_..._metadata,metadata 文件。
- volum_..._backup_..._sha256file,加密文件。
|

另外,可以查看计算节点的共享目录:(在该目录的任何操作都会在
|
/opt/stack/data/cinder/backup_mount
/815381051c57f439493e8c2d80e70715/ |
同步观察到,实际上备份是存在该目录,nfs客户端将该共享目录挂载到了本地)
|
- 可以通过 cinder backup-list 查看当前存在的 backup
|
 |
- 另外cinder backup-create的--incremental选项,表示可以执行增量备份。如果之前做过普通(全量)备份,之后可以通过增量备份大大减少需要备份的数据量,是个很不错的功能。
|
 |