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 Provider之间的连接完成的(紫色连线)。这种设计减少了中间环节,存储节点不直接参与数据传输,保证了读写效率。
    3、其他Volume Provider(例如 ceph、swift、商业存储等)均遵循这种控制流和数据流分离的设计
 
配置 NFS Volume Provider
 
在实验环境中,NFS volume provider 的NFS远程目录为 10.12.28.8:/home/nfs1    (chmod 777 /home/nfs1)
 
cinder-volume服务节点上mount point 为 /nfs_storage (chmod 777 /nfs_storage)
 
1、/etc/cinder/cinder.conf添加 nfs backend
 
[nfs]
nfs_mount_point_base = /nfs_storage
nfs_shares_config = /etc/cinder/nfs_shares
volume_driver = cinder.volume.drivers.nfs.NfsDriver
volume_backend_name = nfs
 
2、/etc/cinder/cinder.conf修改支持的backend,添加nfs支持
 
[DEFAULT]
enabled_backends = lvmdriver-1,nfs
 
3、添加/etc/cinder/nfs_shares
 
10.12.28.8:/home/nfs1
 
4、重启cinder-volume服务
 
[root@DevStack-Rocky-Controller-21 ~]# systemctl restart devstack@c-vol.service
[root@DevStack-Rocky-Compute-22 ~]# systemctl restart devstack@c-vol.service
 
5、重启前后cinder服务对比
 
[stack@DevStack-Rocky-Compute-22 ~]$ cinder service-list
+------------------+------------------------------------------+------+---------+-------+----------------------------+-----------------+
| Binary           | Host                                     | Zone | Status  | State | Updated_at                 | Disabled Reason |
+------------------+------------------------------------------+------+---------+-------+----------------------------+-----------------+
| cinder-backup    | DevStack-Rocky-Compute-22                | nova | enabled | down  | 2019-07-03T06:15:57.000000 | -               |
| cinder-backup    | DevStack-Rocky-Controller-21             | nova | enabled | down  | 2019-07-03T06:15:27.000000 | -               |
| cinder-scheduler | DevStack-Rocky-Controller-21             | nova | enabled | up    | 2019-07-03T09:35:27.000000 | -               |
| cinder-volume    | DevStack-Rocky-Compute-22@lvmdriver-1    | nova | enabled | up    | 2019-07-03T09:35:22.000000 | -               |
| cinder-volume    | DevStack-Rocky-Controller-21@lvmdriver-1 | nova | enabled | up    | 2019-07-03T09:35:19.000000 | -               |
+------------------+------------------------------------------+------+---------+-------+----------------------------+-----------------+
[stack@DevStack-Rocky-Compute-22 ~]$ cinder service-list
+------------------+------------------------------------------+------+---------+-------+----------------------------+-----------------+
| Binary           | Host                                     | Zone | Status  | State | Updated_at                 | Disabled Reason |
+------------------+------------------------------------------+------+---------+-------+----------------------------+-----------------+
| cinder-backup    | DevStack-Rocky-Compute-22                | nova | enabled | down  | 2019-07-03T06:15:57.000000 | -               |
| cinder-backup    | DevStack-Rocky-Controller-21             | nova | enabled | down  | 2019-07-03T06:15:27.000000 | -               |
| cinder-scheduler | DevStack-Rocky-Controller-21             | nova | enabled | up    | 2019-07-03T09:36:57.000000 | -               |
| cinder-volume    | DevStack-Rocky-Compute-22@lvmdriver-1    | nova | enabled | up    | 2019-07-03T09:36:53.000000 | -               |
| cinder-volume    | DevStack-Rocky-Compute-22@nfs            | nova | enabled | up    | 2019-07-03T09:36:53.000000 | -               |
| cinder-volume    | DevStack-Rocky-Controller-21@lvmdriver-1 | nova | enabled | up    | 2019-07-03T09:37:00.000000 | -               |
| cinder-volume    | DevStack-Rocky-Controller-21@nfs         | nova | enabled | up    | 2019-07-03T09:37:00.000000 | -               |
+------------------+------------------------------------------+------+---------+-------+----------------------------+-----------------+
 
 
6、在GUI页面创建nfs volume type
 
 
 
 
 
 
 
到此,nfs volume provider 准备就绪。
 
 

