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. APP消息推送是否进入消息中心和click、receive事件分析

    前端时间研究APP消息推送的机制,由于机型.版本的碎片化,消息推送的机制不太好理解,所以总结下,放在博文里以备后续查阅. 安卓Android系统的消息推送:     安卓 推送方式 应用状态 类型 消 ...

  2. k8s应用01-----入门实例

    安装一个单机版的K8S 1.关闭防火墙firewalld2.安装etcd和kubernetesyum install -y etcd kubernetes(会自动安装docker)3.修改配置文件修改 ...

  3. nova创建虚拟机的详细过程

    Nova 创建虚拟机详细过程    

  4. java+服务器上传和下载文件

    1.介绍enctype enctype 属性规定发送到服务器之前应该如何对表单数据进行编码. enctype作用是告知服务器请求正文的MIME类型(请求消息头content-type的作用一样) 1. ...

  5. phoenix创建表失败:phoenixIOException: Max attempts exceeded

    下面的问题,搞了1天才解决,太坑了,在这里记录一下. 问题现像:执行命令后,1分钟没有返回, 然后报下面的错,偶尔会出现以下不同的报错信息. jdbc:phoenix:10.0.xx.1:2181&g ...

  6. docker下载镜像

    注意:必须先搜索镜像,否则有时候无法下载 Docker下载Redis镜像并运行容器 .搜索查找镜像 docker search redis .下载镜像 docker pull redis:latest ...

  7. js 笔记整理

    Js中for.for-in.forEach以及for-of的用法及特性对比 for-in for...in以任意顺序遍历一个对象的可枚举属性.所以for-in不适合用来迭代一个Array.同时,for ...

  8. 【AMAD】django-cities -- 为Django项目提供国家,城市数据

    动机 简介 个人评分 动机 有时候看一些数据库设计,国家数据会存在一个单独的表里面.这种方式读取数据库无疑又要加上一层join,很不划算. 简介 [django-cities]1可用为你提供国家和城市 ...

  9. DFS,DP————N皇后问题

    C++代码 #include <iostream> using namespace std; const int N=20; int n; char g[N][N]; bool col[N ...

  10. 【Java开发】Maven那点事儿(Eclipse版)

    Maven那点事儿(Eclipse版) 前言: 由于最近工作学习,总是能碰到Maven的源码.虽然平时工作并不使用Maven,但是为了学习一些源码,还是必须要了解下.这篇文章不是一个全面的Maven解 ...