通用共享配置方法

共享文件系统服务可以配置为使用计算虚拟机和块存储服务卷。共享文件系统服务中有两个模块处理它们

  • service_instance 模块在计算中创建虚拟机,并使用预定义的镜像,该镜像名为 service image。该模块可用于任何驱动程序,以便配置服务虚拟机,从而能够为租户隔离共享资源。

  • generic 模块与块存储服务卷以及由 service_instance 模块创建的虚拟机一起工作,然后基于附加到虚拟机的卷创建共享文件系统。

网络配置

每个驱动程序都可以以自己的方式处理网络,请参阅:https://wiki.openstack.org/wiki/manila/Networking

可以使用 service_instance 模块选择两种可能的配置来配置共享:

  • 服务虚拟机具有一个网络接口,该接口连接到连接到公共路由器的网络。为了成功创建共享,用户网络也应连接到公共路由器。

  • 服务虚拟机有两个网络接口,第一个连接到服务网络,第二个直接连接到用户的网络。

服务镜像要求

  • 基于 Linux 的发行版

  • NFS 服务器

  • Samba 服务器 >= 3.2.0,可以通过存储在注册表中的数据进行配置

  • SSH 服务器

  • 配置为 DHCP 的两个网络接口(参见网络方法)

  • 用于共享操作的 exportfsnet conf

  • 将使用以下文件,如果它们的路径不同,则需要至少为它们创建符号链接

    • /etc/exports:包含 NFS 导出的永久文件。

    • /var/lib/nfs/etabexportfs 使用的包含 NFS 导出的临时文件。

    • /etc/fstab:包含挂载文件系统的永久文件。

    • /etc/mtabmount 使用的包含挂载文件系统的临时文件。

支持的共享文件系统和操作

该驱动程序支持CIFS和NFS共享。

支持以下操作

  • 创建共享。

  • 删除共享。

  • 允许共享访问。

    请注意以下限制

    • 仅支持 IP 访问类型用于 NFS 和 CIFS。

  • 拒绝共享访问。

  • 创建快照。

  • 删除快照。

  • 从快照创建共享。

  • 扩展共享。

  • 缩小共享。

已知限制

  • Nova 的一种配置仅允许每个服务器 26 个共享。此限制来自用于连接块设备的虚拟 PCI 接口的最大数量。在此配置中,有两个虚拟 PCI 接口用于服务器需求,其余 26 个用于连接用作共享的块设备。

使用 Windows 实例

虽然通用驱动程序仅支持 Linux 实例,但如果需要 Windows 实例,可以使用 Windows SMB 驱动程序。

有关更多详细信息,请查看以下页面:Windows SMB 驱动程序

驱动程序选项

下表包含特定于此驱动程序的配置选项。

通用共享驱动程序配置选项说明

配置选项 = 默认值

描述

[DEFAULT]

connect_share_server_to_tenant_network = False

(布尔值) 将共享服务器直接连接到共享网络。仅与 Neutron 配合使用,并且如果 driver_handles_share_servers=True。

container_volume_group = manila_docker_volumes

(字符串) 用于卷的 LVM 卷组。此卷组必须由云管理员独立于 manila 操作创建。

driver_handles_share_servers = None

(布尔值) Manila 中的共享驱动程序有两种可能的处理方法。第一种是共享驱动程序能够处理共享服务器,第二种是不能。驱动程序可以支持这两种方法中的任何一种或仅支持其中一种。因此,如果共享驱动程序能够处理共享服务器并且是所需模式,则将此选项设置为 True,否则设置为 False。默认设置为 None,以使此选择具有目的性。

goodness_function = None

(字符串) 用于确定主机优劣的方程的字符串表示形式。

interface_driver = manila.network.linux.interface.OVSInterfaceDriver

(字符串) Vif 驱动程序。仅与 Neutron 配合使用,并且如果 driver_handles_share_servers=True。

manila_service_keypair_name = manila-service

(字符串) 将创建并用于服务实例的密钥对名称。仅在 driver_handles_share_servers=True 时使用。

