1
2
3
4
5
6
7
作者:李晓辉

联系方式:

微信:Lxh_Chat

邮箱:939958092@qq.com

前言

在OpenStack环境中,Manila文件共享服务的部署不仅需要在控制节点上完成相关配置,还需要在共享节点上安装和配置openstack-manila-share服务。共享节点是Manila服务的核心组成部分,它直接负责共享文件系统的创建、管理和维护,是确保虚拟机实例能够高效访问共享文件系统的关键环节。

本文将聚焦于Manila共享节点的部署过程。我们将详细介绍如何在共享节点上安装和配置openstack-manila-share服务,包括如何选择合适的存储后端技术(如NFS、CIFS等),并根据实际需求进行安装、配置与优化。通过本文的指导,你将能够搭建起高效、稳定且可扩展的Manila共享节点环境,为OpenStack云平台提供强大的文件共享支持,满足不同业务场景下的数据共享需求。

Manila共享服务概述

Manila共享节点的作用

Manila共享节点是Manila服务的后端存储节点,其主要功能包括:

  1. 共享文件系统创建与管理:负责创建、删除和管理共享文件系统,支持多种文件系统类型(如NFS、CIFS等)。

  2. 与控制节点通信:与Manila控制节点(manila-apimanila-scheduler)进行通信,接收来自控制节点的指令,并将执行结果反馈给控制节点。

  3. 存储资源管理:管理共享节点上的存储资源,确保共享文件系统的高效存储和访问。

  4. 数据安全与备份:提供数据的安全存储和备份功能,确保共享文件系统的数据安全性和可靠性。

Manila共享节点的架构

Manila共享节点由以下几个主要组件构成:

  1. manila-share:负责实际的共享文件系统创建、管理和与后端存储设备的交互。

  2. 存储后端:共享节点需要配置一个或多个存储后端,如NFS服务器、CIFS服务器等,用于存储共享文件系统的数据。

  3. 网络配置:共享节点需要配置适当的网络设置,以确保虚拟机实例能够通过网络访问共享文件系统。

工作原理

Manila共享节点的工作原理可以概括为以下几个步骤:

  1. 接收指令:共享节点通过与控制节点的通信,接收来自manila-scheduler的指令,如创建共享文件系统、挂载共享文件系统等。

  2. 执行操作:根据接收到的指令,manila-share服务与后端存储设备进行交互,完成共享文件系统的创建、挂载等操作。

  3. 反馈结果:将操作结果反馈给控制节点,确保控制节点能够实时了解共享节点的状态。

  4. 数据访问:虚拟机实例通过网络访问共享节点上的共享文件系统,实现数据的共享和协作。

通过以上机制,Manila共享节点确保了共享文件系统资源的高效管理和灵活配置,为OpenStack环境中的虚拟机实例提供强大的文件共享功能。

安装配置manila共享节点

由于我电脑硬件资源限制,我将Manila共享节点并置在控制节点上,并为控制节点单独添加了一个硬盘,用于Manila的存储。请注意,不要复用Cinder服务的硬盘,以避免存储资源冲突。

安装配置相应软件

在控制节点上安装Manila共享服务及其依赖的软件包。

1
yum install openstack-manila-share python3-PyMySQL -y

准备配置文件

编辑Manila配置文件/etc/manila/manila.conf,设置消息队列、身份认证、数据库连接以及Manila服务的相关参数。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
crudini --set /etc/manila/manila.conf DEFAULT my_ip 192.168.8.10
crudini --set /etc/manila/manila.conf DEFAULT auth_strategy keystone
crudini --set /etc/manila/manila.conf DEFAULT default_share_type default_share_type
crudini --set /etc/manila/manila.conf DEFAULT rootwrap_config /etc/manila/rootwrap.conf
crudini --set /etc/manila/manila.conf DEFAULT transport_url rabbit://openstack:LiXiaohui@controller
crudini --set /etc/manila/manila.conf database connection mysql+pymysql://manila:LiXiaohui@controller/manila
crudini --set /etc/manila/manila.conf keystone_authtoken memcached_servers controller:11211
crudini --set /etc/manila/manila.conf keystone_authtoken www_authenticate_uri http://controller:5000
crudini --set /etc/manila/manila.conf keystone_authtoken auth_url http://controller:5000
crudini --set /etc/manila/manila.conf keystone_authtoken auth_type password
crudini --set /etc/manila/manila.conf keystone_authtoken project_domain_name Default
crudini --set /etc/manila/manila.conf keystone_authtoken user_domain_name Default
crudini --set /etc/manila/manila.conf keystone_authtoken project_name service
crudini --set /etc/manila/manila.conf keystone_authtoken username manila
crudini --set /etc/manila/manila.conf keystone_authtoken password LiXiaohui
crudini --set /etc/manila/manila.conf oslo_concurrency lock_path /var/lib/manila/tmp

1
2
3
4
5
6
[DEFAULT]
auth_strategy = keystone
my_ip = 192.168.8.10
default_share_type = default_share_type
rootwrap_config = /etc/manila/rootwrap.conf
transport_url = rabbit://openstack:LiXiaohui@controller
1
2
[database]
connection = mysql+pymysql://manila:LiXiaohui@controller/manila
1
2
3
4
5
6
7
8
9
10
11
12
13
[keystone_authtoken]
memcached_servers = controller:11211
www_authenticate_uri = http://controller:5000
auth_url = http://controller:5000
auth_type = password
project_domain_name = Default
user_domain_name = Default
project_name = service
username = manila
password = LiXiaohui

