08.存储Cinder→5.场景学习→08.Backup Volume→2.实操

背景:





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

  1. cinder-api 将接收到 backup volume 的请求
    1. 查看日志文件c-api
1
2
3
4
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
1
2
3
4
5
6
7
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 选项(使用命令行时: )
1
2
3
4
5
6
7
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
1
2
3
4
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
  1. cinder-api 发送消息
    1. cinder-api 发送 backup 消息。cinder-api 没有打印发送消息的日志,只能通过源代码查看 /opt/stack/cinder/cinder/backup/api.py,方法为 create。
  1. cinder-backup 执行 backup 操作:查看c-vol日志
    1. 启动 backup 操作,mount NFS。
      1. 我没找到
      2. 在配置cinder-backup时,已经将 172:16.1.55/backup 目录计算节点挂载到 
        1
        2
        /opt/stack/data/cinder/backup_mount
        /815381051c57f439493e8c2d80e70715/
        控制节点(存储节点)  参考见08.存储Cinder→5.场景学习→8.Backup Volume→1.概述与配置
cloudman:

我的:
1
2
3
4
5
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
  1. 创建 volume 的临时快照。
1
2
3
4
5
6
7
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
  1. 创建存放 backup 的 container 目录
    1. 我没找到
    2. 容器conta-1可以根据backup_mount_point_base的设置找到  参考见08.存储Cinder→5.场景学习→8.Backup Volume→1.概述与配置
cloudman:

我:
  1. 对临时快照数据进行压缩,并保存到 container 目录。
    1. 我没找到
cloudman:

chunk (N-COUNT) 厚块;大块 [tʃʌŋk]
chunkeddriver.py
Generic base class to implement metadata, compression and chunked data operations
  1. 创建并保存 sha256(加密)文件和 metadata 文件。
    1. 我没找到
cloudman:
  1. 删除临时快照
1
2
3
4
5
6
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
  1. Backup 完成后,我们可以查看一下 container 目录的内容
    1. volum..._backup...-00001,压缩后的 backup 文件
    2. volum_..._backup_..._metadata,metadata 文件。
    3. volum_..._backup_..._sha256file,加密文件。




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

猜你喜欢

转载自www.cnblogs.com/LeisureZhao/p/11185575.html