max_time_to_attach = 120

(整数) 等待 cinder 卷附加的最大时间。

max_time_to_build_instance = 300

(整数) 等待创建服务实例的最大时间(秒)。

max_time_to_create_volume = 180

(整数) 等待创建 cinder 卷的最大时间。

max_time_to_extend_volume = 180

(整数) 等待扩展 cinder 卷的最大时间。

ovs_integration_bridge = br-int

(字符串) 要使用的 Open vSwitch 网桥的名称。

path_to_private_key = None

(字符串) 主机私钥的路径。

path_to_public_key = ~/.ssh/id_rsa.pub

(字符串) 主机公钥的路径。仅在 driver_handles_share_servers=True 时使用。

protocol_access_mapping = {'ip': ['nfs'], 'user': ['cifs']}

(字典) 此后端的协议访问映射。应是一个字典,由 {‘access_type1’: [‘share_proto1’, ‘share_proto2’], ‘access_type2’: [‘share_proto2’, ‘share_proto3’]} 组成。

service_image_name = manila-service-image

(字符串) Glance 中用于服务实例创建的镜像名称。仅在 driver_handles_share_servers=True 时使用。

service_instance_flavor_id = 100

(字符串) 用于服务实例创建的风味 ID。仅在 driver_handles_share_servers=True 时使用。

service_instance_name_or_id = None

(字符串) Nova 中要用于共享导出的服务实例的名称或 ID。仅在禁用共享服务器处理时使用。

service_instance_name_template = %s

(字符串) 服务实例的名称。仅在 driver_handles_share_servers=True 时使用。

service_instance_network_helper_type = neutron

(字符串) 已弃用:用于在 driver_handles_share_servers=True 时选择 neutron 和 nova 帮助程序之间进行选择。已过时。此选项不再使用,因为不再支持 nova 网络。

service_instance_password = None

(字符串) 服务实例用户的密码。

service_instance_security_group = manila-service

(字符串) 用于服务实例创建的安全组名称。仅在 driver_handles_share_servers=True 时使用。

service_instance_smb_config_path = $share_mount_path/smb.conf

(字符串) 服务实例中的 SMB 配置文件路径。

service_instance_user = None

(字符串) 用于身份验证的服务实例中的用户。

service_net_name_or_ip = None

(字符串) 可以是 Nova 中服务实例用于获取 IP 地址的网络名称,也可以是在那里管理共享的 IP 地址本身。仅在禁用共享服务器处理时使用。

service_network_cidr = 10.254.0.0/16

(字符串) manila 服务网络的 CIDR。仅与 Neutron 配合使用,并且如果 driver_handles_share_servers=True。

service_network_division_mask = 28

(整数) 此掩码用于将服务网络划分为子网,具有此掩码的子网的 IP 容量直接定义了每个租户子网可以创建的服务 VM 的数量。仅与 Neutron 配合使用,并且如果 driver_handles_share_servers=True。

service_network_name = manila_service_network

(字符串) manila 服务网络的名称。仅与 Neutron 配合使用。仅在 driver_handles_share_servers=True 时使用。

share_helpers = CIFS=manila.share.drivers.helpers.CIFSHelperIPAccess, NFS=manila.share.drivers.helpers.NFSHelper

(列表) 指定共享导出助手列表。

share_mount_path = /shares

(字符串) 服务实例中共享将挂载的父路径。

share_mount_template = mount -vt %(proto)s %(options)s %(export)s %(path)s

(字符串) 此后端的共享挂载模板。必须指定带有所有必要参数的执行文件以支持的协议。‘proto’ 模板元素如果包含在命令中,则可能不需要。‘export’ 和 ‘path’ 模板元素是必需的。建议为每个后端分隔不同的命令。

share_unmount_template = umount -v %(path)s

(字符串) 此后端的共享卸载模板。必须指定带有所有必要参数的执行文件以支持的协议。‘path’ 模板元素是必需的。建议为每个后端分隔不同的命令。

share_volume_fstype = ext4

