EAS服务支持挂载OSS、NAS、数据集、代码集、模型等存储,实现多实例数据共享和快速更新,无需重建镜像。
选择存储方案
为EAS服务配置存储挂载时,需要先选择底层存储类型,再决定使用方式。本节帮助您做出合适的选择。
一、底层存储类型选择
根据数据特性和性能需求选择合适的底层存储类型:
|
存储类型 |
文件特征 |
读写特征 |
性能特点 |
典型场景 |
|
OSS |
海量大文件 |
读多写少 |
高吞吐、低成本 |
模型文件存储、静态资源管理 |
|
通用型NAS |
适量中大文件 |
读写混合、多实例共享 |
中等IOPS、适中时延 |
多实例共享目录、配置文件管理 |
|
极速型NAS |
大量小文件 |
高频读写、低延迟要求 |
低时延、高IOPS |
AI训练、高性能计算 |
|
智算CPFS |
超大规模大文件 |
大规模并行读写 |
极低时延、极高吞吐 |
分布式训练、大规模并行计算 |
选择建议:
-
成本优先:OSS 存储成本最低,适合大容量数据存储。如对性能要求不高,优先选择 OSS。
-
性能优先:性能排序为 智算CPFS > 极速型NAS > 通用型NAS > OSS,根据预算和性能需求选择。
-
组合使用:可同时挂载多种存储,例如 OSS(存储大型模型)+ 通用型NAS(共享配置文件),充分利用各自优势。
-
迁移路径:初期可使用 OSS 快速验证功能,生产环境根据实际性能需求和预算,逐步升级到 NAS 或 CPFS。
-
仅使用灵骏智算资源配额部署EAS服务时,支持挂载智算CPFS文件系统。
-
EAS 服务必须与 NAS 挂载点在同一 VPC,才能通过内网访问 NAS 存储。详细的网络配置方法请参见EAS访问公网或内网资源。
二、使用方式选择
选择底层存储后,根据实际需求选择合适的挂载方式:
|
使用方式 |
适用场景 |
核心优势 |
说明 |
|
直接挂载存储路径 |
快速验证、临时使用 |
配置简单、即用即弃 |
直接指定OSS/NAS路径 |
|
PAI数据集挂载 |
数据版本管理、团队协作 |
版本控制、资产复用 |
将OSS/NAS注册为数据集 |
|
Git代码挂载 |
部署应用代码、脚本 |
代码版本控制 |
从Git仓库拉取,只读挂载 |
|
PAI代码集挂载 |
企业代码资产管理 |
规范化管理、审计追溯 |
将Git仓库注册为代码集 |
|
PAI模型挂载 |
模型版本管理 |
模型迭代、团队协作 |
注册为PAI模型资产 |
基础存储挂载
OSS挂载
适用场景
-
存储大型模型文件(GB级别及以上)。
-
存储推理所需的静态资源(图片、视频、配置文件等)。
-
读多写少的场景,主要用于数据读取。
-
成本敏感型应用,需要低成本存储方案。
配置方法
OSS挂载是最常用的存储挂载方式。在控制台的存储挂载配置区域,选择OSS存储类型并填写Bucket路径和挂载路径等关键字段即可完成配置。
JSON配置示例:
{
"storage": [
{
"oss": {
"path": "oss://bucket/path/",
"readOnly": false
},
"mount_path": "/mnt/data/"
}
]
}
参数说明:
|
参数(控制台) |
参数(JSON) |
说明 |
|
Uri |
oss.path |
配置为OSS源地址路径,即对象存储OSS存储空间路径。如何创建存储空间,请参见控制台快速入门。 |
|
挂载路径 |
mount_path |
表示挂载到服务实例中的目标路径,用来读取源文件或数据。例如 |
|
是否只读 |
oss.readOnly |
支持通过开启或关闭是否只读开关,来设置读写权限。 |
NAS挂载
NAS挂载支持通用型NAS、极速型NAS和智算CPFS。关于网络要求和使用限制,请参见选择存储方案。
JSON配置示例:
{
"storage": [
{
"nfs": {
"path": "/",
"server": "06ba74****-a****.cn-hangzhou.nas.aliyuncs.com",
"readOnly": false
},
"mount_path": "/mnt/data/"
}
]
}
参数说明:
|
参数(控制台) |
参数(JSON) |
说明 |
|
存储权限资源组 |
nfs.resourceGroup |
文件系统资源组,通过资源组过滤相应的文件系统。更多关于资源组介绍信息,请参见资源组设计最佳实践。 当选择全部存储权限资源组时,JSON中无需配置。 |
|
选择文件系统 |
无 |
已创建的NAS文件系统的ID。您可以登录NAS控制台,在对应的地域,查看NAS文件系统ID。 |
|
文件系统挂载点 |
nfs.server |
NAS挂载点的地址,EAS服务将通过挂载点来访问NAS文件系统。如何查看,请参见查看挂载点地址。 说明
通过控制台选择挂载点后,系统会自动选择与挂载点一致的专有网络。 |
|
文件系统路径 |
nfs.path |
需要挂载的NAS中的源路径。即NAS实例内部的文件系统路径,例如 |
|
挂载路径 |
mount_path |
挂载到服务实例中的目标路径,用来读取源文件或数据。例如 |
|
是否只读 |
nfs.readOnly |
是否以只读方式进行挂载。 |
Git挂载
JSON配置示例:
{
"storage": [
{
"git": {
"repo": "https://codeup.aliyun.com/xxx/eas/aitest.git",
"branch": "master",
"commit": "xxx",
"username": "username",
"password": "password or access token"
},
"mount_path": "/mnt/data/"
}
]
}
参数说明:
|
参数(控制台) |
参数(JSON) |
说明 |
|
Git地址 |
git.repo |
需要挂载的Git代码仓库的HTTPS地址。暂不支持Git协议。 |
|
代码分支 |
git.branch |
需要拉取的Git代码仓库的分支,默认为master。 |
|
代码Commit |
git.commit |
需要拉取的Git代码仓库的commit ID。 |
|
Git用户名 |
git.username |
私有Git代码仓库的登录用户名。 |
|
访问Token |
git.password |
私有Git代码仓库的登录密码。获取方法,请参见附录:获取GitHub账号的Token。 |
|
挂载路径 |
mount_path |
挂载到服务实例中的目标路径。例如 |
平台资产挂载
支持将PAI平台已注册的数据集、代码和模型作为AI资产挂载到服务实例中,实现资产统一管理和复用。
数据集挂载
将相关数据或配置文件创建为PAI的数据集,注册为公共AI资产,方便在部署服务时挂载引用,实现数据资产的统一管理和版本控制。
支持挂载对象存储(OSS)、通用型NAS、极速型NAS与智算CPFS类型的自定义数据集。
JSON配置示例:
"storage": [
{
"dataset": {
"id": "d-pcsah1t86bm8******",
"version": "v1",
"read_only": false
},
"mount_path": "/mnt/data/"
}
]
参数说明:
|
参数(控制台) |
参数(JSON) |
说明 |
|
自定义数据集 |
dataset.id |
已注册的对象存储(OSS)类型的自定义数据集。如何创建自定义数据集、获取数据集ID,请参见创建及管理数据集。 |
|
版本 |
version |
数据集版本,例如v1。 |
|
是否只读 |
dataset.read_only |
是否以只读方式进行挂载。 |
|
挂载路径 |
mount_path |
挂载到服务实例中的目标路径。例如 |
代码挂载
将Git代码仓库创建为PAI的代码集,注册为公共AI资产,以只读方式挂载到服务实例中。
JSON配置示例:
"storage": [
{
"code": {
"id": "code-4d3b42a1152****"
},
"mount_path": "/mnt/data/"
}
]
参数说明:
|
参数(控制台) |
参数(JSON) |
说明 |
|
代码配置 |
code.id |
已注册的代码集。如何创建代码集、获取代码集ID,请参见代码配置。 |
|
挂载路径 |
mount_path |
挂载到服务实例中的目标路径。例如 |
PAI模型挂载
将服务所需的模型注册为PAI的AI资产,在PAI平台中统一管理模型版本和元数据(详情请参见注册及管理模型),在部署服务时以只读方式挂载到服务实例中。
参数说明:
|
参数(控制台) |
说明 |
|
PAI模型 |
已注册的PAI模型。如何创建模型,请参见注册及管理模型。 |
|
挂载路径 |
挂载到服务实例中的目标路径。例如 |
高级挂载选项
除基础存储和平台资产挂载外,EAS还支持以下高级挂载方式,适用于特殊场景:
-
镜像挂载:从Docker镜像中提取文件到服务实例。注意,该方式并非直接挂载镜像目录,而是通过Shared Volume将镜像中指定目录的文件拷贝到本地,在服务运行时挂载本地Shared Volume。当挂载目录数据量较大时,会消耗较多本地存储并延长启动时间,请根据实际需要使用。
-
EmptyDir挂载:提供本地临时存储空间,供实例运行时读写。实例异常重启后,写入的内容不会丢失。适用于需要本地缓存或临时文件存储的场景。
镜像挂载
仅支持通过JSON文件配置:
{
"storage": [
{
"image": {
"image": "registry-vpc.cn-xxxx.aliyuncs.com/eas/image_name:v1",
"path": "/path/to/mount/"
},
"mount_path": "/data_image"
}
]
}
仅支持同区域内网地址挂载,如要挂载的镜像是private,需通过dockerAuth参数来指定镜像仓库的鉴权信息。关于dockerAuth参数的使用说明,请参见自定义镜像。
参数说明:
|
参数(JSON) |
说明 |
|
image.image |
需要挂载的内网镜像仓库地址。 |
|
image.path |
需要挂载到服务实例中的镜像中的路径。 |
|
mount_path |
挂载到服务实例中的目标路径。例如 |
EmptyDir挂载
仅支持通过JSON文件配置:
{
"storage": [
{
"empty_dir": {},
"mount_path": "/data_image"
}
]
}
参数说明:
|
参数(JSON) |
说明 |
|
mount_path |
挂载到服务实例中的目标路径。 |
|
empty_dir |
表示类型为EmptyDir、值为空的Map,表示将数据存储在本地磁盘上。暂不支持其他属性的配置。 |
配置共享内存
当对存储性能要求较高时,可通过以下方式配置共享内存。
{
"storage": [
{
"empty_dir": {
"medium": "memory",
"size_limit": 20
},
"mount_path": "/dev/shm"
}
]
}
其中:
|
参数(JSON) |
说明 |
|
medium |
指定为memory。 |
|
mount_path |
指定为 |
|
size_limit |
用来限制内存上限,单位为GB。 |
JSON配置完整示例
完整的配置示例如下,更多配置详情,请参见JSON部署。
{
"name": "service_name",
"model_path": "http://path/to/model",
"processor": "pmml",
"storage": [
{
"oss": {
"path": "oss://bucket/path/",
"readOnly": false
},
"mount_path": "/mnt/data/"
},
{
"nfs": {
"path": "/",
"server": "06ba74****-a****.cn-hangzhou.nas.aliyuncs.com",
"readOnly": false
},
"mount_path": "/mnt/data/"
},
{
"image": {
"image": "registry-vpc.cn-shanghai.aliyuncs.com/eas/test_image:v1",
"path": "/path/to/mount/"
},
"mount_path": "/data_image"
},
{
"empty_dir": {
"medium": "memory",
"size_limit": 20
},
"mount_path": "/dev/shm"
},
{
"git": {
"repo": "https://codeup.aliyun.com/xxx/eas/aitest.git",
"branch": "master",
"commit": "xxx",
"username": "username",
"password": "password or access token"
},
"mount_path": "/mnt/data/"
}
],
"metadata": {
"cpu": 1,
"instance": 1,
"resource": "eas-r-xxx"
}
}
常见问题
-
挂载了OSS,为何报错找不到文件?
通常是路径错误,请检查挂载配置以及访问路径。
例如,将
oss://my-bucket/挂载到/mnt/data,OSS中文件oss://my-bucket/subfolder/myfile.txt在容器中需通过/mnt/data/subfolder/myfile.txt访问,而不是/mnt/data/myfile.txt。 -
NAS挂载失败,提示网络不通怎么办?
NAS挂载要求EAS服务与NAS挂载点在同一VPC下。请检查:
-
VPC一致性:在EAS服务配置和NAS挂载点配置中,确认VPC ID相同。
-
网络配置:如需访问NAS,请参见EAS访问公网或内网资源配置网络。
-
挂载点状态:确认NAS挂载点已成功创建且处于可用状态。
-
-
Git挂载失败,提示认证错误怎么办?
请检查以下配置:
-
访问令牌有效性:确认Git访问令牌(Access Token)未过期,且具有仓库读取权限。
-
仓库权限:对于私有仓库,确认用户名和密码/令牌正确,且具有读取权限。
-
仓库地址格式:使用HTTPS协议(如
https://github.com/user/repo.git),不支持Git协议。 -
分支/Commit存在性:确认指定的分支名称或commit ID在仓库中存在。
-
-
挂载路径冲突,服务启动失败怎么办?
挂载路径冲突通常有以下原因:
-
重复挂载路径:同一服务中,多个存储配置使用了相同的挂载路径。请确保每个存储的
mount_path唯一。 -
系统目录冲突:挂载路径不能使用系统关键目录,如
/bin、/etc、/usr、/lib等。建议使用/mnt或/data目录下的路径。 -
路径格式错误:挂载路径必须是绝对路径,以
/开头。
-
-
可以直接用FTP或SSH工具连接到实例上传/下载文件吗?
不可以。EAS实例不提供FTP或SSH访问。
-
EAS和OSS不在同一地域,可以挂载吗?
不可以。EAS无法跨地域挂载OSS。请使用 OSS的跨区域复制将数据同步到与EAS服务相同地域的OSS Bucket中。
-
未挂载存储时,下载到实例中的文件去哪了?
文件保存在实例的系统盘中,会在实例重启或更新后被清空,导致数据丢失。建议挂载存储以持久化数据。