ossfs 2.0是一款专门用于通过挂载方式高性能访问OSS(对象存储)的客户端,它具备出色的顺序读写能力,可充分发挥OSS的高带宽优势。
性能提升
ossfs 2.0相较于ossfs 1.0在顺序读写和高并发小文件读取方面均实现了显著的性能提升。更多有关ossfs 2.0性能说明,请参见性能测试。
-
顺序写入性能:在单线程大文件顺序写入场景下,ossfs 2.0的带宽相较于ossfs 1.0提升了近18倍。
-
顺序读取性能:在单线程或多线程(4线程)大文件顺序读取场景下,ossfs 2.0的带宽相较于ossfs 1.0提升了3倍以上。
-
小文件并发读取性能:在高并发(128线程)读取小文件的场景下,ossfs 2.0的带宽相较于ossfs 1.0提升了20倍以上。
适用场景
ossfs 2.0适用于对存储访问性能要求较高的场景,比如AI训练、推理、大数据处理、自动驾驶等新型计算密集型负载。这类工作负载主要涉及顺序和随机读取、顺序(仅支持追加)写入操作,并且无需依赖完整的 POSIX 语义。
运行环境
ossfs 2.0基于FUSE(用户态文件系统,Filesystem in Userspace)开发。
|
系统架构 |
操作系统 |
系统版本 |
下载地址 |
|
x86_64 |
CentOS |
CentOS 7、CentOS 8 |
|
|
Rocky Linux |
Rocky Linux 9.0及以上版本 |
||
|
Alibaba Cloud Linux |
Alibaba Cloud Linux 2及以上版本 |
||
|
Ubuntu |
Ubuntu 20.04 LTS及后续LTS版本 |
||
|
Debian |
Debian 11及以上版本 |
||
|
aarch64 |
Alibaba Cloud Linux |
Alibaba Cloud Linux 3 |
使用限制
-
权限要求:需确保AccessKey对目标Bucket或前缀(prefix)相关资源拥有全部权限,否则可能导致挂载失败或功能异常。
-
存储类型限制:不建议挂载归档存储、冷归档存储、深度冷归档存储类型的Bucket。
-
文件名限制:文件名长度上限255字符(遵循Linux限制),OSS中超过此限制的文件或目录在挂载点内不可见。
-
文件读取限制:新写入的文件必须在文件关闭后才会上传到OSS。如果读取一个正在写入、尚未关闭的文件,可能导致报错。
-
文件写入限制:默认模式下不支持随机写入,不支持并发写入同一个文件。写入分片大小默认是8388608字节(8 MiB),即最大支持83886080000字节(78.125 GiB)的文件写入。分片大小可根据挂载选项upload_buffer_size配置。v2.0.9及以后版本可通过挂载选项temp_dir开启基于本地临时目录的随机写入模式,支持任意偏移写入、任意大小截断及多句柄并发写入同一文件。
-
文件重命名操作(非原子性)
-
文件:先拷贝后再执行远端文件的删除操作。
-
目录:对所有文件执行拷贝操作后,再批量执行源文件的删除操作。目录重命名时默认限制子孙文件数量为200 万,限制的子孙文件数量可根据挂载选项rename_dir_limit配置。
-
-
并发写入一致性:多客户端同时挂载同一Bucket并写入同一文件时,无法保证数据一致性。
-
POSIX API兼容性:部分兼容,具体请参见POSIX API支持情况。
功能介绍
功能特性
-
提供基础的POSIX兼容性,聚焦于发挥OSS的服务端读写能力。
-
通过端到端的读写链路优化,提供了高效的大文件顺序读写能力。
-
通过高效的元数据管理能力,提供了高效的小文件并发加载能力。
-
通过配置fstab的方式,提供了开机自动挂载OSS Bucket的能力。
POSIX API支持情况
以下为ossfs 1.0与ossfs 2.0对于常用POSIX API的支持情况。
|
功能分类 |
操作/功能 |
ossfs 1.0 |
ossfs 2.0 |
|
文件基础操作 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
文件读写 |
|
|
|
|
|
支持随机写入(需配置磁盘缓存区) |
仅支持顺序写入(无需磁盘缓存) |
|
|
|
(可调整文件大小) |
仅支持清空文件 |
|
|
文件元操作 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
目录操作 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
权限与属性 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
扩展功能 |
|
|
|
|
|
|
|
|
|
|
|
|