1.15. 使用共享文件系统服务


OpenStack Manila 是共享文件系统服务。它为 OpenStack 用户提供自助服务 API,用于创建和管理文件共享。文件共享(或只是"共享"),由任意数量的客户端为并发读/写访问权限构建。这与底层存储的固有弹性相结合,使共享文件系统服务在云环境需要 RWX ("read write many")持久性存储中至关重要。

1.15.1. 网络

OpenStack 中的文件共享通过网络访问。因此,务必要规划云的网络,以便为共享文件系统创建成功且可持续的编配层。

Manila 支持两种级别的存储网络抽象 - 用户可以直接控制其各自文件共享的网络,另一个则由 OpenStack 管理员配置存储网络。在采用后,务必要确保 Red Hat OpenStack Platform 17.1 中的网络与您的新云的网络计划匹配。这样可确保租户工作负载通过采用过程保持与存储连接,即使 control plane 会出现较小的中断。Manila 的 control plane 服务不在数据路径中;关闭 API、调度程序和共享管理器服务不会影响对现有共享文件系统的访问。

通常,存储和存储设备管理网络是独立的。Manila 服务只需要访问存储设备管理网络。例如,如果在部署中使用了 Ceph 集群,"storage"网络指的是 Ceph 集群的公共网络,并且 Manila 的共享管理器服务需要可以访问它。

1.15.2. 先决条件

  • 确保 manila systemd 服务(api、cron、调度程序)已停止。如需更多信息,请参阅 停止 OpenStack 服务
  • 确保 manila pacemaker 服务("openstack-manila-share")已停止。如需更多信息,请参阅 停止 OpenStack 服务
  • 确保数据库迁移已完成。如需更多信息,请参阅将 数据库迁移到 MariaDB 实例
  • 确保部署 manila-share 服务的 OpenShift 节点可以访问存储系统所在的管理网络。
  • 在使用 manila 服务前,请确保可以使用 keystone 和 memcached 等服务。
  • 如果启用了租户驱动的网络(driver_handles_share_servers=True),请确保在采用 manila 服务前已经部署了 neutron。

1.15.3. 流程 - Manila 采用

1.15.3.1. 从 RHOSP 17.1 部署复制配置

定义 CONTROLLER1_SSH 环境变量( 如果尚未定义 )。然后,从 RHOSP 17.1 复制配置文件以参考。

$CONTROLLER1_SSH cat /var/lib/config-data/puppet-generated/manila/etc/manila/manila.conf | awk '!/^ *#/ && NF' > ~/manila.conf
Copy to Clipboard Toggle word wrap

检查此配置,以及自 RHOSP 17.1 起记录的配置更改。并非所有项都对进入新的云环境有意义:

  • manila 操作器能够设置数据库相关配置([database])、服务身份验证(auth_strategy,[keystone_authtoken])、消息总线配置(transport_url,control_exchange)、默认的粘贴配置(api_paste_config)和 inter-service 通信配置(' , '[nova], [cinder], [glance] [glance] [oslo_messagingClaimTemplate])。因此,所有这些都可以被忽略。
  • 忽略 osapi_share_listen 配置。在 RHOSP 18 中,依赖 OpenShift 路由和入口。
  • 请注意策略覆盖。在 RHOSP 18 中,manila 附带一个安全的默认 RBAC,并且可能不需要覆盖。请使用 Oslo 策略生成器 工具查看 RBAC 默认值。如果需要自定义策略,则必须将其作为 ConfigMap 提供。以下示例 spec 演示了如何使用名为 policy.yaml 的文件的内容设置名为 manila-policyConfigMap
  spec:
    manila:
      enabled: true
      template:
        manilaAPI:
          customServiceConfig: |
             [oslo_policy]
             policy_file=/etc/manila/policy.yaml
        extraMounts:
        - extraVol:
          - extraVolType: Undefined
            mounts:
            - mountPath: /etc/manila/
              name: policy
              readOnly: true
            propagation:
            - ManilaAPI
            volumes:
            - name: policy
              projected:
                sources:
                - configMap:
                    name: manila-policy
                    items:
                      - key: policy
                        path: policy.yaml
Copy to Clipboard Toggle word wrap
  • Manila API 服务需要在 manila: template: manilaAPIcustomServiceConfig 部分添加 enabled_share_protocols 选项。
  • 如果您有调度程序覆盖,请将它们添加到 manila: template: manilaScheduler 中的 customServiceConfig 部分。
  • 如果您使用 RHOSP 17.1 配置多个存储后端驱动程序,则需要在部署 RHOSP 18 时分割它们。每个存储后端驱动程序都需要使用自己的 manila-share 服务实例。
  • 如果存储后端驱动程序需要自定义容器镜像,请在 RHOSP Ecosystem Catalog 上找到它,并设置 manila: template: manilaShares: <custom name> : containerImage 值。以下示例演示了使用自定义容器镜像的多个存储后端驱动程序。
  spec:
    manila:
      enabled: true
      template:
        manilaAPI:
          customServiceConfig: |
            [DEFAULT]
            enabled_share_protocols = nfs
          replicas: 3
        manilaScheduler:
          replicas: 3
        manilaShares:
         netapp:
           customServiceConfig: |
             [DEFAULT]
             debug = true
             enabled_share_backends = netapp
             [netapp]
             driver_handles_share_servers = False
             share_backend_name = netapp
             share_driver = manila.share.drivers.netapp.common.NetAppDriver
             netapp_storage_family = ontap_cluster
             netapp_transport_type = http
           replicas: 1
         pure:
            customServiceConfig: |
             [DEFAULT]
             debug = true
             enabled_share_backends=pure-1
             [pure-1]
             driver_handles_share_servers = False
             share_backend_name = pure-1
             share_driver = manila.share.drivers.purestorage.flashblade.FlashBladeShareDriver
             flashblade_mgmt_vip = 203.0.113.15
             flashblade_data_vip = 203.0.10.14
            containerImage: registry.connect.redhat.com/purestorage/openstack-manila-share-pure-rhosp-18-0
            replicas: 1
