文件存储 AFS | 大装置帮助中心
跳到主要内容

文件存储 AFS

产品介绍

文件存储 AFS(SenseCore AI File Storage)是一款可扩展的并行文件存储系统,针对GPU高性能计算场景优化,提供亚毫秒级的数据访问、满足高IOPS及高吞吐、低延时的数据读写请求,适用于AI训练、自动驾驶、视频渲染等高性能计算场景。

产品优势

针对AI应用需求深度优化,提供高可靠、高性能、低延时、弹性扩展的高性能并行文件存储。

1.AI场景深度优化

  • 针对AI场景深入优化,采用分布式并行架构,支持百GB吞吐,亚毫秒级延时和百万级IOPS。

2.高可靠

  • 架构设计可用性可达99.9%,百亿小文件性能稳定,不会衰减。

3.弹性扩展

  • 支持在线弹性扩展,满足容量需求和性能的线性增长。

产品功能

1.AI高性能计算文件存储

  • 存储支持POSIX文件协议,AI高性能计算程序无需进行适配和优化即可高效率执行。

2.高吞吐、低延时

  • 充分发挥并行架构IO并发访问优势,在集群通过横向扩展实现高吞吐量时,仍保持亚毫秒级的超低延时。

3.与SenseCore产品密切整合

  • 与裸金属、容器和云开发机计算平台整合,方便支持AFS文件系统;AFS支持SenseCore容器服务,通过CSI接口,为容器服务提供高I/O能力。

应用场景

1.AI训练

AI模型训练的主要数据类型是海量小文件,具有低延时需求。

  • AFS与AI场景深度结合,支持海量小文件访问,提升AI训练性能。
  • 对接多种计算集群,提供超高吞吐和超高 IOPS 能力。

2.自动驾驶

自动驾驶场景下,每台测试车每天的数据量约为1TB,数据需要快速分析,海量的数据需要控制存储成本。

  • AFS高性能、弹性扩展的能力,有力的支撑了客户业务增长带来的大容量和高性能的需求。
  • 数据在AFS进行模型训练后归档到AOSS长期保存,两者配合使用。

3.高性能计算存储

以AFS为中心,与裸金属、云容器、云开发机计算产品无缝结合,为您的多样业务提供高性能计算存储解决方案。

  • AFS提供高吞吐与高IOPS以提高计算效率,降低业务的整体成本。
  • 架构支持弹性扩展,实现容量和性能的线性增长。

计费说明

1.计费方式

包年包月: 按TB容量包年包月方式进行销售,是一种预付费的计费方式,用户需提前规划资源的容量规格和时长,一次性完成支付,支付后立即生效。

计量项计量方式计费方式
存储容量容量规格和购买时长包年包月,购买时一次性付费(容量以GB/TB为单位,购买时长以月和年为单位)

2.使用规则

  • 创建包年包月类型文件系统后,将根据您的文件系统的最大容量扣除包年包月额度。
  • 购买时配置的容量即为该文件系统的最大存储容量,如果超出容量,请进行扩容,否则无法写入。
  1. 到期提醒
  • 包年包月服务到期前5天、前3天、前1天通过站内信消息通知用户
  1. 欠费处理
  • 费用到期后24小时内资源只读;到期后5天内保留数据但不可读取;到期6天后自动销毁数据,数据不可恢复。

快速入门

01.开通服务(注册账号并申请开通)—— 02.创建文件系统(根据业务需求创建文件系统)—— 03.挂载文件系统(安装AFS客户端,挂载文件系统到计算实例)—— 04.管理文件系统(通过控制台管理AFS文件存储)。

快速创建实例

  1. 通过用户名密码登录。

    文件系统列表

  2. 找到文件存储快捷入口,点击进入文件系统列表页。

    文件系统列表

  3. 点击创建文件系统按钮,创建文件系统。

    文件系统列表

  4. 填写文件系统购买方式和规格,点击立即购买,按照向导完成文件系统创建。

    文件系统列表

文件系统授权

本章主要介绍文件系统实例授权给同租户内的其他用户或者用户组只读或者读写权限的操作。

1.在控制台右上方资源下拉按钮选择资源管理并点击,弹出资源列表页,在资源列表选择AI文件存储AFS产品。

2.资源列表页选择AI文件存储AFS后,资源列表展示已经创建的文件系统实列,找到要授权的文件系统实例,点击对应的授权按钮并点击。

3.在授权策略页面,选择要授权给的用户或者用户组,并选择对应的读写权限,点击确定后生效。

裸金属服务器手动挂载文件存储

