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

  • 相关阅读:
    博客新域名www.tecchen.tech
    [转载]Redis 持久化之RDB和AOF
    基于zookeeper集群的云平台-配置中心的功能设计
    22部漫威电影大合集和观影顺序
    类的嵌套定义、使用以及用头文件实现多个文件编程(匠心之作C++ p105 22 )
    Python的print格式
    Tensorflow2.0+Anaconda + Windows10+cuda10.0+python(转自豌豆代理)
    C语言中用scanf连续输入两个字符类型的问题(转)
    算法和流程图(及N-S流程图)
    git的安装及针对码云的操作(二)
  • 原文地址:https://www.cnblogs.com/CloudMan6/p/5624930.html
Copyright © 2011-2022 走看看