Copy to Clipboard Toggle word wrap
  • 如果提供敏感信息,如密码、主机名和用户名,建议使用 OpenShift secret 和 customServiceConfigSecrets 密钥。例如:
cat << __EOF__ > ~/netapp_secrets.conf

[netapp]
netapp_server_hostname = 203.0.113.10
netapp_login = fancy_netapp_user
netapp_password = secret_netapp_password
netapp_vserver = mydatavserver
__EOF__

oc create secret generic osp-secret-manila-netapp --from-file=~/netapp_secrets.conf -n openstack
Copy to Clipboard Toggle word wrap
  • customConfigSecrets 可用于任何服务,以下是一个使用上面创建的 secret 的配置映射。
  spec:
    manila:
      enabled: true
      template:
        < . . . >
        manilaShares:
         netapp:
           customServiceConfig: |
             [DEFAULT]
             debug = true
             enabled_share_backends = netapp
             [netapp]
             driver_handles_share_servers = False
             share_backend_name = netapp
             share_driver = manila.share.drivers.netapp.common.NetAppDriver
             netapp_storage_family = ontap_cluster
             netapp_transport_type = http
           customServiceConfigSecrets:
             - osp-secret-manila-netapp
           replicas: 1
    < . . . >
Copy to Clipboard Toggle word wrap
  • 如果您需要向任何服务提供额外文件,您可以使用 extraMounts。例如,在使用 ceph 时,您需要 Manila 用户的密钥环文件以及 ceph.conf 配置文件。它们通过 extraMounts 挂载,如下例所示。
  • 确保后端的名称(share_backend_name)在 RHOSP 17.1 上保持不变。
  • 建议将 manilaAPI 服务的副本数和 manilaScheduler 服务设置为 3。您应该确保将 manilaShares 服务/s 的副本数设置为 1。
  • 确保 manilaShares 部分中指定了适当的存储管理网络。以下示例将 manilaShares 实例与 CephFS 后端驱动程序连接到 存储网络

1.15.3.2. 部署 manila control plane

修补 OpenStackControlPlane 来部署 Manila;这里是一个使用原生 CephFS 的示例:

cat << __EOF__ > ~/manila.patch
spec:
  manila:
    enabled: true
    apiOverride:
      route: {}
    template:
      databaseInstance: openstack
      secret: osp-secret
      manilaAPI:
        replicas: 3
        customServiceConfig: |
          [DEFAULT]
          enabled_share_protocols = cephfs
        override:
          service:
            internal:
              metadata:
                annotations:
                  metallb.universe.tf/address-pool: internalapi
                  metallb.universe.tf/allow-shared-ip: internalapi
                  metallb.universe.tf/loadBalancerIPs: 172.17.0.80
              spec:
                type: LoadBalancer
      manilaScheduler:
        replicas: 3
      manilaShares:
        cephfs:
          replicas: 1
          customServiceConfig: |
            [DEFAULT]
            enabled_share_backends = tripleo_ceph
            [tripleo_ceph]
            driver_handles_share_servers=False
            share_backend_name=tripleo_ceph
            share_driver=manila.share.drivers.cephfs.driver.CephFSDriver
            cephfs_conf_path=/etc/ceph/ceph.conf
            cephfs_auth_id=openstack
            cephfs_cluster_name=ceph
            cephfs_volume_mode=0755
            cephfs_protocol_helper_type=CEPHFS
          networkAttachments:
              - storage
__EOF__
Copy to Clipboard Toggle word wrap
oc patch openstackcontrolplane openstack --type=merge --patch-file=~/manila.patch
Copy to Clipboard Toggle word wrap

1.15.4. post-checks

1.15.4.1. 检查生成的 manila 服务 pod

oc get pods -l service=manila
Copy to Clipboard Toggle word wrap
openstack service list | grep manila
Copy to Clipboard Toggle word wrap
openstack endpoint list | grep manila

| 1164c70045d34b959e889846f9959c0e | regionOne | manila       | share        | True    | internal  | http://manila-internal.openstack.svc:8786/v1/%(project_id)s        |
| 63e89296522d4b28a9af56586641590c | regionOne | manilav2     | sharev2      | True    | public    | https://manila-public-openstack.apps-crc.testing/v2                |
| af36c57adcdf4d50b10f484b616764cc | regionOne | manila       | share        | True    | public    | https://manila-public-openstack.apps-crc.testing/v1/%(project_id)s |
| d655b4390d7544a29ce4ea356cc2b547 | regionOne | manilav2     | sharev2      | True    | internal  | http://manila-internal.openstack.svc:8786/v2                       |
Copy to Clipboard Toggle word wrap

1.15.4.3. 验证资源

测试服务的健康状况:

openstack share service list
openstack share pool list --detail
Copy to Clipboard Toggle word wrap

检查现有工作负载:

openstack share list
openstack share snapshot list
Copy to Clipboard Toggle word wrap

您可以创建其他资源:

openstack share create cephfs 10 --snapshot mysharesnap --name myshareclone
Copy to Clipboard Toggle word wrap
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat