公共资源组和专有资源组默认数据存储空间有限,且一定时间后数据会被清空。当您想要扩展DSW实例存储空间、持久化存储数据、共享数据时,可以通过为DSW实例挂载数据集或直接挂载存储路径的方式实现。
公共资源组DSW实例,数据存储在空间有限(100GiB)的免费云盘中,在删除实例或停机超过15天后,云盘数据将被清空。
专有资源组DSW实例,数据存储在实例的系统盘中,在停止或删除实例后,临时存储将被清空。
挂载数据集与直接挂载存储路径区别
如果您需要长期存储、团队协作可以选择挂载数据集,如果只是临时任务、快速扩展存储需求可以选择直接挂载存储路径。
特性 | 挂载数据集 | 直接挂载存储路径 |
支持的云产品 | 对象存储OSS、文件存储NAS、文件存储CPFS | |
版本管理 | 支持版本管理和数据加速 | 不支持版本管理 |
数据共享 | 支持多实例共享 | 仅限当前实例使用 |
操作复杂度 | 需创建数据集并配置 | 简单,直接挂载路径即可 |
适用场景 | 长期存储、团队协作、高安全性需求 | 临时任务、快速扩展存储需求 |
启动时挂载与动态挂载区别
挂载方式分为启动时挂载和动态挂载。
启动时挂载:在创建实例或变更配置时设定。配置后需重启实例才能生效。
动态挂载:在运行的实例中通过PAI SDK挂载。此方式无需重启实例。
使用限制
路径唯一: 每个数据集的挂载路径必须唯一。
写入限制: 避免在OSS挂载目录中频繁写入,这可能导致性能下降或操作失败。
Git限制: OSS挂载目录不支持Git操作。请在本地或其他非挂载路径下执行Git命令
启动时挂载
启动时挂载,通过设置实例配置页面的数据集挂载或存储路径挂载参数,完成数据集或存储路径挂载配置。在配置后需要重启实例才会生效。
挂载数据集
创建数据集
登录PAI控制台,在AI资产管理>数据集页面创建自定义数据集或者公共数据集。具体操作可参见创建及管理数据集。
挂载数据集
在新建DSW实例时出现的配置页中(已存在的实例通过单击变更配置打开配置页),找到数据集挂载配置区域。单击自定义数据集,然后选择已创建的数据集并填写挂载路径。
挂载自定义数据集须知:
CPFS 数据集:配置CPFS数据集时,DSW实例的专有网络(VPC)必须与CPFS文件系统一致。否则,实例将创建失败。
NAS 数据集:配置NAS数据集时,请设置网络并选择安全组。
使用专有资源组:使用专有资源组时,第一个数据集必须为NAS类型。该数据集将同时挂载到您指定的路径和DSW默认工作目录
/home/admin/workspace
。
直接挂载存储路径
以挂载对象存储OSS为例。
动态挂载
动态挂载是在DSW实例中基于PAI SDK自行编写代码,完成数据集或存储路径的挂载,无需重启实例即可完成。
准备工作
安装PAI Python SDK。在打开的DSW实例终端中执行如下命令,安装PAI Python SDK,要求python >= 3.8。
python -m pip install pai>=0.4.11
配置SDK访问PAI的密钥。
方式一:配置DSW实例为PAI默认角色或自定义RAM角色。打开实例配置页,在页面底部单击展开更多配置选择实例RAM角色。具体操作,请参见配置DSW实例RAM角色。
方式二:手动通过PAI Python SDK提供的命令行工具完成配置。在终端中执行如下命令配置访问参数。操作示例请参见初始化配置。
python -m pai.toolkit.config
使用示例
通过动态挂载功能,您无需重启配置DSW实例,使用示例如下:
挂载到默认路径
相应的数据会被挂载到实例内的默认挂载路径下(使用官方预置实例镜像默认路径为
/mnt/dynamic/
)。from pai.dsw import mount # 挂载oss路径 mount_point = mount("oss://<YourBucketName>/Path/Data/Directory/") # 挂载数据集, 入参为数据集的id # mount_point = mount("d-m7rsmu350********")
挂载到指定路径
动态挂载功能目前需要将数据挂载到容器内的指定路径(或是相应的子路径下),可以通过SDK提供的API获取动态挂载路径。
from pai.dsw import mount, default_dynamic_mount_path # 获取实例的默认挂载路径 default_path = default_dynamic_mount_path() mount_point = mount("oss://<YourBucketName>/Path/Data/Directory" , mount_point=default_path + "tmp/output/model")
动态挂载NAS
from pai.dsw import mount, default_dynamic_mount_path # 获取实例的默认挂载路径 default_path = default_dynamic_mount_path() # 挂载nas,要求nas的endpoint和实例在同一个vpc,<region>替换为regionId,例如cn-hagnzhou mount("nas://06ba748***-xxx.<region>.nas.aliyuncs.com/", default_path+"mynas3/")
查看实例内的所有挂载数据配置
from pai.dsw import list_dataset_configs print(list_dataset_configs())
卸载挂载数据
from pai.dsw import mount, unmount mount_point = mount("oss://<YourBucketName>/Path/Data/Directory/") # 入参为挂载的路径,即list_dataset_configs查询到的MountPath # 执行卸载后需要等待几秒钟才会生效 unmount(mount_point)
挂载高级配置
在配置挂载时,还可以设置高级参数来适配快速读写、增量读写、只读等读写场景,优化读写性能。
查看挂载配置
打开DSW实例,在Terminal中,输入如下命令,查看NAS及OSS类型的数据集是否挂载成功。
# 查看所有挂载
mount
# 查询NAS挂载路径
mount | grep nas
# 查询OSS挂载路径
mount | grep oss
系统输出如下返回结果,说明数据集已成功挂载。
NAS数据集已挂载到/mnt/data_nas、/mnt/workspace和/home/admin/workspace目录。其中,/mnt/data_nas为创建DSW实例时指定的挂载路径,后两个路径为配置第一个NAS数据集时,被挂载的DSW的默认工作目录。后续只要您的NAS盘和服务正常运行,数据和代码就可以持久化存储。
OSS数据集挂载到DSW的/mnt/data_oss目录。
常见问题
1. 成功挂载了OSS,为什么在JupyterLab界面的左侧文件浏览器中看不到?
这是因为DSW的文件浏览器默认显示的是实例的工作目录,其路径通常是/mnt/workspace
。而您挂载OSS时指定的挂载路径(例如 /mnt/data
)并不在默认工作目录下,因此不会直接显示在左侧文件列表中。
解决方法:
通过代码访问:您的文件实际上已经成功挂载。在代码中,您需要使用完整的挂载路径来访问它们,例如
open('/mnt/data/my_file.csv')
。更改挂载点:为了在UI中方便地看到文件,您可以在配置挂载时,将挂载路径设置为工作目录下的一个子目录,例如
/mnt/workspace/my_oss_data
。这样,挂载完成后,您就可以在文件浏览器的my_oss_data
文件夹中看到您的OSS文件了。通过终端访问:您可以在DSW的Terminal中使用
cd /mnt/data
命令进入挂载目录,然后通过ls
等命令查看和操作文件。
2. 使用挂载的OSS时,程序报错“Transport endpoint is not connected”或“输入/输出错误”?
这个错误表明DSW实例与OSS的挂载连接已断开。可能的原因及排查方法如下:
RAM角色权限问题:请检查您为DSW实例配置的RAM角色是否被授予了访问OSS的权限(例如
AliyunPAIDLCAccessingOSSRole
)。权限不足是导致无法读取OSS的常见原因。挂载服务资源不足:当进行高强度的随机读写或大量小文件操作时,负责挂载的
ossfs
或JindoFuse
进程可能会因内存不足(OOM)而崩溃 。您可以在挂载配置的“高级配置”中,可以关闭元数据Cache,或增加内存配置。详情请参见JindoFuse。恢复连接:
对于启动时挂载,最简单的恢复方法是重启DSW实例,系统会自动重新执行挂载。
您也可以使用PAI SDK执行动态挂载命令,在不重启实例的情况下重新挂载路径。
3. DSW支持挂载哪些类型的数据?可以直接挂载阿里云盘或MaxCompute表吗?
DSW支持通过创建数据集或直接挂载路径的方式使用OSS、NAS和CPFS这几种云存储服务
不支持阿里云盘:目前DSW不直接支持挂载个人阿里云盘。需要处理的数据建议存放在OSS中。
不支持挂载MaxCompute表:MaxCompute(原ODPS)的表数据,不能像文件系统一样直接“挂载”到DSW的目录中。您可以通过PAI提供的SDK或API在DSW代码中进行读写,详情请参见使用PyODPS读写MaxCompute表。
4. DSW实例关机或删除后,代码和数据会丢失吗?如何实现数据持久化和迁移?
DSW实例的系统盘是临时存储。对于公共资源组,实例停机超过15天数据会被清空;对于专有资源组,实例停止或删除后,系统盘数据也会被清空。
为了实现数据和代码的持久化存储,以及在不同实例间迁移,必须使用外部挂载存储 。
持久化方案:将您的重要数据、代码、模型等全部保存在通过挂载的OSS或NAS路径下。这样,即使DSW实例被删除,您的所有资产依然安全地存放在您自己的OSS或NAS中。
迁移方案:当您需要将数据从一个DSW实例迁移到另一个时,只需在新实例中挂载包含这些数据的同一个OSS或NAS路径即可,这是最便捷的数据迁移方式。
相关文档
更多常见问题请参见DSW常见问题