1.确保网络连通性
1.1 能ssh登录裸金属实例
1.2 确保与存储网关的连通性(确认方式联系存储技术支持或者管理员)

2.依赖包安装
2.1 部分依赖包会在实例中默认包含
2.2 如有不全,可以自行安装:
2.2.1 rocky/centos

sudo yum install -y epel-release
sudo yum install -y crypto-devel curl cryptopp-devel gperftools-devel leveldb-devel libcurl-devel librados2 libuuid-devel python36 snappy unzip centos-release-ceph-octopus
sudo yum install -y ceph-mon librados-devel sudo wget
sudo mkdir -p /var/log/sensecore/quark

如果安装ceph-common失败可下载离线包安装:

https://download.ceph.com/rpm-16.2.12/el8/x86_64/ceph-common-16.2.12-0.el8.x86_64.rpm
https://download.ceph.com/rpm-16.2.12/el8/x86_64/librados-devel-16.2.12-0.el8.x86_64.rpm
https://download.ceph.com/rpm-16.2.12/el8/x86_64/librados2-16.2.12-0.el8.x86_64.rpm
https://download.ceph.com/rpm-16.2.12/el8/x86_64/libcephfs2-16.2.12-0.el8.x86_64.rpm
https://download.ceph.com/rpm-16.2.12/el8/x86_64/liboath-2.6.2-3.el8.x86_64.rpm
https://download.ceph.com/rpm-16.2.12/el8/x86_64/librabbitmq-0.9.0-3.el8.x86_64.rpm
https://download.ceph.com/rpm-16.2.12/el8/x86_64/libradosstriper1-16.2.12-0.el8.x86_64.rpm
https://download.ceph.com/rpm-16.2.12/el8/x86_64/librbd1-16.2.12-0.el8.x86_64.rpm
https://download.ceph.com/rpm-16.2.12/el8/x86_64/librdkafka-0.11.4-3.el8.x86_64.rpm
https://download.ceph.com/rpm-16.2.12/el8/x86_64/librgw2-16.2.12-0.el8.x86_64.rpm
https://download.ceph.com/rpm-16.2.12/el8/x86_64/lttng-ust-2.8.1-11.el8.x86_64.rpm
https://download.ceph.com/rpm-16.2.12/el8/x86_64/python3-ceph-argparse-16.2.12-0.el8.x86_64.rpm
https://download.ceph.com/rpm-16.2.12/el8/x86_64/python3-ceph-common-16.2.12-0.el8.x86_64.rpm
https://download.ceph.com/rpm-16.2.12/el8/x86_64/python3-cephfs-16.2.12-0.el8.x86_64.rpm
https://download.ceph.com/rpm-16.2.12/el8/x86_64/python3-rados-16.2.12-0.el8.x86_64.rpm
https://download.ceph.com/rpm-16.2.12/el8/x86_64/python3-rbd-16.2.12-0.el8.x86_64.rpm
https://download.ceph.com/rpm-16.2.12/el8/x86_64/python3-rgw-16.2.12-0.el8.x86_64.rpm
https://yum.oracle.com/repo/OracleLinux/OL8/appstream/aarch64/getPackage/python3-prettytable-0.7.2-14.el8.noarch.rpm

# 离线安装rpm包
rpm -ivh *.rpm --nodeps --force

2.2.2 ubuntu
1、ubuntu18.04系统需要升级ceph12.2.X 升级到ceph16.2.10
下载升级需要的依赖包或者直接使用下面的tar压缩包:

