openstack-理论1 manila 文件共享存储服务
共享文件系统服务简介
manila 共享文件系统服务提供计算实例可以使用的共享文件系统。
OpenStack 共享文件系统服务( Manila )为虚拟机提供文件存储。共享文件系统服务提供了用于管理和配置文件共享的抽象。该服务还支持共享类型的管理以及共享快照(如果驱动程序支持)。
逻辑架构
Manila 的逻辑架构如下图所示:
共享文件系统的总体服务是通过以下具体服务实现的:
manila-api
一个 WSGI 应用程序,用于对整个共享文件系统服务进行身份验证和路由请求。它支持 OpenStack API。
manila-data
一个独立的服务,其目的是接收请求,处理具有潜在长时间运行时间的数据操作,例如复制、共享迁移或备份。
manila-scheduler
安排并将请求路由到适当的共享服务。调度程序使用可配置的过滤器和权重来路由请求。过滤器调度器是默认的,可以对诸如容量,可用性区,共享类型和功能以及自定义过滤器进行过滤。
mania-share
管理提供共享文件系统的后端设备。Manila 共享服务通过使用共享后端驱动程序作为接口与后端设备进行通信。共享驱动程序可以以两种模式之一操作,无论是否处理共享服务器。共享服务器通过共享网络导出文件共享。如果共享文件系统服务中的共享服务器没有由驱动程序管理时,应该在共享文件系统服务的带之外处理网络需求。
可运行于有共享服务器和无共享服务器两种模式。前者需要 Manila 关注组网,使用 nova、neutron 和 cinder 服务管理共享服务器;后者则不处理任何组网问题,使用 LVM 驱动和 NFS 共享,由用户保证云主机和 NFS 服务器之间的网络连接。
- Shared File Systems Option 1: No driver support for share servers management
选项1部署服务不包含对共享管理的驱动支持。这种模式下,服务不需要任何和网络有关的部署。操作者必须确保实例和NFS服务器之间的连接。本选项使用需要包含LVM和NFS包以及一个额外的命名为``manila-share``的LVM卷组的LVM驱动器。
- Shared File Systems Option 2: Driver support for share servers management
选项2部署服务包含对共享管理的驱动支持。这种模式下,服务需要计算(nova),网络(neutron),块存储(cinder)服务来管理共享服务器。这部分信息用于创建共享服务器,就像创建共享网络一样。本选项使用支持共享服务处理的generic驱动器,并且需要一个连接到路由的私网``selfservice`。
messaging Queue
在共享文件系统进程之间路由信息。
Backend Storage devices
共享文件服务需要某种形式的后端共享文件系统提供程序,引用实现使用块存储服务( Cinder ) 和服务虚拟机( VM ) 来提供共享。 其他驱动程序用于从各种供应商解决方案中访问共享文件系统。
后端对应着一个共享文件系统实例的提供者。后端在 manila.conf 中进行定义。一个实例必然对应一个后端,而一个后端有且只有一个驱动。通过采用多个后端的方式,可以提供数据服务以保障高可用。
UserS and Tenants(Projects)
共享文件系统服务可以被许多不同的云计算消费者或客户(共享系统上的租户) 使用基于角色的访问任务。 角色控制了允许用户执行的操作。 在默认配置中,大多数操作不需要特定的角色,除非他们只限于管理员,但是这可以由维护规则的适当的 policy.json 文件中的系统管理员来配置。 用户管理特定权限受到租户的限制。 通过 IP 或用户访问规则,可以保证访客登录和使用的权限。 用于控制可用硬件资源的资源消耗的配额是每个租户。
对租户而言,配额管制可以限制:
- 可以创建的共享数量
- 可供分享的千兆字节数
- 可以创建的共享快照数量
- 可以为共享快照提供的千兆字节数
- 可以创建的共享网络的数量
- 可以创建的共享组的数量
- 可以创建的共享组快照的数量
您可以使用共享文件系统 CLI 修改默认配额值,因此配额设置的限制是由管理员用户编辑的。
Shares, snapshots, and share networks
Shares
共享实例是一个指定了协议、大小和可访问列表的存储单元,是 Manila 提供的基础原语单元。 所有的共享实例都存在于后端, 一些共享实例与共享网络和共享服务器相关联。 文件系统实例可被多个虚拟机并发访问,支持的主要协议是 NFS 和 CIFS,但也支持其他协议。
Snapshots
快照是一个共享实例在某一时刻的只读镜像。快照只能用于创建新的共享实例(包含快照数据)。只有在所有相关快照被删除时,共享实例才能被删除。
Share networks
共享网络描述与文件系统实例相关的网络实现,告知 Manila 一组共享文件系统实例使用的安全和网络配置。一个共享网络包括安全服务( Security Service )和涉及的网络及子网( Network/Subnet )。共享网络是一个面向多租户定义的对象,Manila 通过共享网络支持多租户,网络多租户通过标准特性如 VLAN 和 VXLAN 实现。一个共享文件系统实例只能属于一个共享网络。
Share type
共享类型是一个由管理员定义的“服务类型”,它包括一个租户可见的描述和一组租户不可见的键值对列表。Manila 调度器利用此键值对信息进行调度决策。
Extra Spec
额外规格即共享类型中的一组键值对。额外规格由 Manila 和后端驱动定义。
安全服务
安全服务指 LDAP、Active Directory、Kerberos 等用户安全服务。安全服务包含 Manila 创建一个服务器加入指定安全域必需的所有信息。一个共享文件系统实例可以被关联到多个安全服务。
Share Drivers
共享驱动的概念很明确。共享驱动是后端文件共享服务的具体实现,如 Clustered ONTAP、EMC VNX、GlusterFS 等。
- Generic approach for share provisioning
- CephFS Native driver
- Dell EMC VMAX driver
- Dell EMC Unity driver
- Dell EMC VNX driver
- GlusterFS driver
- GlusterFS Native driver
- HDFS native driver
- LVM share driver
- ZFS (on Linux) driver
- Oracle ZFS Storage Appliance driver
- EMC Isilon driver
- Hitachi NAS (HNAS) driver
- Hitachi Hyper Scale-Out Platform File Services Driver for OpenStack
- HPE 3PAR driver
- Huawei driver
- IBM Spectrum Scale share driver
- INFINIDAT InfiniBox Share driver
- MapRFS native driver
- NetApp Clustered Data ONTAP driver
- Quobyte Driver
Generic Share Driver
- Manila 为每个共享网络创建一个 Nova 计算实例
- Nova 计算实例通过 Cinder 的 Volume 来提供 NFS/CIFS 共享服务
- 通过 Neturon 连接到现有网络及子网
- 创建 Nova 实例所必需的 Nova 的 Flavor 、Glance 的镜像、SSH Keypair 均通过 Manila 进行配置
- Manila 则通过 SSH 对 Nova 实例进行配置
Share Access Rule
Manila 通过共享访问规则定义哪些客户端可以访问共享文件系统实例。目前 Manila 支持的访问控制类型包括 IP 地址、用户名和 SSL 认证。
实例生命周期管理
Manila 提供完整的共享文件系统实例生命周期管理,包括:
- 创建、删除实例;
- 列出所有实例;
- 获得实例细节信息;
- 生成实例快照;
- 修改实例访问信息;
- 挂载和卸载文件系统实例。
使用场景
以下是 Manila 的部分关键使用场景:
- 替代自主开发(home-grown)的 NAS 部署工具。
- 支持传统企业应用。
- 按需的开发和构建环境。
- 通过 REST API 或命令与现有自动化框架集成。
- 支持云原生工作负载,如 DBaaS。
-
支持大数据,例如通过 Manila 的 HDFS 原生驱动插件。
-
提供安全的跨租户文件共享。
-
混合云间共享文件系统。
参考文档:
https://blog.csdn.net/chinagissoft/article/details/51274884
https://blog.51cto.com/devingeng/1745955
https://blog.51cto.com/yuweibing/1981185
欢迎关注微信公众号:启航学城,干货满满,扫码关注:
也欢迎加入OpenStack技术交流群,进行技术交流。