2019独角兽企业重金招聘Python工程师标准>>>

cinder-volume 支持多种 volume provider,前面我们一直使用的是默认的 LVM,本节我们将增加 NFS volume provider。

虽然 NFS 更多地应用在实验或小规模 cinder 环境,由于性能和缺乏高可用的原因在生产环境中不太可能使用,但是学习 NFS volume provider 的意义在于:
1. 理解 cinder-volume 如何支持多 backend
2. 更重要的,可以理解 cinder-volume,nova-compute 和 volume provider 是如何协同工作,共同为 instance 提供块存储。
3. 举一反三,能够快速理解并接入其他生产级 backend ,比如 Ceph,商业存储等。

下图展示了 cinder、nova 是如何与 NFS volume provider 协调工作的。

NFS Volume Provider
就是我们通常说的 NFS Server,提供远程 NFS 目录,NFS Clinet 可以 mount 这些远程目录到本地,然后像使用本地目录一样创建、读写文件以及子目录。

cinder-volume
存储节点通过 NFS driver 管理 NFS volume provider 中的 volume,这些 volume 在 NFS 中实际上是一个个文件。

nova-compute
计算节点将 NFS volume provider 存放 volume 的目录 mount 到本地,然后将 volume 文件作为虚拟硬盘映射给 instance。

这里有几点需要强调:

  1. 在 Cinder 的 driver 架构中,运行 cinder-volume 的存储节点和 Volume Provider 可以是完全独立的两个实体。 cinder-volume 通过 driver 与 Volume Provider 通信,控制和管理 volume。

  2. Instance 读写 volume 时,数据流不需要经过存储节点,而是直接对 Volume Provider 中的 volume 进行读写。 正如上图所示,存储节点与 NFS Volume Provider 的连接只用作 volume 的管理和控制(绿色连线);真正的数据读写,是通过计算节点和 NFS Volume Proiver 之间的连接完成的(紫色连线)。这种设计减少了中间环节,存储节点不直接参与数据传输,保证了读写效率。

  3. 其他 Volume Provider(例如 ceph,swift,商业存储等)均遵循这种控制流与数据流分离的设计。

配置 NFS Volume Provider

在实验环境中,NFS volume provider 的 NFS 远程目录为 192.168.104.11:/storage cinder-volume 服务节点上 mount point 为 /nfs_storage。

在 /etc/cinder/cinder.conf 中添加 nfs backend。

  1. enabled_backends = lvmdriver-1,nfs 让 cinder-volume 使用 nfs backend

  2. [nfs] 中详细配置 nfs backend。包括:

    a) 指定存储节点上 /nfs_storage 为 nfs 的 mount point。

nfs_mount_point_base = /nfs_storage

b) 查看 /etc/cinder/nfs_shares 活动 nfs 共享目录列表。 nfs_shares_config = /etc/cinder/nfs_shares,其内容为

列表中只有 192.168.104.11:/storage。如果希望有多个 nfs 共享目录存放 volume,则可以添加到该文件中。

c) nfs volume driver。

volume_driver=cinder.volume.drivers.nfs.NfsDriver

d) 设置 volume backend name。在 cinder 中需要根据这里的 volume_backend_name 创建对应的 volume type,这个非常重要。 volume_backend_name = nfs

重启 cinder-volume,cinder service-list 确认 nfs cinder-volume 服务正常工作。

创建 nfs volume type。

打开GUI页面Admin -> System -> Volumes -> Volume Types,点击 “Create Volume Type”。

命名 nfs,点击“Create Volume Type”。

选择 nfs volume tyep,点击下拉菜单“View Extra Specs”

点击“Create”,Key 输入 volume_backend_name ;Value 输入 nfs。

NFS volume provider 准备就绪,下一节我们将创建 NFS 为 backend 的 volume。

转载于:https://my.oschina.net/u/2397560/blog/714792

