设为首页 收藏本站
查看: 1020|回复: 0

[经验分享] Attach Volume 操作(Part I)

[复制链接]

尚未签到

发表于 2017-6-26 14:34:06 | 显示全部楼层 |阅读模式
   DSC0000.jpg
  上一节我们创建了 volume,本节讨论如何将 volume attach 到 Instance,今天是第一部分。
  Volume 的最主要用途是作为虚拟硬盘提供给 instance 使用。Volume 是通过 Attach 操作挂载到 instance 上的。本节我们就来详细讨论 Cinder 是如何实现 Attach 的。
  上一节我们成功创建了基于 LVM provider 的 volume。每个 volume 实际上是存储节点上 VG 中的一个 LV。
  那么问题来了:存储节点上本地的 LV 如何挂载到计算节点的 instance 上呢?通常情况存储节点和计算节点是不同的物理节点。
  解决方案是使用 iSCSI,如下图所示
   DSC0001.jpg
  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 操作的流程图
   DSC0002.jpg

  •   向 cinder-api 发送 attach 请求
  •   cinder-api 发送消息
  •   cinder-volume 初始化 volume 的连接
  •   nova-compute 将 volume attach 到 instance
  下面我们详细讨论每一个步骤。
向cinder-api发送attach请求
  客户(可以是 OpenStack 最终用户,也可以是其他程序)向 cinder-api 发送请求:“请将这个 volume attach 到指定的 instance 上。
  这里我们将 volume “vol-1” attach 到 instance ”c2”上。attach 操作之前,c2 上的虚拟磁盘如下:
   DSC0003.jpg
  进入 GUI 操作菜单 Project -> Compute -> Volumes
   DSC0004.jpg
  选择 volume “vol-1”,点击“Manage Attachments”
   DSC0005.jpg
  在 “Attach to Instance”下拉列表中,选择instance “c2”
   DSC0006.jpg
  点击 ”Attach Volume”
   DSC0007.jpg
  cinder-api 将接收到 attach volume 的请求,attach 请求实际上包含两个步骤:

  •   初始化 volume 的连接Volume 创建后,只是在 volume provider 中创建了相应存储对象(比如 LV),这时计算节点是无法使用的。Cinder-volume 需要以某种方式将 volume export 出来,计算节点才能够访问得到。这个 export 的过程就是“初始化 volume 的连接”。下面是 cinder-api 的日志文件 /opt/stack/logs/c-api.log 中记录的相关信息 DSC0008.jpg Initialize_connection 的具体工作主要由 cinder-volume 完成,将在后面详细讨论。
    DSC0009.jpg         
  •   Attach volume初始化 volume 连接后,计算节点将 volume 挂载到指定的 instance,完成 attach 操作。下面是 cinder-api 的日志文件 /opt/stack/logs/c-api.log 中记录的相关信息
    DSC00010.jpg
  Attach 的具体工作主要由 nova-compute 完成,也将在后面详细讨论。
cinder-api 发送消息
  cinder-api 分两步完成 attach 操作,所以对应地会先后向 RabbitMQ 发送了两条消息:

  •   初始化 volume 的连接cinder-api 没有打印发送消息的日志,只能通过源代码查看/opt/stack/cinder/cinder/volume/api.py,方法为 initialize_connection DSC00011.jpg
  •   Attach volumecinder-api 没有打印发送消息的日志,只能通过源代码查看
    DSC00012.jpg
  下一节我们讨论 cinder-volume 和 nova-compute 如何实现 attach 操作。

  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-388195-1-1.html 上篇帖子: 将 instance 部署到 OVS Local Network 下篇帖子: Neutron 如何支持多种 network provider
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表