(字符串) 共享卷的文件系统类型。

tenant_net_name_or_ip = None

(字符串) 可以是 Nova 中服务实例用于获取 IP 地址的网络名称,也可以是在那里导出共享的 IP 地址本身。仅在禁用共享服务器处理时使用。

volume_name_template = manila-share-%s

(字符串) 卷名称模板。

volume_snapshot_name_template = manila-snapshot-%s

(字符串) 卷快照名称模板。

[glance]

api_microversion = 2

(字符串) 要使用的 Glance API 版本。

region_name = RegionOne

(字符串) 连接到 glance 的区域名称。

auth_url = None

(字符串) 身份验证 URL

auth_type = None

(字符串) 要加载的身份验证类型

cafile = None

(字符串) 在验证 HTTPS 连接时使用的 PEM 编码的证书颁发机构。

certfile = None

(String) PEM 编码的客户端证书文件

collect_timing = false

(Boolean) 收集每个 API 调用所花费的时间信息。

default_domain_id = None

(String) 可选的域 ID,用于 v3 和 v2 参数。它将用于 v3 中的用户和项目域,并在 v2 身份验证中被忽略。

default_domain_name = None

(String) 可选的域名称,用于 v3 API 和 v2 参数。它将用于 v3 中的用户和项目域,并在 v2 身份验证中被忽略。

domain_id = None

(String) 要限定的域 ID

domain_name = None

(String) 要限定的域名称

insecure = false

(Boolean) 验证 HTTPS 连接。

keyfile = None

(String) PEM 编码的客户端证书密钥文件

password = None

(String) 用户的密码。

project_domain_id = None

(String) 包含项目的域 ID

project_domain_name = None

(String) 包含项目的域名称

project_id = None

(String) 要限定的项目 ID

project_name = None

(String) 要限定的项目名称

split_loggers = false

(Boolean) 将请求记录到多个记录器。

system_scope = None

(String) 系统操作的范围

timeout = None

(Integer) HTTP 请求的超时值

trust_id = None

(String) 信任 ID

user_domain_id = None

(String) 用户的域 ID

user_domain_name = None

(String) 用户的域名称

user_id = None

(String) 用户 ID

username = None

(String) 用户名

[cinder]

cross_az_attach = True

(Boolean) 允许在不同可用区之间附加实例和卷。

http_retries = 3

(Integer) cinderclient 在失败的 HTTP 调用上重试的次数。

endpoint_type = publicURL

(String) 与 cinder 客户端调用一起使用的端点类型。

region_name = RegionOne

(String) 连接到 cinder 的区域名称。

auth_url = None

(字符串) 身份验证 URL

auth_type = None

(字符串) 要加载的身份验证类型

cafile = None

(字符串) 在验证 HTTPS 连接时使用的 PEM 编码的证书颁发机构。

certfile = None

(String) PEM 编码的客户端证书文件

collect_timing = false

(Boolean) 收集每个 API 调用所花费的时间信息。

default_domain_id = None

(String) 可选的域 ID,用于 v3 和 v2 参数。它将用于 v3 中的用户和项目域,并在 v2 身份验证中被忽略。

default_domain_name = None

(String) 可选的域名称,用于 v3 API 和 v2 参数。它将用于 v3 中的用户和项目域,并在 v2 身份验证中被忽略。

domain_id = None

(String) 要限定的域 ID

domain_name = None

(String) 要限定的域名称

insecure = false

(Boolean) 验证 HTTPS 连接。

keyfile = None

(String) PEM 编码的客户端证书密钥文件

password = None

(String) 用户的密码。

project_domain_id = None

(String) 包含项目的域 ID

project_domain_name = None

(String) 包含项目的域名称

project_id = None

(String) 要限定的项目 ID

project_name = None

(String) 要限定的项目名称

split_loggers = false

(Boolean) 将请求记录到多个记录器。

system_scope = None

(String) 系统操作的范围

timeout = None

(Integer) HTTP 请求的超时值

trust_id = None

(String) 信任 ID

user_domain_id = None

(String) 用户的域 ID

