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

上一节我们创建了 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 操作。

优秀的个人博客,低调大师

微信关注我们

原文链接:https://yq.aliyun.com/articles/311608

转载内容版权归作者及来源网站所有!

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

相关文章

发表评论

资源下载

更多资源
优质分享Android(本站安卓app)

优质分享Android(本站安卓app)

近一个月的开发和优化,本站点的第一个app全新上线。该app采用极致压缩,本体才4.36MB。系统里面做了大量数据访问、缓存优化。方便用户在手机上查看文章。后续会推出HarmonyOS的适配版本。

Mario,低调大师唯一一个Java游戏作品

Mario,低调大师唯一一个Java游戏作品

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Apache Tomcat7、8、9(Java Web服务器)

Apache Tomcat7、8、9(Java Web服务器)

Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。

Sublime Text 一个代码编辑器

Sublime Text 一个代码编辑器

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。