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 协调工作的。
 
O062、NFS Volume Provider(Part I)O062、NFS Volume Provider(Part I)
 
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
 
O062、NFS Volume Provider(Part I)O062、NFS Volume Provider(Part I)
 
O062、NFS Volume Provider(Part I)O062、NFS Volume Provider(Part I)
 
O062、NFS Volume Provider(Part I)O062、NFS Volume Provider(Part I)
 
O062、NFS Volume Provider(Part I)O062、NFS Volume Provider(Part I)
 
O062、NFS Volume Provider(Part I)O062、NFS Volume Provider(Part I)
 
O062、NFS Volume Provider(Part I)O062、NFS Volume Provider(Part I)
 
到此,nfs volume provider 准备就绪。
 
 

相关文章: