- 向 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]
POST 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: 'create', calling method: <bound method BackupsController.create of <cinder.api.v3.backups...
body: {"backup": {"force": true, "description": "", "snapshot_id": null, "incremental": false,
"volume_id": "be755f52-76ba-44bf-bf87-14ccd580336b", "container": "conta-1", "name": "back-1"
{{(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]
Creating new backup {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]
Creating backup of volume be755f52-76ba-44bf-bf87-14ccd580336b in container conta-1
|
|
- 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 lvcreate
--name volume-bdac267c-9149-4309-a80f-15fb3ad05dc0 --snapshot
stack-volumes-lvmdriver-1/volume-be755f52-76ba-44bf-bf87-14ccd580336b
{{(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 lvremove --config activation { retry_deactivation = 1}
-f stack-volumes-lvmdriver-1/volume-bdac267c-9149-4309-a80f-15fb3ad05dc0" 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选项,表示可以执行增量备份。如果之前做过普通(全量)备份,之后可以通过增量备份大大减少需要备份的数据量,是个很不错的功能。
| |