每个 Sandbox 实例默认配备 20GB 的临时系统盘存储,用于临时数据操作。当 Sandbox 终止或超时后,该存储空间内的所有数据都会被自动清除。因此,需要长期保留的持久化数据应存储在外部云存储服务中。
Sandbox 的存储配置规格可能会调整。请查阅定价文档了解最新的资源配置和相关费用。
在 Sandbox 中使用对象存储桶通常有两种方式:
- 直接使用云服务商的 SDK、CLI 或 REST API。
- 使用基于 FUSE 的文件系统挂载存储桶,让应用程序可以通过文件路径访问对象。
FUSE (Filesystem in Userspace) 是一个内核模块和用户态库,允许在用户态应用程序中实现功能完整的文件系统。该框架提供了一个抽象层,将远程云存储服务呈现为标准的文件系统层级结构,从而可以通过常规的 POSIX 接口透明地进行文件操作。
本文档全面介绍如何通过文件系统挂载的方式,将主流云服务商的对象存储桶集成到 Sandbox 环境中。
基于 FUSE 的对象存储挂载会因网络延迟和协议转换层而带来显著的 I/O 性能开销,对性能有严格要求的应用应避免使用这种方式。此外,FUSE 文件系统操作不具备原生对象存储 API 固有的原子性保证,可能出现本地文件系统操作成功而对应的远端操作失败的竞态情况,从而导致数据不一致。这种挂载方式最适合以读为主、写操作较少且对性能要求宽松的工作负载。对于性能敏感或写入频繁的应用,强烈建议直接使用云服务商 SDK 或原生 REST API 进行集成。
Amazon S3
使用 s3fs-fuse(一个基于 FUSE 的文件系统实现,可通过标准文件操作访问 S3 存储桶),可以将 Amazon S3 存储桶挂载为 POSIX 兼容的文件系统。
s3fs-fuse 软件包既可以在创建 Sandbox Template 时,通过在 ppio.Dockerfile 中加入安装命令来集成; 也可以在运行中的 Sandbox 实例内按需动态安装。另外我们也提供了PPIO 官方的模板 s3fs-fuse。
模板 Dockerfile 构建:
以下实现演示了如何使用 s3fs-fuse 模板在 Sandbox 环境中以编程方式挂载 AWS S3 存储桶:
腾讯云 COS
使用 cosfs(腾讯云基于 s3fs-fuse 开发的 FUSE 文件系统实现),可以将腾讯云 COS 存储桶挂载为 POSIX 兼容的文件系统。我们同样提供了 PPIO 官方模板 cosfs-fuse,其中已预装 cosfs;你也可以在自定义 Template 的 ppio.Dockerfile 中自行安装,或在运行中的 Sandbox 实例内按需动态安装。
模板 Dockerfile 构建:
与 s3fs 相比,使用 cosfs 时需要注意以下差异:
- 存储桶名称需要带 APPID 后缀,格式为
bucketname-appid,例如 mybucket-1250000000。
- 凭据写入
/etc/passwd-cosfs。
- 挂载时通过
-ourl 参数指定 COS 的访问端点,例如 https://cos.ap-beijing.myqcloud.com。
以下实现演示了如何使用 cosfs-fuse 模板在 Sandbox 环境中以编程方式挂载腾讯云 COS 存储桶:
阿里云 OSS
使用 ossfs 2.0(阿里云新一代基于 FUSE 的文件系统客户端),可以将阿里云 OSS 存储桶挂载为 POSIX 兼容的文件系统。我们同样提供了 PPIO 官方模板 ossfs-fuse,其中已预装 ossfs2;你也可以在自定义 Template 的 ppio.Dockerfile 中自行安装,或在运行中的 Sandbox 实例内按需动态安装。
模板 Dockerfile 构建:
与 s3fs 相比,使用 ossfs2 时需要注意以下差异:
- 挂载配置(endpoint、bucket、AccessKey)统一写入配置文件
/etc/ossfs2.conf,而不是通过命令行参数传入,并需将该文件权限设置为 640。
- OSS 访问端点格式为
https://oss-{region}.aliyuncs.com,例如 https://oss-cn-hangzhou.aliyuncs.com。
- 挂载命令为
ossfs2 mount <挂载目录> -c <配置文件>。
以下实现演示了如何使用 ossfs-fuse 模板在 Sandbox 环境中以编程方式挂载阿里云 OSS 存储桶: