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

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

虽然 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 这些远程目录到本地,而后像使用本地目录同样建立、读写文件以及子目录。ide

cinder-volume
存储节点经过 NFS driver 管理 NFS volume provider 中的 volume,这些 volume 在 NFS 中其实是一个个文件。性能

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

这里有几点须要强调:spa

  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 之间的链接完成的(紫色连线)。这种设计减小了中间环节,存储节点不直接参与数据传输,保证了读写效率。ci

  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。

 

相关文章
相关标签/搜索