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. 约束布局ConstraintLayout详解

    约束布局ConstraintLayout详解 转 https://www.jianshu.com/p/17ec9bd6ca8a 目录 1.介绍 2.为什么要用ConstraintLayout 3.如何 ...

  2. ShockUtil振动工具类

    import android.app.Activity; import android.app.Service; import android.content.Context; import andr ...

  3. DeviceUtils

    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/> import androi ...

  4. C语言中函数strcpy ,strncpy ,strlcpy的用法

    strcpy ,strncpy ,strlcpy的用法 好多人已经知道利用strncpy替代strcpy来防止缓冲区越界. 但是如果还要考虑运行效率的话,也许strlcpy是一个更好的方式. 1. s ...

  5. 利用phpStudy 探针 提权网站服务器

    声明: 本教程仅仅是演示管理员安全意识不强,存在弱口令情况.网站被非法入侵的演示,请勿用于恶意用途! 今天看到论坛有人发布了一个通过这phpStudy 探针 关键字搜索检索提权网址服务器,这个挺简单的 ...

  6. Spring Cloud(2):服务发现(Eureka)

    Spring Cloud Eureka是Spring Cloud Netflix项目下的一个模块,作用是服务的注册和发现,并实现服务治理.它有一个(或一组,以实现高可用)服务注册中心(eureka s ...

  7. Java集合(3):使用Abstract类

    每个java.util容器都有其自己的Abstract类,它们提供了该容器接口的部分实现.下面是一个定制自己的Map的例子(List set就省略了): 定制自己的Map实现AbstractMap-- ...

  8. SqlServer:SqlServer(服务器磁盘监控,创建管理员账号分配权,添加链接服务器,查询CPU,查询内存)

    1.服务器磁盘监控 (1)总链接服务上开启所有链接服务器的RPC: ----------------------总链接服务器上面,开启每个服务器的RPC --exec sp_serveroption ...

  9. springboot-springmvc

    0依赖 <!-- jsp --> <dependency> <groupId>org.apache.tomcat.embed</groupId> < ...

  10. hive中case命令