跳转到主要内容

Backend.AI 存储代理

项目描述

Backend.AI 存储代理

Backend.AI 存储代理是一个RPC守护进程,用于管理在Backend.AI代理中使用的vfolders,并支持配额和存储特定优化。

包结构

  • ai.backend.storage
    • server:代理守护进程,在Backend.AI Manager之间进行通信
    • api.client:面向客户端的API,用于处理tus.io服务器端协议的上传和下载的HTTP范围查询。
    • api.manager:面向管理器(内部)的API,提供卷的抽象和硬件资源的分离,用于卷和文件操作。
    • vfs
      • 仅使用标准Linux文件系统接口的最小回退后端
    • xfs
      • 针对XFS优化的后端,具有一个小守护进程来管理XFS项目ID以限制配额
      • agent:具有XFS支持的AbstractVolumeAgent实现
    • purestorage
      • PureStorage的FlashBlade优化后端,使用RapidFile Toolkit(以前称为PureTools)
    • netapp
      • 基于NetApp ONTAP REST API的NetApp QTree集成后端
    • weka
      • 使用Weka.IO V2 REST API的Weka.IO集成后端
    • cephfs (待办事项)
      • 支持配额限制的CephFS优化后端

安装

先决条件

安装过程

首先,准备此代理的源代码克隆

# git clone https://github.com/lablup/backend.ai-storage-proxy

从现在起,假设所有shell命令都在虚拟环境中执行。

现在安装依赖项。

# pip install -U -r requirements/dist.txt  # for deployment
# pip install -U -r requirements/dev.txt   # for development

然后,将halfstack.toml复制到项目文件夹的根目录,并编辑以匹配您的机器。

# cp config/sample.toml storage-proxy.toml

完成后,启动存储服务器。

# python -m ai.backend.storage.server

它将启动绑定在127.0.0.1:6021(客户端API)和127.0.0.1:6022(管理API)的存储代理守护进程。

注意:根据后端,服务器可能需要以root用户身份运行。

生产部署

为了通过使用操作系统提供的sendfile()系统调用提高文件传输性能,SSL终止应由反向代理如nginx处理,而存储代理守护进程本身应无SSL运行。

文件系统后端

VFS

先决条件

  • 对给定目录的访问用户账户权限
    • 确保例如/vfroot/vfs这样的目录或您想要挂载的目录存在

XFS

先决条件

  • /vfroot下挂载的本地设备
  • 对XFS文件系统的原生支持
    • 使用选项-o pquota挂载XFS卷以启用项目配额
    • 要启用根文件系统的配额,必须设置带有rootflags=引导参数的配额挂载标志。通常不推荐这样做。
  • 根权限访问
    • 执行xfs_quota,它执行配额相关命令,需要root权限。
    • 因此,您需要由root用户或具有密码less sudo访问权限的用户启动存储代理服务。
    • 如果root用户启动存储代理,则每个创建的文件的拥有者也是root。在某些情况下,这可能不是期望的设置。在这种情况下,最好使用具有密码less sudo权限的普通用户启动服务。

创建虚拟XFS设备进行测试

如果您是唯一使用存储进行测试的人,则创建一个挂载到lo(环回)的虚拟块设备

  1. 创建您所需大小的文件
# dd if=/dev/zero of=xfs_test.img bs=1G count=100
  1. 将文件制作成XFS分区
# mkfs.xfs xfs_test.img
  1. 将其挂载到环回
# export LODEVICE=$(losetup -f)
# losetup $LODEVICE xfs_test.img
  1. 创建挂载点并挂载环回设备,使用pquota选项
# mkdir -p /vfroot/xfs
# mount -o loop -o pquota $LODEVICE /vfroot/xfs

关于操作的说明

XFS在两个文件上保留配额映射信息:/etc/projects/etc/projid。如果它们被删除或以任何方式损坏,每个目录的配额信息也会丢失。因此,绝对不要意外删除它们。如果可能的话,将它们备份到不同的磁盘或NFS是一个好主意。

PureStorage FlashBlade

先决条件

  • /vfroot下挂载的NFSv3导出
  • Purity API访问

CephFS

先决条件

  • /vfroot下挂载的FUSE导出

NetApp ONTAP

先决条件

  • /vfroot下挂载的NFSv3导出
  • NetApp ONTAP API访问
  • 本机NetApp XCP或Dockerized NetApp XCP容器
  • 使用NetApp ONTAP Sysmgr GUI显式在卷中创建Qtree

关于操作的说明

Backend.AI存储代理的卷主机对应于NetApp ONTAP的Qtree,而不是NetApp ONTAP卷。
请勿在NetApp ONTAP Sysmgr GUI中删除Backend.AI映射的Qtree。否则,您将无法通过Backend.AI访问NetApp ONTAP卷。

注意
配置文件(storage-proxy.toml)中的Qtree名称必须与在NetApp ONTAP Sysmgr中创建的名称相同。

Weka.IO

先决条件

  • 安装并运行Weka.IO代理
  • 在本地机器上挂载Weka.IO文件系统,权限设置得使存储代理进程可以读写
  • 访问Weka.IO REST API(用户名/密码/组织)

项目详情


发布历史 发布通知 | RSS源

下载文件

下载适合您平台的文件。如果您不确定该选择哪个,请了解更多关于 安装包 的信息。

源分布

backend_ai_storage_proxy-24.3.10.tar.gz (73.7 kB 查看哈希值)

上传时间

构建分布

backend.ai_storage_proxy-24.3.10-py3-none-any.whl (89.0 kB 查看哈希值)

上传时间 Python 3

由...