O062、NFS Volume Provider(Part I)的更多相关文章

  1. O063、NFS Volume Provider(Part II)

    参考https://www.cnblogs.com/CloudMan6/p/5693771.html   本节开始创建 NFS volume ,操作方法和 LVM volume一样,唯一的区别是在 v ...

  2. O064、NFS Volume Provider(Part III)

    参考https://www.cnblogs.com/CloudMan6/p/5702199.html   今天我们将前一小节中创建的 nfs-vol-xx attach 到Instance c1 上, ...

  3. NFS Volume Provider(Part I) - 每天5分钟玩转 OpenStack(62)

    cinder-volume 支持多种 volume provider,前面我们一直使用的是默认的 LVM,本节我们将增加 NFS volume provider. 虽然 NFS 更多地应用在实验或小规 ...

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

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

  5. NFS Volume Provider(Part III) - 每天5分钟玩转 OpenStack(64)

    今天我们将前一小节创建的 NFS volume “nfs-vol-1” attach 到 instance “c2”上. 这里我们重点关注 nova-compute 如何将“nfs-vol-1” at ...

  6. O053、Attach Volume 操作(Part I)

    参考https://www.cnblogs.com/CloudMan6/p/5624930.html   Volume的最主要用途是做为虚拟磁盘提供给Instance使用.Volume是通过 Atta ...

  7. O050、Create Volume 操作 (Part I)

    参考https://www.cnblogs.com/CloudMan6/p/5603312.html   前面已经学习了Cinder的架构和相关组件,从本节开始详细分析 Cinder 的各种操作,首先 ...

  8. O051、Create Volume 操作 (Part II)

    参考https://www.cnblogs.com/CloudMan6/p/5612147.html       1.cinder-scheduler 也会启动一个工作流 volume_create_ ...

  9. 043、data-packed volume container (2019-03-06 周三)

    参考https://www.cnblogs.com/CloudMan6/p/7203285.html     volume container 的数据归根到底还是在host上,我们能不能把数据完全放到 ...

随机推荐

  1. ORA-00054: 资源正忙 --锁表的解决方法

    问题描述 ORA-00054: 资源正忙, 但指定以 NOWAIT 方式获取资源, 或者超时失效 发生异常 原因:其他Session已经对目标表做了操作,且未提交操作,导致锁表,新的Session无法 ...

  2. http2.0多路复用

    http/1中的每个请求都会建立一个单独的连接,除了在每次建立连接过程中的三次握手之外,还存在TCP的慢启动导致的传输速度低.其实大部分的http请求传送的数据都很小,就导致每一次请求基本上都没有达到 ...

  3. Jsp +Js + Jquery + EasyUI + Servlet + Lucene,完成分页

    package loaderman.fy.action; import java.io.IOException; import java.io.PrintWriter; import java.uti ...

  4. 小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_5-10.Springboot2.x用户登录拦截器开发实战

    笔记 10.Springboot2.x用户登录拦截器开发实战     简介:实战开发用户登录拦截器拦截器 LoginInterceptor                  1.实现接口 LoginI ...

  5. WebServer_简单例子

    #-*-coding:utf-8-*- importwebimportjson urls=("/.*","index")app=web.application( ...

  6. 解决Hash碰撞冲突的方法

    Hash碰撞冲突 我们知道,对象Hash的前提是实现equals()和hashCode()两个方法,那么HashCode()的作用就是保证对象返回唯一hash值,但当两个对象计算值一样时,这就发生了碰 ...

  7. c++后台开发面试常见知识点总结(二)网络编程

    (1)TCP和UDP有什么区别? TCP是传输控制协议,提供的是面向连接的,可靠地字节流服务.使用三次握手建立连接,四次挥手释放连接.UDP是用户数据报协议,传输的是UDP数据报,是无连接的,而且没有 ...

  8. CentOS7或CentOS8 开机自动启用网卡的设置方法

    sudo nano /etc/sysconfig/network-scripts/ifcfg-enp0s3(p0s3是网卡,名字不同环境会有差异,输入时可按tab自动补全.) 将最后一行的 ONBOO ...

  9. React Native的ListView的布局使用

    1> ListView组件用于显示一个垂直的滚动列表,其中的元素之间结构近似而仅数据不同. ListView更适于长列表数据,且元素个数可以增删.和ScrollView不同的是,ListView ...

  10. 20190903 - CSDN 的奇葩替换

    可能是出于安全原因 CSDN 对内容中的代码,作了很多奇葩的替换. 比如下面两行,是否有差别? # - # -16 有.其实 cut 后的短横线,内部编码不同,前者复制后无法被识别. 再比如下面两个词 ...