创建和使用共享文件系统

根据在安装共享节点时选择的选项(带有共享服务器管理和不带的选项),创建和使用共享文件系统的步骤会有所不同。当共享文件系统服务处理共享服务器的创建和管理时,您需要在创建共享的请求中指定 share network。两种模式在各自的共享类型定义上会有所不同。在使用具有自动处理共享服务器的驱动程序模式时,需要根据您的配置指定服务镜像。以下说明列举了两种驱动程序模式的步骤。请根据您的安装情况选择合适的步骤。

使用共享文件系统选项 1 创建共享 (DHSS = False)

创建共享类型

在使用 LVM 驱动程序创建共享之前,禁用 DHSS (driver_handles_share_servers)。

  1. 获取管理员凭据以访问仅管理员可用的 CLI 命令

    $ . admin-openrc
    
  2. 创建一个默认共享类型,禁用 DHSS。默认共享类型允许您使用此驱动程序创建共享,而无需在创建共享时显式指定共享类型。

    $ manila type-create default_share_type False
    +----------------------+--------------------------------------+
    | Property             | Value                                |
    +----------------------+--------------------------------------+
    | required_extra_specs | driver_handles_share_servers : False |
    | Name                 | default_share_type                   |
    | Visibility           | public                               |
    | is_default           | -                                    |
    | ID                   | 3df065c8-6ca4-4b80-a5cb-e633c0439097 |
    | optional_extra_specs | snapshot_support : True              |
    +----------------------+--------------------------------------+
    

    manila.conf[DEFAULT] 部分设置此默认共享类型,并在继续之前重启 manila-api 服务。否则,默认共享类型将不会生效。

    注意

    创建和配置默认共享类型是可选的。如果您希望使用共享文件系统服务和各种共享类型,并且每个创建共享的请求都可以指定类型,请参阅共享类型用法文档 此处

创建共享

  1. 获取 demo 凭证,以非管理项目身份执行以下步骤

    $ . demo-openrc
    
  2. 创建一个 NFS 共享。由于已创建并配置了默认共享类型,因此无需在请求中指定它。

    $ manila create NFS 1 --name share1
    +-----------------------------+--------------------------------------+
    | Property                    | Value                                |
    +-----------------------------+--------------------------------------+
    | status                      | creating                             |
    | share_type_name             | default_share_type                   |
    | description                 | None                                 |
    | availability_zone           | None                                 |
    | share_network_id            | None                                 |
    | share_group_id              | None                                 |
    | host                        |                                      |
    | access_rules_status         | active                               |
    | snapshot_id                 | None                                 |
    | is_public                   | False                                |
    | task_state                  | None                                 |
    | snapshot_support            | True                                 |
    | id                          | 55c401b3-3112-4294-aa9f-3cc355a4e361 |
    | size                        | 1                                    |
    | name                        | share1                               |
    | share_type                  | 3df065c8-6ca4-4b80-a5cb-e633c0439097 |
    | has_replicas                | False                                |
    | replication_type            | None                                 |
    | created_at                  | 2016-03-30T19:10:33.000000           |
    | share_proto                 | NFS                                  |
    | project_id                  | 3a46a53a377642a284e1d12efabb3b5a     |
    | metadata                    | {}                                   |
    +-----------------------------+--------------------------------------+
    
  3. 一段时间后,共享状态应从 creating 变为 available

    $ manila list
    +--------------------------------------+--------+------+-------------+-----------+-----------+--------------------+-----------------------------+-------------------+
    | ID                                   | Name   | Size | Share Proto | Status    | Is Public | Share Type Name    | Host                        | Availability Zone |
    +--------------------------------------+--------+------+-------------+-----------+-----------+--------------------+-----------------------------+-------------------+
    | 55c401b3-3112-4294-aa9f-3cc355a4e361 | share1 | 1    | NFS         | available | False     | default_share_type | storage@lvm#lvm-single-pool | nova              |
    +--------------------------------------+--------+------+-------------+-----------+-----------+--------------------+-----------------------------+-------------------+
    
  4. 确定共享的导出 IP 地址

    $ manila show share1
    +-----------------------------+------------------------------------------------------------------------------------+
    | Property                    | Value                                                                              |
    +-----------------------------+------------------------------------------------------------------------------------+
    | status                      | available                                                                          |
    | share_type_name             | default_share_type                                                                 |
    | description                 | None                                                                               |
    | availability_zone           | nova                                                                               |
    | share_network_id            | None                                                                               |
    | share_group_id              | None                                                                               |
    | export_locations            |                                                                                    |
    |                             | path = 10.0.0.41:/var/lib/manila/mnt/share-8e13a98f-c310-41df-ac90-fc8bce4910b8    |
    |                             | id = 3c8d0ada-cadf-48dd-85b8-d4e8c3b1e204                                          |
    |                             | preferred = False                                                                  |
    | host                        | storage@lvm#lvm-single-pool                                                        |
    | access_rules_status         | active                                                                             |
    | snapshot_id                 | None                                                                               |
    | is_public                   | False                                                                              |
    | task_state                  | None                                                                               |
    | snapshot_support            | True                                                                               |
    | id                          | 55c401b3-3112-4294-aa9f-3cc355a4e361                                               |
    | size                        | 1                                                                                  |
    | name                        | share1                                                                             |
    | share_type                  | c6dfcfc6-9920-420e-8b0a-283d578efef5                                               |
    | has_replicas                | False                                                                              |
    | replication_type            | None                                                                               |
    | created_at                  | 2016-03-30T19:10:33.000000                                                         |
    | share_proto                 | NFS                                                                                |
    | project_id                  | 3a46a53a377642a284e1d12efabb3b5a                                                   |
    | metadata                    | {}                                                                                 |
    +-----------------------------+------------------------------------------------------------------------------------+
    

