本文共 13590 字,大约阅读时间需要 45 分钟。
OpenStack共享文件系统服务(manila)为虚拟机提供文件存储。共享文件系统服务提供了一个管理和配置文件共享的集合。该服务还支持共享类型的管理以及支持共享快照,前提是需要驱动程序支持。
共享文件系统服务由以下组件组成:
manila-api
验证请求并将其路由到共享文件系统服务的WSGI应用程序。
manila-data
一个独立的服务,其目的是处理数据操作,如复制,共享迁移或备份。
manila-scheduler
安排和路由请求到适当的共享服务。调度程序使用可配置的过滤器和计量器来路由请求。筛选计划程序是默认筛选器,可在后端的各种属性(如容量,可用区和其他功能)上启用筛选。
manila-share
管理提供共享文件系统的后端设备。manila共享服务通过使用共享后端驱动程序作为接口与后端设备进行通信。共享驱动程序可以以两种模式之一运行,无论是否处理共享服务器。共享服务器通过共享网络导出文件共享。共享文件系统服务中的共享服务器不由驱动程序管理时,网络要求应该在共享文件系统服务的带外处理。
Messaging queue
在共享文件系统进程之间路由信息。
本节介绍如何在运行Red Hat Enterprise Linux或CentOS的控制器节点上安装和配置代码为manila的共享文件系统服务。此服务至少需要一个管理文件存储后端的额外共享节点。
在安装和配置共享文件系统服务之前,您必须创建数据库,服务凭据和API端点。
1、要创建数据库,请完成以下步骤:
使用数据库访问客户端以root用户身份连接到数据库服务器 :
$ mysql -u root -p
创建manila数据库:
CREATE DATABASE manila;
授予对manila数据库的正确访问权限:
GRANT ALL PRIVILEGES ON manila.* TO 'manila'@'localhost' \
IDENTIFIED BY 'MANILA_DBPASS';
GRANT ALL PRIVILEGES ON manila.* TO 'manila'@'%' \
IDENTIFIED BY 'MANILA_DBPASS';
用MANILA_DBPASS合适的密码替换。
退出数据库访问客户端。
2、获取管理员admin凭据CLI命令:
$ . admin-openrc.sh
3、要创建服务凭据,请完成以下步骤:
创建一个manila用户:
$ openstack user create --domain default --password-prompt manila
User Password:
Repeat User Password:
将admin角色添加到manila用户:
$ openstack role add --project service --user manila admin
创建manila和manilav2服务实体:
$ openstack service create --name manila \
--description "OpenStack Shared File Systems" share
$ openstack service create --name manilav2 \
--description "OpenStack Shared File Systems" sharev2
注意:共享文件系统服务需要两个服务实体。
4、创建共享文件系统服务API端点:
$ openstack endpoint create --region RegionOne \
share public http://controller:8786/v1/%\(tenant_id\)s
$ openstack endpoint create --region RegionOne \
share internal http://controller:8786/v1/%\(tenant_id\)s
$ openstack endpoint create --region RegionOne \
share admin http://controller:8786/v1/%\(tenant_id\)s
$ openstack endpoint create --region RegionOne \
sharev2 public http://controller:8786/v2/%\(tenant_id\)s
$ openstack endpoint create --region RegionOne \
sharev2 internal http://controller:8786/v2/%\(tenant_id\)s
$ openstack endpoint create --region RegionOne \
sharev2 admin http://controller:8786/v2/%\(tenant_id\)s
注意:共享文件系统服务需要每个服务实体的端点。
1、安装软件包:
# yum install openstack-manila python-manilaclient
2、编辑/etc/manila/manila.conf文件并完成以下操作:
在该[database]部分中,配置数据库访问:
[database]
...
connection = mysql+pymysql://manila:MANILA_DBPASS@controller/manila
替换MANILA_DBPASS为您为共享文件系统数据库选择的密码。
3、完成其余的配置manila.conf:
在该[DEFAULT]部分中,配置RabbitMQ 消息队列访问:
[DEFAULT]
...
transport_url = rabbit://openstack:RABBIT_PASS@controller
替换RABBIT_PASS为您为该openstack 帐户选择的密码RabbitMQ。
在该[DEFAULT]部分中,设置以下配置值:
[DEFAULT]
...
default_share_type = default_share_type
share_name_template = share-%s
rootwrap_config = /etc/manila/rootwrap.conf
api_paste_config = /etc/manila/api-paste.ini
重要:该default_share_type选项指定创建共享时使用的默认共享类型,而不指定请求中的共享类型。在配置文件中指定的默认共享类型必须根据driver_handles_share_servers所使用的驱动程序模式进行必要的额外规格(如driver_handles_share_servers)设置。在讨论共享节点的设置和配置的章节中对此进行了进一步说明。
在[DEFAULT]和[keystone_authtoken]部分中,配置身份服务访问:
[DEFAULT]
...
auth_strategy = keystone
[keystone_authtoken]
...
memcached_servers = controller:11211
auth_uri = http://controller:5000
auth_url = http://controller:35357
auth_type = password
project_domain_id = default
user_domain_id = default
project_name = service
username = manila
password = MANILA_PASS
替换MANILA_PASS为您manila 在身份识别服务中为用户选择的密码。
在该[DEFAULT]部分中,将该my_ip选项配置为使用控制器节点的管理接口IP地址:
[DEFAULT]
...
my_ip = 10.0.0.11
在该[oslo_concurrency]部分中,配置锁定路径:
[oslo_concurrency]
...
lock_path = /var/lock/manila
4、填充共享文件系统数据库:
# su -s /bin/sh -c "manila-manage db sync" manila
启动共享文件系统服务并将其配置为在系统引导时启动:
# systemctl enable openstack-manila-api.service openstack-manila-scheduler.service
# systemctl start openstack-manila-api.service openstack-manila-scheduler.service
本节介绍如何为共享文件系统服务安装和配置共享节点。为简单起见,此配置引用一个存储节点与通用驱动程序管理共享服务器。通用后端使用计算、网络和块服务来管理共享服务器以供应共享。
注意:manila共享流程可以以两种模式运行,不管是否共享服务器。一些驱动可能支持这两种模式; 而有些可能只支持这两种模式之一。请参阅“ 配置参考” 以确定您选择的驱动程序是否支持所需的驱动程序模式。本教程介绍如何使用该模式的示例驱动程序设置每个驱动程序模式。
请注意,安装和配置因分布而异。
1、安装软件包:
# yum install openstack-manila-share python2-PyMySQL
2、编辑/etc/manila/manila.conf文件并完成以下操作:
在该[database]部分中,配置数据库访问:
[database]
...
connection = mysql://manila:MANILA_DBPASS@controller/manila
替换MANILA_DBPASS为您为共享文件系统数据库选择的密码。
3、完成其余的配置manila.conf。
在该[DEFAULT]部分中,配置RabbitMQ 消息队列访问:
[DEFAULT]
...
transport_url = rabbit://openstack:RABBIT_PASS@controller
替换RABBIT_PASS为您为该openstack帐户选择的密码 RabbitMQ。
在该[DEFAULT]部分中,设置以下配置值:
[DEFAULT]
...
default_share_type = default_share_type
rootwrap_config = /etc/manila/rootwrap.conf
重要:该default_share_type选项指定创建共享时使用的默认共享类型,而不指定请求中的共享类型。在配置文件中指定的默认共享类型必须根据driver_handles_share_servers所使用的驱动程序模式进行必要的额外规格(如driver_handles_share_servers)设置。这在后面的步骤中解释。
在[DEFAULT]和[keystone_authtoken]部分中,配置身份服务访问:
[DEFAULT]
...
auth_strategy = keystone
[keystone_authtoken]
...
memcached_servers = controller:11211
auth_uri = http://controller:5000
auth_url = http://controller:35357
auth_type = password
project_domain_id = default
user_domain_id = default
project_name = service
username = manila
password = MANILA_PASS
替换MANILA_PASS为您manila 在身份识别服务中为用户选择的密码。
在该[DEFAULT]部分中,配置my_ip选项:
[DEFAULT]
...
my_ip = MANAGEMENT_INTERFACE_IP_ADDRESS
替换MANAGEMENT_INTERFACE_IP_ADDRESS为共享节点上管理网络接口的IP地址,典型值为10.0.0.41,用于以下所示示例体系结构中的第一个节点:
在该[oslo_concurrency]部分中,配置锁定路径:
[oslo_concurrency]
...
lock_path = /var/lib/manila/tmp
1.1.1.1.3.1.1. 两个驱动模式
共享节点可以支持两种模式,有和没有共享服务器的处理。该模式取决于驱动程序的支持。
选项1
部署服务时不需要驱动程序支持共享服务器管理。在这种模式下,服务不会做任何与网络有关的事情。管理员必须确保实例与基于NAS协议的服务器之间的网络连接。
本教程演示如何设置在共享节点上创建LVM卷的LVM驱动程序,并在共享节点上本地安装的NFS服务器的帮助下将其导出。因此,它需要LVM和NFS软件包以及manila-shareLVM卷组的附加磁盘。
这种驱动模式可以被称为driver_handles_share_servers = False 模式,或者简单地称为DHSS=False模式。
选项2
部署服务与驱动程序支持共享服务器管理。在这种模式下,该服务与创建和管理共享服务器的后端驱动程序一起运行。本教程演示如何设置Generic驱动程序。该驱动程序需要计算服务(nova),图像服务(glance)和网络服务(neutron)来创建和管理共享服务器; 和块存储服务(cinder)来创建共享。
用于创建共享服务器的信息是在共享网络的帮助下配置的。
这种驱动模式可以被称为driver_handles_share_servers = True模式,或者简单地称为DHSS=True模式。
警告:在DHSS=True驱动程序模式下运行通用驱动程序时,共享服务应与网络服务在同一节点上运行。但是,DHSS=False由于某些Linux发行版中的错误,这样的服务可能无法有效运行以驱动程序模式运行的LVM驱动程序。有关更多信息,请参阅“ 配置参考指南”中的LVM驱动程序部分 。
选择以下选项之一来配置共享驱动程序:
1.1.1.1.3.1.2. 共享文件系统选项1:没有驱动程序支持共享服务器管理
为简单起见,此配置引用块存储服务的相同存储节点配置。但是,LVM驱动程序需要单独的空本地块存储设备,以避免与块存储服务发生冲突。说明使用/dev/sdc,但是您可以替换您的特定节点的不同值。
前提条件
注意:在存储节点上执行这些步骤。
1、安装支持的实用程序包:
安装LVM和NFS服务器软件包:
# yum install lvm2 nfs-utils nfs4-acl-tools portmap
启动LVM元数据服务并将其配置为在系统引导时启动:
# systemctl enable lvm2-lvmetad.service
# systemctl start lvm2-lvmetad.service
2、创建LVM物理卷/dev/sdc:
# pvcreate /dev/sdc
Physical volume "/dev/sdc" successfully created
3、创建LVM卷组manila-volumes:
# vgcreate manila-volumes /dev/sdc
Volume group "manila-volumes" successfully created
共享文件系统服务在此卷组中创建逻辑卷。
4、只有实例才能访问共享文件系统服务卷。但是,底层操作系统管理与卷关联的设备。默认情况下,LVM卷扫描工具会扫描/dev包含卷的块存储设备的 目录。如果项目在其卷上使用LVM,则扫描工具将检测这些卷并尝试缓存这些卷,这可能会导致底层操作系统和项目卷的各种问题。您必须重新配置LVM以仅扫描包含cinder-volume和manila-volumes卷组的设备。编辑/etc/lvm/lvm.conf文件并完成以下操作:
在该devices部分中,添加一个接受/dev/sdb和/dev/sdc设备的过滤器, 并拒绝所有其他设备:
devices {
...
filter = [ "a/sdb/", "a/sdc", "r/.*/"]
警告:如果您的存储节点在操作系统磁盘上使用LVM,则还必须将关联的设备添加到过滤器。例如,如果/dev/sda设备包含操作系统:
filter = [ "a/sda/", "a/sdb/", "a/sdc", "r/.*/"]
同样,如果计算节点在操作系统磁盘上使用LVM,则还必须修改/etc/lvm/lvm.conf这些节点上的文件中的筛选器, 使其只包含操作系统磁盘。例如,如果/dev/sda 设备包含操作系统:
filter = [ "a/sda/", "r/.*/"]
配置组件
编辑/etc/manila/manila.conf文件并完成以下操作:
在该[DEFAULT]部分中,启用LVM驱动程序和NFS协议:
[DEFAULT]
...
enabled_share_backends = lvm
enabled_share_protocols = NFS
注意
后端名称是任意的。例如,本指南使用驱动程序的名称。
在本[lvm]节中,配置LVM驱动程序:
[lvm]
share_backend_name = LVM
share_driver = manila.share.drivers.lvm.LVMShareDriver
driver_handles_share_servers = False
lvm_share_volume_group = manila-volumes
lvm_share_export_ip = MANAGEMENT_INTERFACE_IP_ADDRESS
替换MANAGEMENT_INTERFACE_IP_ADDRESS为存储节点上管理网络接口的IP地址,典型值为10.0.0.41(对于以下所示示例体系结构中的第一个节点):
为简单起见,此配置引用与用于块存储服务的存储节点相同的存储节点。
注意:本指南介绍如何将共享文件系统服务配置为在generic驱动程序启用共享服务器模式(DHSS)的情况下使用驱动程序。该驱动程序需要计算服务(nova),图像服务(glance)和网络服务(neutron)来创建和管理共享服务器; 和块存储服务(cinder)来创建共享。用于创建共享服务器的信息被配置为共享网络。启用DHSS的通用驱动程序还要求租户的专用网络(计算实例正在运行的位置)连接到公用路由器。
前提条件
在继续之前,请验证计算,网络和数据块存储服务的操作。此选项要求实施网络选项2,并要求在存储节点上安装一些网络服务组件。
安装网络服务组件:
# yum install openstack-neutron openstack-neutron-linuxbridge ebtables
配置组件
编辑/etc/manila/manila.conf文件并完成以下操作:
在该[DEFAULT]部分中,启用通用驱动程序和NFS协议:
[DEFAULT]
...
enabled_share_backends = generic
enabled_share_protocols = NFS
注意:后端名称是任意的。例如,本指南使用驱动程序的名称。
在[neutron],[nova]和[cinder]段,启用这些服务的身份验证:
[neutron]
...
url = http://controller:9696
auth_uri = http://controller:5000
auth_url = http://controller:35357
memcached_servers = controller:11211
auth_type = password
project_domain_name = default
user_domain_name = default
region_name = RegionOne
project_name = service
username = neutron
password = NEUTRON_PASS
[nova]
...
auth_uri = http://controller:5000
auth_url = http://controller:35357
memcached_servers = controller:11211
auth_type = password
project_domain_name = default
user_domain_name = default
region_name = RegionOne
project_name = service
username = nova
password = NOVA_PASS
[cinder]
...
auth_uri = http://controller:5000
auth_url = http://controller:35357
memcached_servers = controller:11211
auth_type = password
project_domain_name = default
user_domain_name = default
region_name = RegionOne
project_name = service
username = cinder
password = CINDER_PASS
在该[generic]部分中,配置通用驱动程序:
[generic]
share_backend_name = GENERIC
share_driver = manila.share.drivers.generic.GenericShareDriver
driver_handles_share_servers = True
service_instance_flavor_id = 100
service_image_name = manila-service-image
service_instance_user = manila
service_instance_password = manila
interface_driver = manila.network.linux.interface.BridgeInterfaceDriver
注意:您也可以使用SSH密钥代替服务实例凭证的密码认证。
重要:service_image_name,service_instance_flavor_id, service_instance_user和service_instance_password是参照所使用的驱动程序来创建共享服务器服务镜像。项目中generic 提供了与驱动程序一起使用的示例服务镜像manila-image-elements。在安装后步骤中介绍了其创建过程(请参阅: 创建和使用共享文件系统)。
完成安装
准备manila分享作为开始/停止服务。启动共享文件系统服务(包括其依赖关系),并将其配置为在系统引导时启动:
# systemctl enable openstack-manila-share.service target.service
# systemctl start openstack-manila-share.service target.service
验证共享文件系统服务的操作。
注意:在控制器节点上执行这些命令。
1、生效admin凭据来访问仅管理员CLI命令:
$ . admin-openrc.sh
2、列出服务组件以验证每个进程的成功启动:
$ manila service-list
根据在安装共享节点时选择的选项(带有共享服务器管理的选项或者不带); 创建和使用共享文件系统的步骤将有所不同。当共享文件系统服务处理共享服务器的创建和管理时,您需要指定 带有share network请求创建共享。两种模式在各自的共享类型定义中都会有所不同。在自动处理共享服务器的情况下使用驱动程序模式时,需要根据您的配置中指定的服务镜像。以下说明列举了两种驱动程序模式的步骤。以遵循适合您的安装的内容。
创建共享类型
在使用LVM驱动程序创建共享之前,禁用DHSS(driver_handles_share_servers)。
1、获取管理员凭据以访问仅限管理员的CLI命令:
$ . admin-openrc
2、创建一个禁用DHSS的默认共享类型。默认共享类型将允许您使用此驱动程序创建共享,而无需在共享创建期间明确指定共享类型。
$ manila type-create default_share_type False
设置此默认共享键入manila.conf下的[DEFAULT] 部分,然后重新启动manila-api继续之前的服务。除非您这样做,否则默认分享类型将无效。
注意:创建和配置默认的共享类型是可选的。如果您希望使用具有各种共享类型的共享文件系统服务,其中每个共享创建请求都可以指定类型,请参阅此处的共享类型使用文档<http://docs.openstack.org/admin-guide /shared-file-systems-share-types.html>_。
创建一个共享
1、生效demo环境作为非管理员,执行以下步骤:
$ . demo-openrc
2、创建一个NFS共享。由于默认的共享类型已被创建和配置,因此不需要在请求中指定。
$ manila create NFS 1 --name share1
3、过了一段时间,股份状态应该从creating 变为available:
$ manila list
4、确定共享的导出IP地址:
$ manila show share1
允许访问共享
在尝试通过网络安装之前配置对新共享的访问。计算实例(其IP地址由以下INSTANCE_IP引用)必须具有与共享网络中指定的网络的网络连接。
$ manila access-allow share1 ip INSTANCE_IP
将共享挂载到计算实例上?
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
在能够创建共享之前,具有通用驱动程序和启用DHSS(driver_handles_share_servers)模式的马尼拉需要至少定义用于创建共享服务器的镜像,网络和共享网络。对于后端配置,共享服务器是NFS共享服务的实例。
注意:此配置会自动为每个共享创建一个cinder卷。根据共享网络的定义,将cinder卷连接到共享服务器。
1、获取管理员凭据以访问仅限管理员的CLI命令:
$ . admin-openrc.sh
2、创建启用DHSS的默认共享类型。默认共享类型将允许您使用此驱动程序创建共享,而无需在共享创建期间明确指定共享类型。
$ manila type-create default_share_type True
设置此默认共享manila.conf下的[DEFAULT] 部分,然后重新启动manila-api服务。除非您这样做,否则默认分享类型将不会生效。
注意:创建和配置默认的共享类型是可选的。如果您希望使用具有各种共享类型的共享文件系统服务,其中每个共享创建请求都可以指定类型,请参阅此处的共享类型使用文档<http://docs.openstack.org/admin-guide /shared-file-systems-share-types.html>_。
3、在Image服务中创建一个马尼拉共享服务器镜像。您可以跳过这一步并使用任何现有的镜像。但是,为了装载共享,服务镜像必须包含适合操作系统的NFS软件包。无论你选择什么镜像成为服务镜像,一定要在 manila.conf设置service_image_name,service_instance_flavor_id, service_instance_user和service_instance_password。
注意:manila.conf在manila-share服务运行时所做的任何更改都需要重新启动服务才能生效。
注意:作为service_instance_password在配置中指定纯文本的替代方法, 可以使用选项指定密钥对,path_to_public_key和 path_to_private_key在共享节点和共享服务器之间配置和允许无密码SSH访问。
$ glance image-create \
--copy-from http://tarballs.openstack.org/manila-image-elements/images/manila-service-image-master.qcow2 \
--name "manila-service-image" \
--disk-format qcow2 \
--container-format bare \
--visibility public --progress
4、列出可用网络以获取专用网络的ID和子网:
$ neutron net-list
获取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
创建一个共享
1、使用共享网络创建一个NFS共享。由于默认的共享类型已被创建和配置,因此不需要在请求中指定。
$ manila create NFS 1 --name demo-share1 --share-network demo-share-network1
2、过了一段时间,股份状态应该从以下creating 变为available:
$ manila list
3、确定共享的导出IP地址:
$ manila show demo-share1
允许访问共享
在尝试通过网络安装之前配置对新共享的访问。计算实例(其IP地址由以下INSTANCE_IP引用)必须具有与共享网络中指定的网络的网络连接。
$ manila access-allow demo-share1 ip INSTANCE_IP
将共享挂载到计算实例上
1、登录到您的计算实例,并创建一个文件夹放置的地方:
$ mkdir ~/test_folder
2、使用共享的导出位置在计算实例中挂载NFS共享:
$ mount -vt nfs 10.254.0.6:/shares/share-0bfd69a1-27f0-4ef5-af17-7cd50bce6550 ~/test_folder
本文转自yuweibing51CTO博客,原文链接:http://blog.51cto.com/yuweibing/1981185 ,如需转载请自行联系原作者