介绍¶
共享文件系统服务 (manila) 旨在在单节点或跨多个节点上运行。共享文件系统服务由四个主要服务组成,类似于块存储服务。
manila-apimanila-schedulermanila-sharemanila-data
manila-api该服务提供稳定的 RESTful API。该服务对请求进行身份验证和路由到整个共享文件系统服务。可以使用 python-manilaclient 与 API 交互。有关共享文件系统 API 的更多详细信息,请参阅 OpenStack 共享文件系统 API。
manila-share负责管理共享文件服务设备,特别是后端设备。
manila-scheduler负责将请求调度并路由到合适的
manila-share服务。它通过过滤所有后端,只选择一个后端来实现这一点。manila-data该服务负责管理数据操作,这些操作可能需要很长时间才能完成,如果不单独处理,可能会阻塞其他服务。
共享文件系统服务使用基于 SQL 的中央数据库,该数据库由系统中的所有共享文件系统服务共享。它可以使用 ORM SQLALchemy 支持的任何 SQL 方言,但仅使用 MySQL 和 PostgreSQL 数据库进行测试。
使用 SQL,共享文件系统服务与其他 OpenStack 服务类似,可以与任何 OpenStack 部署一起使用。有关 API 的更多详细信息,请参阅 OpenStack 共享文件系统 API 描述。有关 CLI 用法和配置的更多详细信息,请参阅 共享文件系统云管理指南。
在下面的图像中,您可以查看共享文件系统服务的不同部分如何相互交互。
除了已经描述的服务之外,您还可以在图像中看到两个其他实体:python-manilaclient 和 storage controller。
python-manilaclient通过
manila-api与共享文件系统服务交互的命令行界面,也是一个 Python 模块,用于以编程方式与共享文件系统服务交互。存储 控制器通常是一个带有旋转磁盘、以太网端口和某种允许网络客户端读取和写入磁盘上文件的软件的金属盒子。还有仅软件的存储控制器,它们可以在任意硬件上运行,集群控制器可以允许多个物理设备显示为单个存储控制器,或者纯粹的虚拟存储控制器。
共享是一个远程、可挂载的文件系统。您可以将共享挂载到多个主机,并由多个用户同时访问共享。
共享文件系统服务可以使用不同的网络类型:flat、VLAN、VXLAN 或 GRE,并支持分段网络。还有不同的 网络插件,它们提供了与 OpenStack 可用网络服务集成的各种方法。
有大量的共享驱动程序由不同的供应商创建,支持不同的硬件存储解决方案,例如 NetApp Clustered Data ONTAP (cDOT) 驱动程序、华为 NAS 驱动程序或 GlusterFS 驱动程序。每个共享驱动程序都是一个 Python 类,可以设置为后端并在后端运行以管理共享操作,其中一些操作可能是特定于供应商的。后端是 manila-share 服务的一个实例。
客户端的身份验证和授权配置数据可以由 安全服务 存储。可以配置和使用 LDAP、Kerberos 或 Microsoft Active Directory 身份验证服务等协议。
除非在 policy.json 中明确更改,否则管理员或拥有共享的租户能够管理 对共享的访问。访问管理是通过使用 IP 地址、用户、组或 TLS 证书创建访问规则来完成的。可用的身份验证方法取决于您配置和使用的共享驱动程序和安全服务。
注意
不同的驱动程序支持不同的访问选项,具体取决于使用的共享文件系统协议。支持的共享文件系统协议是 NFS、CIFS、GlusterFS 和 HDFS。例如,Generic(块存储作为后端)驱动程序不支持用户和证书身份验证方法。它也不支持任何安全服务,例如 LDAP、Kerberos 或 Active Directory。有关不同驱动程序支持的功能的详细信息,请参阅 Manila 共享功能支持映射。
作为管理员,您可以创建共享类型,这些类型使调度程序能够在创建共享之前过滤后端。共享类型具有额外的规范,您可以将其设置为调度程序以过滤和权衡后端,以便为请求共享创建的用户选择合适的后端。共享和共享类型可以创建为公共或私有。这种可见性级别定义了其他租户是否能够看到这些对象并与之交互,或者不能。管理员可以为身份服务中的特定用户或租户添加 对私有共享类型的访问。因此,您授予访问权限的用户可以看到可用的共享类型并使用它们创建共享。
不同用户及其角色的 API 调用权限由 策略 确定,就像其他 OpenStack 服务一样。
身份服务可用于共享文件系统服务的身份验证。有关身份服务安全性的详细信息,请参阅 身份 部分。
常规安全信息¶
与其他 OpenStack 项目类似,共享文件系统服务已在身份服务中注册,因此您可以使用 manila endpoints 命令找到共享服务 v1 和 v2 的 API 端点
$ manila endpoints
+-------------+-----------------------------------------+
| manila | Value |
+-------------+-----------------------------------------+
| adminURL | http://172.18.198.55:8786/v1/20787a7b...|
| region | RegionOne |
| publicURL | http://172.18.198.55:8786/v1/20787a7b...|
| internalURL | http://172.18.198.55:8786/v1/20787a7b...|
| id | 82cc5535aa444632b64585f138cb9b61 |
+-------------+-----------------------------------------+
+-------------+-----------------------------------------+
| manilav2 | Value |
+-------------+-----------------------------------------+
| adminURL | http://172.18.198.55:8786/v2/20787a7b...|
| region | RegionOne |
| publicURL | http://172.18.198.55:8786/v2/20787a7b...|
| internalURL | http://172.18.198.55:8786/v2/20787a7b...|
| id | 2e8591bfcac4405fa7e5dc3fd61a2b85 |
+-------------+-----------------------------------------+
默认情况下,共享文件系统 API 服务仅侦听端口 8786,类型为 tcp6,支持 IPv4 和 IPv6。
注意
端口 8786 是共享文件系统服务的默认端口。它可以更改为任何其他端口,但此更改也应在配置文件中进行,选项为 osapi_share_listen_port,默认值为 8786。
在 /etc/manila/ 目录中,您可以找到几个配置文件
api-paste.ini
manila.conf
policy.json
rootwrap.conf
rootwrap.d
./rootwrap.d:
share.filters
建议您配置共享文件系统服务以在非 root 服务帐户下运行,并更改文件权限,以便只有系统管理员可以修改它们。共享文件系统服务期望只有管理员才能写入配置文件,而服务只能通过其在 manila 组中的组成员资格读取它们。其他人不应能够读取这些文件,因为这些文件包含不同服务的管理员密码。
应用检查 检查-共享-01:配置文件用户/组所有权是否设置为 root/manila? 和 检查-共享-02:是否为配置文件设置了严格的权限? 从检查列表中验证权限是否设置正确。
注意
文件 rootwrap.conf 中的 manila-rootwrap 配置和文件 rootwrap.d/share.filters 中的共享节点 manila-rootwrap 命令过滤器应由 root 用户拥有,并且只能由 root 用户写入。
提示
manila 配置文件 manila.conf 可以放置在任何位置。默认情况下,预期路径为 /etc/manila/manila.conf。