允许访问共享

  1. 在尝试通过网络挂载它之前,配置对新共享的访问。计算实例(其 IP 地址由下面的 INSTANCE_IP 引用)必须具有与共享网络中指定的网络的网络连接。

    $ manila access-allow share1 ip INSTANCE_IP
    +--------------+--------------------------------------+
    | Property     | Value                                |
    +--------------+--------------------------------------+
    | share_id     | 55c401b3-3112-4294-aa9f-3cc355a4e361 |
    | access_type  | ip                                   |
    | access_to    | 10.0.0.46                            |
    | access_level | rw                                   |
    | state        | new                                  |
    | id           | f88eab01-7197-44bf-ad0f-d6ca6f99fc96 |
    +--------------+--------------------------------------+
    

在计算实例上挂载共享

  1. 登录到您的计算实例,并创建一个将要挂载的文件夹

    $ mkdir ~/test_folder
    
  2. 使用共享的导出位置在计算实例中挂载 NFS 共享

    # mount -vt nfs 10.0.0.41:/var/lib/manila/mnt/share-8e13a98f-c310-41df-ac90-fc8bce4910b8 ~/test_folder
    

使用共享文件系统选项 2 创建共享 (DHSS = True)

在能够创建共享之前,启用 DHSS (driver_handles_share_servers) 模式的 manila 和通用驱动程序需要定义至少一个镜像、一个网络和一个共享网络,用于创建共享服务器。对于这种 后端 配置,共享服务器是一个提供 NFS 共享的实例。

注意

