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

简介: cinder-volume 支持多种 volume provider,前面我们一直使用的是默认的 LVM,本节我们将增加 NFS volume provider。 虽然 NFS 更多地应用在实验或小规模 cinder 环境,由于性能和缺乏高可用的原因在生产环境中不太可能使用,但是学习 NFS volume provider 的意义在于:1. 理解 cinder-volume 如何支持多 backend2. 更重要的,可以理解 cinder-volume,nova-compute 和 volume provider 是如何协同工作,共同为 instance 提供块存储。

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

  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。

 


目录
相关文章
Ansible 文件从远程取文件fetch和传文件到远程copy(学习笔记四)
fetch模块: copy模块: 1、从远程主机获取文件:ansible all -m fetch -a "src=/root/test.sh dest=/root/test" image.
5268 0
|
监控 持续交付 开发工具
软件配置管理与知识库管理实践
【8月更文第22天】软件配置管理(SCM)是在软件开发过程中为了确保项目的可追溯性和可控性而实施的一系列管理活动。它涵盖了版本控制、变更控制、发布管理和知识库管理等多个方面。本文将详细介绍这些关键领域的实践方法,并通过一个虚构的软件项目——“云笔记”应用程序为例来进行说明。
469 1
|
存储 Kubernetes 测试技术
k8s使用pvc,pv,sc关联ceph集群
文章介绍了如何在Kubernetes中使用PersistentVolumeClaim (PVC)、PersistentVolume (PV) 和StorageClass (SC) 来关联Ceph集群,包括创建Ceph镜像、配置访问密钥、删除默认存储类、编写和应用资源清单、创建资源以及进行访问测试的步骤。同时,还提供了如何使用RBD动态存储类来关联Ceph集群的指南。
397 7
|
监控 负载均衡 网络协议
|
Kubernetes Cloud Native Java
灰度发布、蓝绿部署、金丝雀都是啥?
在滚动部署中,应用的新版本逐步替换旧版本。实际的部署发生在一段时间内。在此期间,新旧版本会共存,而不会影响功能和用户体验。这个过程可以更轻易的回滚和旧组件不兼容的任何新组件。
灰度发布、蓝绿部署、金丝雀都是啥?
|
人工智能 Ubuntu 安全
如何在 Ubuntu 20.04 上设置 SSH 密钥
SSH是一种加密协议,用于管理服务器并与服务器通信。使用 Ubuntu 服务器时,我们将大部分时间花在通过 SSH 连接到服务器的终端会话上。 下来将重点关注为 Ubuntu 20.04 安装设置 SSH 密钥,SSH 密钥提供了一种安全的登录服务器的方式。
1006 0
|
关系型数据库 MySQL Linux
Centos7下使用RPM包安装MySQL8
Centos7下使用RPM包安装MySQL8
1298 0
|
存储 Prometheus 监控
Prometheus 四种指标类型
Prometheus 四种指标类型
608 0
|
Kubernetes 容器
kubernetes挂载ceph rbd和cephfs
kubernetes挂载ceph rbd和cephfs