wget https://download.ceph.com/debian-16.2.10/pool/main/c/ceph/librados2_16.2.10-1bionic_amd64.deb
wget https://download.ceph.com/debian-16.2.10/pool/main/c/ceph/ceph-base_16.2.10-1bionic_amd64.deb
wget https://download.ceph.com/debian-16.2.10/pool/main/c/ceph/ceph-common_16.2.10-1bionic_amd64.deb
wget https://download.ceph.com/debian-16.2.10/pool/main/c/ceph/ceph-mon_16.2.10-1bionic_amd64.deb
wget https://download.ceph.com/debian-16.2.10/pool/main/c/ceph/libcephfs2_16.2.10-1bionic_amd64.deb
wget https://download.ceph.com/debian-16.2.10/pool/main/c/ceph/libjaeger_16.2.10-1bionic_amd64.deb
wget https://download.ceph.com/debian-16.2.10/pool/main/c/ceph/librados2_16.2.10-1bionic_amd64.deb
wget https://download.ceph.com/debian-16.2.10/pool/main/c/ceph/libradosstriper1_16.2.10-1bionic_amd64.deb
wget https://download.ceph.com/debian-16.2.10/pool/main/c/ceph/librbd1_16.2.10-1bionic_amd64.deb
wget https://download.ceph.com/debian-16.2.10/pool/main/c/ceph/librgw2_16.2.10-1bionic_amd64.deb
wget https://download.ceph.com/debian-16.2.10/pool/main/c/ceph/python3-ceph-argparse_16.2.10-1bionic_all.deb
wget https://download.ceph.com/debian-16.2.10/pool/main/c/ceph/python3-ceph-common_16.2.10-1bionic_all.deb
wget https://download.ceph.com/debian-16.2.10/pool/main/c/ceph/python3-cephfs_16.2.10-1bionic_amd64.deb
wget https://download.ceph.com/debian-16.2.10/pool/main/c/ceph/python3-rados_16.2.10-1bionic_amd64.deb
wget https://download.ceph.com/debian-16.2.10/pool/main/c/ceph/python3-rbd_16.2.10-1bionic_amd64.deb
wget https://download.ceph.com/debian-16.2.10/pool/main/c/ceph/python3-rgw_16.2.10-1bionic_amd64.deb

操作步骤:

# 试用解压包(压缩包在上方附件)
tar -zxvf ubuntu18ceph16.tar.gz

apt remove ceph-common