此配置会自动为每个共享创建一个 cinder 卷。cinder 卷将根据共享网络的定义附加到共享服务器。

  1. 获取管理员凭据以访问仅管理员可用的 CLI 命令

    $ . admin-openrc.sh
    
  2. 创建一个启用 DHSS 的默认共享类型。默认共享类型允许您使用此驱动程序创建共享,而无需在创建共享时显式指定共享类型。

    $ manila type-create default_share_type True
    +----------------------+--------------------------------------+
    | Property             | Value                                |
    +----------------------+--------------------------------------+
    | required_extra_specs | driver_handles_share_servers : True  |
    | Name                 | default_share_type                   |
    | Visibility           | public                               |
    | is_default           | -                                    |
    | ID                   | 8a35da28-0f74-490d-afff-23664ecd4f01 |
    | optional_extra_specs | snapshot_support : True              |
    +----------------------+--------------------------------------+
    

    manila.conf[DEFAULT] 部分设置此默认共享类型,并在继续之前重启 manila-api 服务。否则,默认共享类型将不会生效。

    注意

    创建和配置默认共享类型是可选的。如果您希望使用共享文件系统服务和各种共享类型,并且每个创建共享的请求都可以指定类型,请参阅共享类型用法文档 此处

  3. 在 Image 服务中创建一个 manila 共享服务器镜像。您可以跳过此步骤并使用任何现有的镜像。但是,为了挂载共享,服务镜像必须包含适用于操作系统的适当的 NFS 包。无论您选择哪个镜像作为服务镜像,请务必在 manila.conf 中设置配置值 service_image_nameservice_instance_flavor_idservice_instance_userservice_instance_password

    注意

    manila-share 服务运行时对 manila.conf 进行的任何更改都需要重启服务才能生效。

    注意

    作为指定 manila.conf 中的纯文本 service_instance_password 的替代方案,可以使用选项 path_to_public_keypath_to_private_key 指定密钥对,以配置并允许 共享节点 和创建的共享服务器之间的无密码 SSH 访问。

    $ curl -L \
    https://tarballs.opendev.org/openstack/manila-image-elements/images/manila-service-image-master.qcow2 | \
    glance image-create \
    --name "manila-service-image" \
    --disk-format qcow2 \
    --container-format bare \
    --visibility public --progress
    %   Total    %   Received %   Xferd  Average  Speed   Time     Time     Time      Current
                                         Dload    Upload  Total    Spent    Left      Speed
    100 3008k    100 3008k    0   0      1042k    0       0:00:02  0:00:02  --:--:--  1041k
    +------------------+----------------------------------------------------------------------------------+
    | Property         | Value                                                                            |
    +------------------+----------------------------------------------------------------------------------+
    | checksum         | 48a08e746cf0986e2bc32040a9183445                                                 |
    | container_format | bare                                                                             |
    | created_at       | 2016-01-26T19:52:24Z                                                             |
    | direct_url       | rbd://3c3a4cbc-7331-4fc1-8cbb-79213b9cebff/images/ff97deff-b184-47f8-827c-       |
    |                  | 16c349c82720/snap                                                                |
    | disk_format      | qcow2                                                                            |
    | id               | 1fc7f29e-8fe6-44ef-9c3c-15217e83997c                                             |
    | locations        | [{"url": "rbd://3c3a4cbc-7331-4fc1-8cbb-79213b9cebff/images/ff97deff-b184-47f8   |
    |                  | -827c-16c349c82720/snap", "metadata": {}}]                                       |
    | min_disk         | 0                                                                                |
    | min_ram          | 0                                                                                |
    | name             | manila-service-image                                                             |
    | owner            | e2c965830ecc4162a002bf16ddc91ab7                                                 |
    | protected        | False                                                                            |
    | size             | 306577408                                                                        |
    | status           | active                                                                           |
    | tags             | []                                                                               |
    | updated_at       | 2016-01-26T19:52:28Z                                                             |
    | virtual_size     | None                                                                             |
    | visibility       | public                                                                           |
    +------------------+----------------------------------------------------------------------------------+
    
  4. 列出可用的网络,以获取私有网络的 ID 和子网

    $ neutron net-list
    +--------------------------------------+---------+----------------------------------------------------+
    | id                                   | name    | subnets                                            |
    +--------------------------------------+---------+----------------------------------------------------+
    | 0e62efcd-8cee-46c7-b163-d8df05c3c5ad | public  | 5cc70da8-4ee7-4565-be53-b9c011fca011 10.3.31.0/24  |
    | 7c6f9b37-76b4-463e-98d8-27e5686ed083 | private | 3482f524-8bff-4871-80d4-5774c2730728 172.16.1.0/24 |
    +--------------------------------------+---------+----------------------------------------------------+
    
  5. 获取 demo 凭证,以非管理项目身份执行以下步骤

    $ . demo-openrc.sh
    
    $ manila share-network-create --name demo-share-network1 \
    --neutron-net-id PRIVATE_NETWORK_ID \
    --neutron-subnet-id PRIVATE_NETWORK_SUBNET_ID
    +-------------------+--------------------------------------+
    | Property          | Value                                |
    +-------------------+--------------------------------------+
    | name              | demo-share-network1                  |
    | segmentation_id   | None                                 |
    | created_at        | 2016-01-26T20:03:41.877838           |
    | neutron_subnet_id | 3482f524-8bff-4871-80d4-5774c2730728 |
    | updated_at        | None                                 |
    | network_type      | None                                 |
    | neutron_net_id    | 7c6f9b37-76b4-463e-98d8-27e5686ed083 |
    | ip_version        | None                                 |
    | cidr              | None                                 |
    | project_id        | e2c965830ecc4162a002bf16ddc91ab7     |
    | id                | 58b2f0e6-5509-4830-af9c-97f525a31b14 |
    | description       | None                                 |
    +-------------------+--------------------------------------+
    

创建共享

  1. 使用共享网络创建一个 NFS 共享。由于已创建并配置了默认共享类型,因此无需在请求中指定它。

    $ manila create NFS 1 --name demo-share1 --share-network demo-share-network1
    +-----------------------------+--------------------------------------+
    | Property                    | Value                                |
    +-----------------------------+--------------------------------------+
    | status                      | None                                 |
    | share_type_name             | default_share_type                   |
    | description                 | None                                 |
    | availability_zone           | None                                 |
    | share_network_id            | 58b2f0e6-5509-4830-af9c-97f525a31b14 |
    | share_group_id              | None                                 |
    | host                        | None                                 |
    | snapshot_id                 | None                                 |
    | is_public                   | False                                |
    | task_state                  | None                                 |
    | snapshot_support            | True                                 |
    | id                          | 016ca18f-bdd5-48e1-88c0-782e4c1aa28c |
    | size                        | 1                                    |
    | name                        | demo-share1                          |
    | share_type                  | 8a35da28-0f74-490d-afff-23664ecd4f01 |
    | created_at                  | 2016-01-26T20:08:50.502877           |
    | export_location             | None                                 |
    | share_proto                 | NFS                                  |
    | project_id                  | 48e8c35b2ac6495d86d4be61658975e7     |
    | metadata                    | {}                                   |
    +-----------------------------+--------------------------------------+
    
  2. 一段时间后,共享状态应从 creating 变为 available

    $ manila list
    +--------------------------------------+-------------+------+-------------+-----------+-----------+------------------------+-----------------------------+-------------------+
    | ID                                   | Name        | Size | Share Proto | Status    | Is Public | Share Type Name        | Host                        | Availability Zone |
    +--------------------------------------+-------------+------+-------------+-----------+-----------+------------------------+-----------------------------+-------------------+
    | 5f8a0574-a95e-40ff-b898-09fd8d6a1fac | demo-share1 | 1    | NFS         | available | False     |   default_share_type   | storagenode@generic#GENERIC | nova              |
    +--------------------------------------+-------------+------+-------------+-----------+-----------+------------------------+-----------------------------+-------------------+
    
  3. 确定共享的导出 IP 地址

    $ manila show demo-share1
    +-----------------------------+------------------------------------------------------------------------------------+
    | Property                    | Value                                                                              |
    +-----------------------------+------------------------------------------------------------------------------------+
    | status                      | available                                                                          |
    | share_type_name             | default_share_type                                                                 |
    | description                 | None                                                                               |
    | availability_zone           | nova                                                                               |
    | share_network_id            | 58b2f0e6-5509-4830-af9c-97f525a31b14                                               |
    | share_group_id              | None                                                                               |
    | export_locations            |                                                                                    |
    |                             | path = 10.254.0.6:/shares/share-0bfd69a1-27f0-4ef5-af17-7cd50bce6550               |
    |                             | id = e525cbca-b3cc-4adf-a1cb-b1bf48fa2422                                          |
    |                             | preferred = False                                                                  |
    | host                        | storagenode@generic#GENERIC                                                        |
    | access_rules_status         | active                                                                             |
    | snapshot_id                 | None                                                                               |
    | is_public                   | False                                                                              |
    | task_state                  | None                                                                               |
    | snapshot_support            | True                                                                               |
    | id                          | 5f8a0574-a95e-40ff-b898-09fd8d6a1fac                                               |
    | size                        | 1                                                                                  |
    | name                        | demo-share1                                                                        |
    | share_type                  | 8a35da28-0f74-490d-afff-23664ecd4f01                                               |
    | has_replicas                | False                                                                              |
    | replication_type            | None                                                                               |
    | created_at                  | 2016-03-30T19:10:33.000000                                                         |
    | share_proto                 | NFS                                                                                |
    | project_id                  | 48e8c35b2ac6495d86d4be61658975e7                                                   |
    | metadata                    | {}                                                                                 |
    +-----------------------------+------------------------------------------------------------------------------------+
    

允许访问共享

  1. 在尝试通过网络挂载它之前,配置对新共享的访问。计算实例(其 IP 地址由下面的 INSTANCE_IP 引用)必须具有与共享网络中指定的网络的网络连接。

    $ manila access-allow demo-share1 ip INSTANCE_IP
    +--------------+--------------------------------------+
    | Property     | Value                                |
    +--------------+--------------------------------------+
    | share_id     | 5f8a0574-a95e-40ff-b898-09fd8d6a1fac |
    | access_type  | ip                                   |
    | access_to    | 10.0.0.46                            |
    | access_level | rw                                   |
    | state        | new                                  |
    | id           | aefeab01-7197-44bf-ad0f-d6ca6f99fc96 |
    +--------------+--------------------------------------+
    

在计算实例上挂载共享

  1. 登录到您的计算实例,并创建一个将要挂载的文件夹

    $ mkdir ~/test_folder
    
  2. 使用共享的导出位置在计算实例中挂载 NFS 共享

    $ mount -vt nfs 10.254.0.6:/shares/share-0bfd69a1-27f0-4ef5-af17-7cd50bce6550 ~/test_folder
    

有关如何管理共享的更多信息,请参阅 OpenStack 最终用户指南