Attach Volume 操做(Part I) - 天天5分钟玩转 OpenStack(53)

上一节咱们建立了 volume,本节讨论如何将 volume attach 到 Instance,今天是第一部分。api

Volume 的最主要用途是做为虚拟硬盘提供给 instance 使用。Volume 是经过 Attach 操做挂载到 instance 上的。本节咱们就来详细讨论 Cinder 是如何实现 Attach 的。服务器

上一节咱们成功建立了基于 LVM provider 的 volume。每一个 volume 其实是存储节点上 VG 中的一个 LV。架构

那么问题来了:存储节点上本地的 LV 如何挂载到计算节点的 instance 上呢?一般状况存储节点和计算节点是不一样的物理节点。ide

解决方案是使用 iSCSI,以下图所示spa

iSCSI 是 Client-Server 架构,有 target 和 initiator 两个术语。日志

Target
提供 iSCSI 存储资源的设备,简单的说,就是 iSCSI 服务器。对象

Initiator
使用 iSCSI 存储资源的设备,也就是 iSCSI 客户端。ci

Initiator 须要与 target 创建 iSCSI 链接,执行 login 操做,而后就可使用 target 上面的块存储设备了。 Target 提供的块存储设备支持多种实现方式,咱们实验环境中使用的是 LV。 Cinder 的存储节点 cinder-volume 默认使用 tgt 软件来管理和监控 iSCSI target,在计算节点 nova-compute 使用 iscsiadm 执行 initiator 相关操做。资源

下面来看看 Attach 操做的流程图get

  1. 向 cinder-api 发送 attach 请求

  2. cinder-api 发送消息

  3. cinder-volume 初始化 volume 的链接

  4. nova-compute 将 volume attach 到 instance

下面咱们详细讨论每个步骤。

向cinder-api发送attach请求

客户(能够是 OpenStack 最终用户,也能够是其余程序)向 cinder-api 发送请求:“请将这个 volume attach 到指定的 instance 上。

这里咱们将 volume “vol-1” attach 到 instance ”c2”上。 attach 操做以前,c2 上的虚拟磁盘以下:

进入 GUI 操做菜单 Project -> Compute -> Volumes

选择 volume “vol-1”,点击“Manage Attachments”

在 “Attach to Instance”下拉列表中,选择instance “c2”

点击 ”Attach Volume”

cinder-api 将接收到 attach volume 的请求,attach 请求实际上包含两个步骤:

  1. 初始化 volume 的链接
    Volume 建立后,只是在 volume provider 中建立了相应存储对象(好比 LV),这时计算节点是没法使用的。Cinder-volume 须要以某种方式将 volume export 出来,计算节点才可以访问获得。这个 export 的过程就是“初始化 volume 的链接”。 下面是 cinder-api 的日志文件 /opt/stack/logs/c-api.log 中记录的相关信息Initialize_connection 的具体工做主要由 cinder-volume 完成,将在后面详细讨论。

  2. Attach volume
    初始化 volume 链接后,计算节点将 volume 挂载到指定的 instance,完成 attach 操做。下面是 cinder-api 的日志文件 /opt/stack/logs/c-api.log 中记录的相关信息

Attach 的具体工做主要由 nova-compute 完成,也将在后面详细讨论。

cinder-api 发送消息

cinder-api 分两步完成 attach 操做,因此对应地会前后向 RabbitMQ 发送了两条消息:

  1. 初始化 volume 的链接
    cinder-api 没有打印发送消息的日志,只能经过源代码查看 /opt/stack/cinder/cinder/volume/api.py,方法为 initialize_connection

  2. Attach volume
    cinder-api 没有打印发送消息的日志,只能经过源代码查看

下一节咱们讨论 cinder-volume 和 nova-compute 如何实现 attach 操做。

相关文章
相关标签/搜索