Atom feed of this document
  

 迁移卷

OpenStack 可以在两个支持其卷类型的后端之间迁移卷。迁移一个卷会透明地将它的数据库从当前的后端移动到新的后端上。这是一个管理员功能,使用在一些功能上,包括存储撤离 (用于维护或停用),或手动优化 (例如,性能、可靠性或消耗) 等。

对于一个迁移来说这些工作流时可能的:

  1. 如果存储可以自行进行迁移,那么它是有机会这么做到的。这允许块设备存储驱动启用存储优化。如果后端不能够进行迁移,块设备存储会使用以下两种通用流程之一。

  2. 如果卷没有挂接的话,块存储服务会创建一个卷且从旧的卷复制数据到新的卷。

    [注意]注意

    多数的后端都是支持此功能的,但不是全部都支持。请参阅OpenStack 配置参考 中驱动文档获取更多细节。

  3. 如果是一个已经挂接到虚拟机实例的卷,块存储创建一个卷,然后调用计算从旧的复制数据到一个新的卷。目前此特性仅支持驱动为libvirt的计算。

举个例子,此场景展示了后端为两个LVM且可以讲挂接的卷从其中一个迁移到另外一个。此场景使用了第三个迁移流程。

首先,列出可用的后端:

# cinder get-pools
+----------+----------------------------------------------------+
| Property |                       Value                        |
+----------+----------------------------------------------------+
|   name   |           server1@lvmstorage-1#lvmstorage-1        |
+----------+----------------------------------------------------+
+----------+----------------------------------------------------+
| Property |                      Value                         |
+----------+----------------------------------------------------+
|   name   |           server2@lvmstorage-2#lvmstorage-2        |
+----------+----------------------------------------------------+
[注意]注意

仅有块存储V2 API支持 get-pools

你可以类似如下获取可用的后端:

# cinder-manage host list
server1@lvmstorage-1    zone1
server2@lvmstorage-2    zone1

但是它需要在后面增加池的名称。例如, server1@lvmstorage-1#zone1

接下来,作为管理员用户,你可以看到当前卷的状态(将例子中ID替换为你自己的):

$ cinder show 6088f80a-f116-4331-ad48-9afb0dfb196c
+--------------------------------+--------------------------------------+
|            Property            |                Value                 |
+--------------------------------+--------------------------------------+
|          attachments           |                [...]                 |
|       availability_zone        |                zone1                 |
|            bootable            |                False                 |
|           created_at           |      2013-09-01T14:53:22.000000      |
|      display_description       |                 test                 |
|          display_name          |                 test                 |
|               id               | 6088f80a-f116-4331-ad48-9afb0dfb196c |
|            metadata            |                  {}                  |
|     os-vol-host-attr:host      | server1@lvmstorage-1#lvmstorage-1    |
| os-vol-mig-status-attr:migstat |                 None                 |
| os-vol-mig-status-attr:name_id |                 None                 |
|  os-vol-tenant-attr:tenant_id  |   6bdd8f41203e4149b5d559769307365e   |
|              size              |                  2                   |
|          snapshot_id           |                 None                 |
|          source_volid          |                 None                 |
|             status             |                in-use                |
|          volume_type           |                 None                 |
+--------------------------------+--------------------------------------+

注意这些属性:

  • os-vol-host-attr:host - 卷的当前后端。

  • os-vol-mig-status-attr:migstat -卷迁移的状态(None意味着当前的过程没有做迁移)。

  • os-vol-mig-status-attr:name_id - 卷在后端中所基于的卷的 ID。在卷迁移之前,卷在后端存储中的名称可能是基于卷 ID 的 (详见 volume_name_template 配置参数)。例如,如果 volume_name_template 作为默认只保留 (volume-%s),您的第一个 LVM 后端有一个名为 volume-6088f80a-f116-4331-ad48-9afb0dfb196c 的逻辑卷。在迁移的过程中,如果您创建了一个卷并复制了数据,卷会得到新的名称,但保留了原本的 ID。这是由 name_id 显示的。

[注意]注意

如果你打算将某个存储节点撤下的话,你必须在执行完迁移之后停止cinder卷服务。

在运行 CentOS, Fedora, openSUSE, Red Hat Enterprise Linux, 或 SUSE Linux Enterprise,的节点上运行:

# service openstack-cinder-volume stop
# chkconfig openstack-cinder-volume off

在运行Ubuntu或Debian的节点上,运行:

# service cinder-volume stop
# chkconfig cinder-volume off

停止cinder卷服务能够防止已经分配到节点上的卷。

迁移此卷到第二个LVM后端:

$ cinder migrate 6088f80a-f116-4331-ad48-9afb0dfb196c server2@lvmstorage-2

你可以使用命令cinder show来查看迁移的状态。当正在迁移时,migstat 的属性会展示诸如migratingcompleting。若有错误发生,migstat 会显示为 None,且host属性会显示原来的主机。迁移成功到话,找本例而言输出类似如下结果:

+--------------------------------+--------------------------------------+
|            Property            |                Value                 |
+--------------------------------+--------------------------------------+
|          attachments           |                [...]                 |
|       availability_zone        |                zone1                 |
|            bootable            |                False                 |
|           created_at           |      2013-09-01T14:53:22.000000      |
|      display_description       |                 test                 |
|          display_name          |                 test                 |
|               id               | 6088f80a-f116-4331-ad48-9afb0dfb196c |
|            metadata            |                  {}                  |
|     os-vol-host-attr:host      |  server2@lvmstorage-2#lvmstorage-2   |
| os-vol-mig-status-attr:migstat |                 None                 |
| os-vol-mig-status-attr:name_id | 133d1f56-9ffc-4f57-8798-d5217d851862 |
|  os-vol-tenant-attr:tenant_id  |   6bdd8f41203e4149b5d559769307365e   |
|              size              |                  2                   |
|          snapshot_id           |                 None                 |
|          source_volid          |                 None                 |
|             status             |                in-use                |
|          volume_type           |                 None                 |
+--------------------------------+--------------------------------------+

注意migstat为None,host 为新的主机,以及name_id 由迁移所创建的卷的ID滞留值。如果你查看LVM后端的第二个值的话,你会看到逻辑卷volume-133d1f56-9ffc-4f57-8798-d5217d851862

[注意]注意

迁移对于非管理员用户是不可见的(举例来说,如通过卷的status)。还有,在迁移的过程中一些操作是不被允许的,诸如挂接/分离卷或者删除卷。如果一个用户在迁移过程中执行了诸如此来的一些操作,只会返回错误。

[注意]注意

目前还不允许带有快照的卷做迁移。

Questions? Discuss on ask.openstack.org
Found an error? Report a bug against this page


loading table of contents...