user_domain_name = None

(String) 用户的域名称

user_id = None

(String) 用户 ID

username = None

(String) 用户名

[neutron]

url = http://127.0.0.1:9696

(String) 连接到 neutron 的 URL。

url_timeout = 30

(Integer) 连接到 neutron 的超时值(秒)。

auth_strategy = keystone

(String) 以管理员身份连接到 neutron 的身份验证策略。

endpoint_type = publicURL

(String) 与 neutron 客户端调用一起使用的端点类型。

region_name = None

(String) 以管理员身份连接到 neutron 的区域名称。

auth_url = None

(字符串) 身份验证 URL

auth_type = None

(字符串) 要加载的身份验证类型

cafile = None

(字符串) 在验证 HTTPS 连接时使用的 PEM 编码的证书颁发机构。

certfile = None

(String) PEM 编码的客户端证书文件

collect_timing = false

(Boolean) 收集每个 API 调用所花费的时间信息。

default_domain_id = None

(String) 可选的域 ID,用于 v3 和 v2 参数。它将用于 v3 中的用户和项目域,并在 v2 身份验证中被忽略。

default_domain_name = None

(String) 可选的域名称,用于 v3 API 和 v2 参数。它将用于 v3 中的用户和项目域,并在 v2 身份验证中被忽略。

domain_id = None

(String) 要限定的域 ID

domain_name = None

(String) 要限定的域名称

insecure = false

(Boolean) 验证 HTTPS 连接。

keyfile = None

(String) PEM 编码的客户端证书密钥文件

password = None

(String) 用户的密码。

project_domain_id = None

(String) 包含项目的域 ID

project_domain_name = None

(String) 包含项目的域名称

project_id = None

(String) 要限定的项目 ID

project_name = None

(String) 要限定的项目名称

split_loggers = false

(Boolean) 将请求记录到多个记录器。

system_scope = None

(String) 系统操作的范围

timeout = None

(Integer) HTTP 请求的超时值

trust_id = None

(String) 信任 ID

user_domain_id = None

(String) 用户的域 ID

user_domain_name = None

(String) 用户的域名称

user_id = None

(String) 用户 ID

username = None

(String) 用户名

[nova]

api_microversion = 2.10

(String) 要使用的 Nova API 版本。

endpoint_type = publicURL

(String) 与 nova 客户端调用一起使用的端点类型。

region_name = None

(String) 连接到 nova 的区域名称。

auth_url = None

(字符串) 身份验证 URL

auth_type = None

(字符串) 要加载的身份验证类型

cafile = None

(字符串) 在验证 HTTPS 连接时使用的 PEM 编码的证书颁发机构。

certfile = None

(String) PEM 编码的客户端证书文件

collect_timing = false

(Boolean) 收集每个 API 调用所花费的时间信息。

default_domain_id = None

(String) 可选的域 ID,用于 v3 和 v2 参数。它将用于 v3 中的用户和项目域,并在 v2 身份验证中被忽略。

default_domain_name = None

(String) 可选的域名称,用于 v3 API 和 v2 参数。它将用于 v3 中的用户和项目域,并在 v2 身份验证中被忽略。

domain_id = None

(String) 要限定的域 ID

domain_name = None

(String) 要限定的域名称

insecure = false

(Boolean) 验证 HTTPS 连接。

keyfile = None

(String) PEM 编码的客户端证书密钥文件

password = None

(String) 用户的密码。

project_domain_id = None

(String) 包含项目的域 ID

project_domain_name = None

(String) 包含项目的域名称

project_id = None

(String) 要限定的项目 ID

project_name = None

(String) 要限定的项目名称

split_loggers = false

(Boolean) 将请求记录到多个记录器。

system_scope = None

(String) 系统操作的范围

timeout = None

(Integer) HTTP 请求的超时值

trust_id = None

(String) 信任 ID

user_domain_id = None

(String) 用户的域 ID

user_domain_name = None

(String) 用户的域名称

user_id = None

(String) 用户 ID

username = None

(String) 用户名