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优化后端
安装
先决条件
- Python 3.8或更高版本,带有pyenv和pyenv-virtualenv(可选但推荐)
安装过程
首先,准备此代理的源代码克隆
# 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
(环回)的虚拟块设备
- 创建您所需大小的文件
# dd if=/dev/zero of=xfs_test.img bs=1G count=100
- 将文件制作成XFS分区
# mkfs.xfs xfs_test.img
- 将其挂载到环回
# export LODEVICE=$(losetup -f)
# losetup $LODEVICE xfs_test.img
- 创建挂载点并挂载环回设备,使用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 XCP的说明,请参阅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(用户名/密码/组织)
项目详情
下载文件
下载适合您平台的文件。如果您不确定该选择哪个,请了解更多关于 安装包 的信息。
源分布
构建分布
backend_ai_storage_proxy-24.3.10.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 04e5ecd6418c3195271fe85a05779ae48dac7018546c45b3f7b5a2db71a7af7d |
|
MD5 | befdd1a41f881a5e3408f951cbfd1d7a |
|
BLAKE2b-256 | 92771299aab2d307d0d074f06a95be210811cf5da41e75faa19d8ec0913f6da5 |
backend.ai_storage_proxy-24.3.10-py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 45b1e645c85b71346490e7eef79a1e0d3e4b82f166eab51f1a08136f153522f8 |
|
MD5 | 67e7f9e26c1b7f308fca37d744249880 |
|
BLAKE2b-256 | 51fd585c6c47e3efc78b3d962abe71424fcc4c3949e84a22e30ba729b55cb9bd |