HDFS原生驱动

HDFS原生驱动是基于OpenStack manila服务的一个插件,它使用Hadoop分布式文件系统(HDFS),这是一种设计用于存储大量数据的分布式文件系统,并提供对数据的吞吐量高的访问。

在该驱动程序中,manila共享是hdfs根目录下的一个子目录。实例通过‘hdfs’协议直接与HDFS存储后端通信。并且,基于用户访问类型的访问权限被允许,这与HDFS ACLs对齐,以支持对多个用户和组的访问控制。

网络配置

存储后端和manila主机应该在扁平网络中,否则,它们之间应该存在L3连接。

支持的共享文件系统

  • HDFS(通过用户身份验证)

支持的操作

  • 创建HDFS共享

  • 删除HDFS共享

  • 允许HDFS共享访问 * 仅支持用户访问类型 * 支持访问级别(ro/rw)

  • 拒绝HDFS共享访问

  • 创建快照

  • 删除快照

  • 从快照创建共享

  • 扩展共享

需求

  • 在存储后端安装HDFS软件包,版本 >= 2.4.x

  • 要启用访问控制,HDFS文件系统必须启用ACLs

  • 建立manila主机和存储后端之间的网络连接

Manila驱动程序配置

  • share_driver = manila.share.drivers.hdfs.hdfs_native.HDFSNativeShareDriver

  • hdfs_namenode_ip = HDFS namenode的IP地址,目前仅支持单个

    namenode

  • hdfs_namenode_port = HDFS namenode服务的端口

  • hdfs_ssh_port = HDFS namenode SSH端口

  • hdfs_ssh_name = HDFS namenode SSH登录名

  • hdfs_ssh_pw = HDFS namenode SSH登录密码,如果配置了以下hdfs_ssh_private_key,则此参数不是

    必需的

  • hdfs_ssh_private_key = 用于ssh登录的HDFS namenode私钥的路径

已知限制

  • 此驱动程序不支持网络分段的多租户模型。相反,多租户由租户特定的用户身份验证支持

  • Kilo版本仅支持单个HDFS namenode

The manila.share.drivers.hdfs.hdfs_native 模块

用于manila共享的HDFS原生协议(hdfs)驱动程序。

Manila共享是HDFS中的一个目录。并且此共享不使用服务VM实例(共享服务器)。实例直接与HDFS集群通信。

初始版本仅支持单个namenode和扁平网络。

配置要求

要启用访问控制,HDFS文件系统必须启用ACLs。

class HDFSNativeShareDriver(*args, **kwargs)

基于 ExecuteMixinShareDriver

HDFS共享驱动程序。

执行与共享相关的命令。API版本历史记录

1.0 - 初始版本

allow_access(context, share, access, share_server=None)

允许给定用户访问共享。

check_for_setup_error()

如果满足先决条件,则返回错误。

create_share(context, share, share_server=None)

创建一个作为共享的HDFS目录。

create_share_from_snapshot(context, share, snapshot, share_server=None, parent_share=None)

创建快照。

create_snapshot(context, snapshot, share_server=None)

创建快照。

delete_share(context, share, share_server=None)

删除共享存储。

delete_snapshot(context, snapshot, share_server=None)

删除快照。

deny_access(context, share, access, share_server=None)

拒绝给定用户对共享的访问。

do_setup(context)

在共享驱动程序启动时执行初始化。

ensure_share(context, share, share_server=None)

确保存储已导出。

extend_share(share, new_size, share_server=None)

扩展共享存储。

get_network_allocations_number()

返回创建 VIF 的网络分配数量。

使用 Nova 进行共享服务器的驱动程序应在此处返回零 (0),就像通用驱动程序一样。因为 Nova 将处理网络资源分配。自行处理网络的驱动程序应根据自己的要求进行计算。它可以有 1 个或多个网络接口。