# 安装
sudo apt --fix-broken install ./*deb -y

必须保证cmake版本大于3.16、gcc版本升级至gcc8:

ubuntu20升级cmake、gcc方法:

apt install -y sudo cmake -y
apt install gcc-8 -y

ubuntu18.04升级cmake、gcc方法:

apt remove cmake -y && apt install gcc-8 -y 
wget https://cmake.org/files/v3.20/cmake-3.20.2-linux-x86_64.tar.gz && tar zxvf cmake-3.20.2-linux-x86_64.tar.gz
ln -sf $(pwd)/cmake-3.20.2-linux-x86_64/bin/* /usr/bin/

ubuntu16.04升级cmake、gcc方法:

apt-get install software-properties-common -y && add-apt-repository ppa:ubuntu-toolchain-r/test -y
apt-get update -y && apt-get install gcc-8 -y && apt-get install g++-8 -y
rm /usr/bin/gcc && rm /usr/bin/g++ && ln -sf /usr/bin/gcc-8 /usr/bin/gcc && ln -sf /usr/bin/g++-8 /usr/bin/g++
wget https://cmake.org/files/v3.20/cmake-3.20.2-linux-x86_64.tar.gz
tar zxvf cmake-3.20.2-linux-x86_64.tar.gz && ln -sf $(pwd)/cmake-3.20.2-linux-x86_64/bin/* /usr/bin/

其他依赖包安装

sudo apt update -y && sudo apt install -y sudo cmake build-essential gdb gdbserver git ccache wget
sudo apt-get install -y git make libssl-dev libgflags-dev libleveldb-dev libz-dev
sudo apt-get install -y libsnappy-dev libcrypto++-dev
sudo apt-get install -y libgoogle-perftools-dev
sudo apt-get install -y autoconf automake libtool libcurl4-openssl-dev curl unzip librados-dev uuid-dev liburcu-dev
sudo apt-get install -y ceph-mon
sudo mkdir -p /var/log/sensecore/quark

3.共享文件存储客户端安装

3.1 获取配置conf文件与安装包,并存放到裸金属实例上相应目录,如用户家目录
3.2 获取安装包 (线上环境更新不同,以下为基础可用版本,如有问题,可向技术人员支持最新版本)

rocky/centos
生产环境获取rpm安装包:

wget "https://quark.aoss.cn-sh-01.sensecoreapi-oss.cn/quarkafs/release/v1.1.21/quarkfs-v1.1.21.3-1.el7.centos.x86_64.rpm"

ubuntu
生产环境获取deb安装包:

ubuntu20: wget "https://quark.aoss.cn-sh-01.sensecoreapi-oss.cn/quarkafs/release/v1.1.21/quarkfs-v1.1.21.3-20.04.deb"
ubuntu22: wget "https://quark.aoss.cn-sh-01.sensecoreapi-oss.cn/quarkafs/release/v1.1.21/quarkfs-v1.1.21.3-22.04.deb"

3.2 获取配置文件
安装包成功安装之后,配置文件默认安装路径为:/usr/quarkfs/conf/client0.conf
如果发现本机不存在, 可以在挂载阶段使用动态挂载的方式,或者在生产环境提前用如下方式获取conf文件:

上海集群1

wget "https://quark.aoss.cn-sh-01.sensecoreapi-oss.cn/quarkafs/release/v1.1.21/v1.1.21.3-client0.conf"

广州集群1

wget "https://quark.aoss.cn-sh-01.sensecoreapi-oss.cn/quarkafs/release/v1.1.21/v1.1.21.3-client0-cn-gz-01a-01.conf"

3.3 在裸金属实例上安装客户端

rocky/centos

RPM  (请注意文件版本号)  
rpm -iv quarkfs-v1.1.21.3-1.el7.centos.x86_64.rpm --force

ubuntu

DEB (请注意文件版本号)
dpkg -i quarkfs-v1.1.21.3-22.04.deb

4.共享存储挂载

4.1 向管理员获取key与volume id

4.2 调用客户端命令行挂载存储
使用(需要root权限):quarkfs_client -o ak=[替换为真实ak] -o sk=[替换为真实sk] -o volumeID=[替换为真实volumeID] -o env=[替换为环境tech/cn] -o source=terminal -o conf=[替换为真实client0.conf文件全路径] /mnt/quarkfs
配置文件会自动更新

4.3 子目录挂载
quarkfs_client -o ak=[替换为真实ak] -o sk=[替换为真实sk] -o volumeID=[替换为真实volumeID] -o env=[替换为环境tech/cn] -o source=terminal -o conf=[替换为真实client0.conf文件全路径] -o subdir=[子目录路径] /mnt/quarkfs

4.4 将ak、sk放到配置中(隐藏ak/sk信息)
client0.conf 中添加
ak=[替换为真实ak]
sk=[替换为真实sk]
quarkfs_client -o volumeID=[替换为真实volumeID] -o env=[替换为环境tech/cn] -o source=terminal -o conf=[替换为真实client0.conf文件全路径] -o subdir=[子目录路径] /mnt/quarkfs

注:
1.真实场景相应参数会有差异,上述[]以及其中的内容需要替换;/mnt/quarkfs 可以替换为真实的需要挂载过去的路径。
2.不要直接挂载到 /root、/home 路径;如果/data 挂载了本地盘,则文件存储不可以挂载到 /data , 可以挂载下面的子目录,如:/root/a 、 /data/b
3.如果让其他用户也可以访问挂载点上的文件,需要增加 -o allow_other
4.如果启用文件系统的默认权限来控制对挂载点的文件和目录访问,需要增加 -o default_permissions
5.若没有使用conf参数指定,则会默认使用/usr/quarkfs/conf/client0.conf。
6.若没有使用env参数指定,则会默认使用cn。
7.子目录路径必须是一级子目录,通常使用方式是每个用户分配一个一级子目录作为隔离

示例:
1、默认挂载:
quarkfs_client -o ak=ak -o sk=sk -o volumeID=88b8768f-2cd9-11ed-87a9-76419f87c7ac -o env=cn -o source=terminal -o conf=/usr/quarkfs/conf/client0.conf -o default_permissions -o allow_other /mnt/quarkfs

2、子目录挂载:
quarkfs_client -o ak=ak -o sk=sk -o volumeID=88b8768f-2cd9-11ed-87a9-76419f87c7ac -o env=cn -o source=terminal -o conf=/usr/quarkfs/conf/client0.conf -o default_permissions -o allow_other -o subdir=dir1 /mnt/quarkfs
注:
dir1是挂载卷的一级子目录

3、隐藏ak/sk挂载(请参考4.4):
quarkfs_client -o volumeID=88b8768f-2cd9-11ed-87a9-76419f87c7ac -o env=cn -o source=terminal -o conf=/usr/quarkfs/conf/client0.conf -o default_permissions -o allow_other /mnt/quarkfs

5.查看和验证存储可用性
查看存储可用容量:df -h /mnt/quarkfs
进入目标目录(如/mnt/quarkfs)并创建目录或者文件(vim/touch等操作)

6.umount存储目录
按需umount,需要root权限:umount <挂载点>

7.热更新脚本操作指南
请使用以下脚本做热更新操作
注意:使用前请保证psutil已安装,使用pip3 install psutil安装
使用方法如下:

# 查询当前机器所有挂载点状态
python3 do_update.py -q
# 查询当前机器指定挂载点状态, 请加上-p并把${pid}替换成所需要查询挂载点的pid
python3 do_update.py -q -p ${pid}

# 对当前机器所有挂载点做更新操作
# -u是触发更新,-a是触发更新后的重启
# 如果是systemd的启动方式可以不用带-a,否则建议最好携带-a参数
python3 do_update.py -u -a

# 如果是只更新指定挂载点,请加上-p并把${pid}替换成所需要查询挂载点的pid
# 建议如果只是个人使用,更新请使用这条命令
python3 do_update.py -u -a -p ${pid}

8. 注意事项
不要挂载到/home目录下

用户指南

本章主要用来帮助用户了解如何在控制台中管理AFS文件系统;主要包含针对文件系统相关状态、容量使用情况、文件系统创建时间和计费方式等展示、性能展示、并能根据业务需求创建文件系统等操作

  1. 文件系统列表

    文件系统列表界面,可以选择不同的数据中心,查看用户当前数据中心的所有文件系统,直观显示文件系统的相关状态信息,支持通过文件系统名称、状态关键字等不同过滤条件查看指定的文件系统。

    在文件系统列表,包含新建文件系统、及对文件系统进行管理的功能。
    支持文件系统的续费和扩容。

    文件系统列表展示

    支持多AZ选择(可用区A和可用区B,2030.10.30更新)

    文件系统列表

    通过【续费】可以增加服务的时长,点击【续费】按钮后,弹出续费对话框,填写要续费的时长,点确定即可。

    文件系统列表

    点击【扩容】,可以增加文件系统的容量,打开扩容页面,可以看到当前配置和要最终达到的容量填写。

    文件系统列表

  1. 文件系统详情

    选中目标文件系统,单击“详情”,进入文件系统详情管理界面,可查看该文件系统更详细的信息。

    详情分为文件系统详情、客户端和性能监控三个模块;可以通过详情页看到文件系统的基本信息、挂载点和计费信息;在客户端页展示计算节点的名称及IP信息及所在地区和可用区信息;在性能监控模块看到文件系统空间的IOPS、吞吐等性能展示。

    详情页展示

    在详情页,可以看到文件系统的用量信息和服务时间、挂载信息和计费方式。

客户端展示

展示计算节点的名称、客户端IP、计算节点挂载路径和挂载存储目录(支持一级目录挂载)、所属可用区及区域信息,其中客户端IP目前只显示裸金属IP。

性能监控展示

展示文件系统的IOPS、吞吐、延迟及元数据QPS信息。(最多可以查询近6个月的数据)

image-20220914172508786

目录ACL

目录ACL页面,支持用户可以配置指定用户或指定用户组对一级目录只读权限或者读写权限的访问。

目录权限配置可灵活选择用户类型:可以选择租户内全部用户也可以选择指定用户和用户组。

配额

目录配额页,支持对文件系统一级目录的配额管理,包括设置容量配额和文件数量限制。

点击【创建配额】,可以添加指定一级目录的容量配额或文件数量限制,以实现资源的合理分配和管理。

支持手动【校验】,如果子目录有移除操作,点击【确认】后将更新子目录移除后的空间为可用状态。

删除功能

删除按钮有两个用法,如果在服务期内点击【删除】按钮,会跳转到退订页面,进行资源的退定;如果在服务期外,如宽限期和保留期,想释放资源,点击【删除】,二次确认后,会删除此文件系统,文件系统内的数据不可恢复。

常见问题

  1. 什么是文件存储AFS?

    文件存储AFS(SenseCore AI File Storage)是一款可扩展的并行文件存储系统,针对GPU高性能计算场景优化,提供亚毫秒级的数据访问、满足高IOPS及高吞吐、低延时的数据读写请求,适用于AI训练、自动驾驶、视频渲染等高性能计算场景。

  2. 什么是POSIX 客户端?

    POSIX Client是部署在容器、裸金属服务器上的代理客户端软件,负责计算节点与存储后端数据通信。

  3. AFS文件存储的挂载点是什么?

    挂载点是容器实例/裸金属服务器访问文件存储的请求入口。

  4. 客户端支持哪些操作系统?

    支持Centos 7.X以上各版本linux操作系统,支持Ubuntu 16.04/18.04/20.04和rocky 8.6版本。

  5. 计算实例连接数是多少?

    单个文件系统默认支持2000个实例连接。

  6. 挂载文件系统后,支持非root用户读写吗?

    2023.3.31版本支持非root用户读写。

  7. 多客户端数据一致性解答?
    多客户端访问,满足「关闭再打开(close-to-open)」一致性,也就是说一个客户端修改并关闭文件之后,其他客户端重新打开这个文件都会看到最新的修改。与此同时,默认的挂载参数设置了 1 秒的内核元数据缓存,满足了一般场景的需要