[oslo_concurrency]
lock_path = /var/lib/manila/tmp
  • auth_strategy = keystone:指定Manila服务使用的认证策略为Keystone。这意味着所有对Manila API的请求都需要通过Keystone进行身份验证。

  • my_ip = 192.168.8.10:设置Manila服务运行的主机的IP地址。这用于在多节点环境中正确地标识和通信。

  • default_share_type = default_share_type:指定默认的共享类型。共享类型定义了共享文件系统的属性,如性能和存储后端。

  • rootwrap_config = /etc/manila/rootwrap.conf:指定rootwrap配置文件的路径。rootwrap用于安全地执行需要root权限的命令。

  • transport_url = rabbit://openstack:LiXiaohui@controller:指定消息队列(RabbitMQ)的连接信息,用于Manila服务与其他OpenStack服务之间的通信。

Manila驱动模式说明

Manila共享节点支持两种模式:带有共享服务器处理和不带共享服务器处理。这两种模式的选择取决于所使用的驱动程序是否支持。

  • 带有共享服务器处理:在这种模式下,Manila会为每个共享创建一个独立的服务器实例来处理共享存储的访问和管理。这种模式适用于需要对外提供服务的场景。

  • 不带共享服务器处理:在这种模式下,Manila直接在存储后端上创建共享文件系统,而不会为每个共享创建独立的服务器实例。这种模式适用于简单的部署场景或私有云环境。

部署本地驱动模式的manila

由于资源限制,我们默认采用LVM作为存储后端,并为控制节点单独添加了一个硬盘。请确保不要复用Cinder服务的硬盘。

安装相应软件并启动服务

安装Manila共享服务及其依赖的软件包,并启动相关服务。

1
2
yum install lvm2 nfs-utils nfs4-acl-tools portmap targetcli -y
systemctl enable target.service --now

准备后端存储

我新添加的硬盘是/dev/nvme0n3。使用lsblk命令确认你的设备名称。

1
2
pvcreate /dev/nvme0n3
vgcreate manila-volumes /dev/nvme0n3

屏蔽LVM扫描其他设备。编辑/etc/lvm/lvm.conf文件,添加以下内容:

1
2
3
devices {
filter = [ "a/nvme/","r/.*/"]
}

准备配置文件

编辑Manila配置文件/etc/manila/manila.conf,配置LVM后端存储。

1
2
3
4
5
6
7
crudini --set /etc/manila/manila.conf DEFAULT enabled_share_backends lvm
crudini --set /etc/manila/manila.conf DEFAULT enabled_share_protocols NFS
crudini --set /etc/manila/manila.conf lvm share_backend_name LVM
crudini --set /etc/manila/manila.conf lvm share_driver manila.share.drivers.lvm.LVMShareDriver
crudini --set /etc/manila/manila.conf lvm driver_handles_share_servers False
crudini --set /etc/manila/manila.conf lvm lvm_share_volume_group manila-volumes
crudini --set /etc/manila/manila.conf lvm lvm_share_export_ips 192.168.8.10

或者

1
2
3
[DEFAULT]
enabled_share_backends = lvm
enabled_share_protocols = NFS
  • enabled_share_backends = lvm

    • 作用:指定Manila服务启用的共享后端存储类型。

    • 解释:这里配置为lvm,表示Manila将使用LVM(逻辑卷管理)作为共享文件系统的后端存储。LVM是一种灵活的磁盘分区管理方式,允许动态调整存储卷的大小和数量。

  • enabled_share_protocols = NFS

    • 作用:指定Manila支持的共享协议。

    • 解释:这里配置为NFS,表示Manila将支持NFS(网络文件系统)协议。NFS是一种分布式文件系统协议,允许客户端通过网络访问存储在服务器上的文件系统。

1
2
3
4
5
6
[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_ips = 192.168.8.10
  • share_backend_name = LVM

    • 作用:为LVM后端存储指定一个名称。

    • 解释:这个名称用于在Manila服务中标识LVM后端存储。你可以根据需要自定义这个名称,但必须与enabled_share_backends中配置的名称一致。

  • share_driver = manila.share.drivers.lvm.LVMShareDriver

    • 作用:指定Manila使用的共享文件系统驱动程序。

    • 解释:这里配置为manila.share.drivers.lvm.LVMShareDriver,这是Manila提供的一个驱动程序,用于与LVM后端存储进行交互。它允许Manila通过LVM管理共享文件系统的创建、删除和挂载等操作。

  • driver_handles_share_servers = False

    • 作用:指定驱动程序是否管理共享服务器。

    • 解释:这里配置为False,表示Manila不会为每个共享创建独立的服务器实例来处理共享存储的访问和管理。这种模式适用于简单的部署场景或私有云环境,不需要为每个共享创建独立的服务器实例。

  • lvm_share_volume_group = manila-volumes

    • 作用:指定LVM卷组的名称。

    • 解释:这里配置为manila-volumes,表示Manila将在这个卷组中创建和管理逻辑卷。在部署过程中,你已经通过vgcreate命令创建了这个卷组,并将一个或多个物理设备(如硬盘)添加到该卷组中。

  • lvm_share_export_ips = 192.168.8.10

    • 作用:指定共享文件系统的导出IP地址。

    • 解释:这里配置为192.168.8.10,表示Manila将使用这个IP地址来导出共享文件系统,使得客户端可以通过网络访问这些共享文件系统。

启动manila共享服务

启动Manila共享服务及其依赖的服务,并设置为开机自启。

1
systemctl enable openstack-manila-share.service openstack-manila-data.service nfs-server.service --now
  • openstack-manila-share.service 该服务负责管理共享文件系统的创建、删除和挂载操作。
  • openstack-manila-data.service 该服务用于处理与共享文件系统相关的数据操作。
  • nfs-server.service 该服务提供网络文件系统功能,使客户端能够通过网络访问共享文件系统。