NFS Volume Provider(Part I) - 每天5分钟玩转 OpenStack(62相关推荐

  1. NFS Volume Provider(Part II) - 每天5分钟玩转 OpenStack(63)

    上一节我们将 NFS volume provider 配置就绪,本节将创建 volume. 创建 volume 创建 NFS volume 操作方法与 LVM volume 一样,唯一区别是在 vol ...

  2. Cinder 组件详解 - 每天5分钟玩转 OpenStack(47)

    Cinder 组件详解 - 每天5分钟玩转 OpenStack(47) 本节我们将详细讲解 Cinder 的各个子服务. cinder-api cinder-api 是整个 Cinder 组件的门户, ...

  3. LVM 类型的 Storage Pool - 每天5分钟玩转 OpenStack(8)

    http://www.cnblogs.com/CloudMan6/p/5277927.html LVM 类型的 Storage Pool - 每天5分钟玩转 OpenStack(8) LVM 类型的 ...

  4. 如何使用 OpenStack CLI - 每天5分钟玩转 OpenStack(22)

    http://www.cnblogs.com/CloudMan6/p/5402490.html 如何使用 OpenStack CLI - 每天5分钟玩转 OpenStack(22) 本节首先讨论 p_ ...

  5. Pause/Resume Instance 操作详解 - 每天5分钟玩转 OpenStack(34)

    Pause/Resume Instance 操作详解 - 每天5分钟玩转 OpenStack(34) 本节通过日志详细分析 Nova Pause/Resume 操作. 有时需要短时间暂停 instan ...

  6. 部署 DevStack - 每天5分钟玩转 OpenStack(17)

    http://www.cnblogs.com/CloudMan6/p/5357273.html 部署 DevStack - 每天5分钟玩转 OpenStack(17) 本节按照以下步骤部署 DevSt ...

  7. 每天5分钟玩转openstack跟学(一)预备知识

    前言:对于openstack我是一名小白,打算跟着CloudMan的<每天5分钟玩转openstack>进行学习,有兴趣的小伙伴可以跟着我一起,相互探讨,互相进步,该系列博文基本不涉及原理 ...

  8. 写在最前面 - 每天5分钟玩转 OpenStack(1)

    写在最前面 <每天5分钟玩转 OpenStack>是一个 OpenStack 教程,这是第 1 篇. 这个教程有下面两个特点: 系统讲解 OpenStack 从架构到各个组件:从整体到细节 ...

  9. 准备 LVM Volume Provider - 每天5分钟玩转 OpenStack(49)

    Cinder 真正负责 Volume 管理的组件是 volume provider. Cinder 支持多种 volume provider,LVM 是默认的 volume provider. Dev ...

最新文章

  1. 5G为何采纳华为力挺的Polar码?一个通信工程师的大实话
  2. jq关于对象类型的判断
  3. GridView 简单扩展
  4. lambda 序列化_如何以及为什么要序列化Lambda
  5. shell脚本--使用for循环逐行访问txt文件
  6. 多布局怎么搭建_关键词SEO优化怎么做?具体包括哪些方面?
  7. ROS( C++ )订阅 robot 的 path 话题
  8. spring整合dubbo实现简单分布式接口调用
  9. jQuery琐碎笔记
  10. mybatis3源码1-初始化
  11. 使用Faker.NET仿造数据
  12. Atitit 项目风险管理 目录 1. 技术分险 2 1.1. 全面跟随大公司解决方案 2 1.2. 过度设计 2 1.3. 可读性 扩展性不足 2 1.4. 教条僵化 2 1.5. 技术方案超出了
  13. 家用无线路由器设置技巧
  14. wps 写论文时 参考文献的横线怎么消除
  15. 基于物理的渲染PBR(一):pbr的基础理论和推导
  16. 四款电脑桌面上的优质软件,硬核又实用,有个性而不张扬
  17. static inline声明
  18. Access Points (单调栈)
  19. Git删除本地分支(批量删除)
  20. “'react-scripts' 不是内部或外部命令,也不是可运行的程序或批处理文件。”解决方法

热门文章

  1. 在controller中调用指定参数给指定表单_第005课:Spring Boot 中MVC支持
  2. python 链表的反转
  3. java数据类型_JAVA的数据类型
  4. php丢弃,在IIS 7.5中,PHP吓坏了(连接丢失,连接被丢弃)
  5. android多线程的本质,[原创]分析unidbg(unidbgMutil)多线程机制
  6. java青蛙青蛙跳井_速解青蛙跳井问题
  7. 初学Java Web(4)——Servlet学习总结
  8. Java中MessageFormat的使用
  9. 分布式事务之最终一致的Mq实现
  10. 学习笔记——Java