zoukankan      html  css  js  c++  java
  • Attach Volume 操作(Part I)

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

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

    上一节我们成功创建了基于 LVM provider 的 volume。每个 volume 实际上是存储节点上 VG 中的一个 LV。

    那么问题来了:存储节点上本地的 LV 如何挂载到计算节点的 instance 上呢?通常情况存储节点和计算节点是不同的物理节点。

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

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

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

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

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

    下面来看看 Attach 操作的流程图

    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 操作。

  • 相关阅读:
    vue开发chrome扩展,数据通过storage对象获取
    Vue手动集成less预编译器
    Google Translate寻找之旅
    Javascript Range对象的学习
    Javascript Promises学习
    SublimeText 建立构建Node js系统
    We're sorry but demo3 doesn't work properly without JavaScript enabled. Please enable it to continue.
    npm安装包出现UNMET DEPENDENCY报错
    (转载)命令行说明中格式 尖括号 中括号的含义
    Linux重启网卡服务Failed to start LSB: Bring up/down networking.
  • 原文地址:https://www.cnblogs.com/CloudMan6/p/5624930.html
Copyright © 2011-2022 走看看