文档首页/ 对象存储服务 OBS/ 常见问题/ OBS Browser+和obsutil等工具相关/ s3fs、obsfs1.0、obsfs2.0之间的差异有哪些(挂载对象桶)?
更新时间:2026-10-12 GMT+08:00
分享

s3fs、obsfs1.0、obsfs2.0之间的差异有哪些(挂载对象桶)?

在挂载对象桶场景下,当前发现s3fs、obsfs 1.0 与 obsfs 2.0 的行为差异内容如下,从 s3fs 迁移至 obsfs 前,请务必完成充分的功能与兼容性测试。

  • obsfs2.0默认兼容s3fs创建的软链接,但是如果使用obsfs2.0挂载对象存储桶时指定了-o performance_mode参数,obsfs2.0则不兼容s3fs的软链接。
  • s3fs无法识别obsfs2.0创建的软链接。
  • obsfs1.0不兼容s3fs创建的软链接。
  • obsfs不支持读取s3fs创建的xattr(扩展属性)。
  • 对参数的支持与否也存在差异,具体请参见表1:
    表1 参数差异

    参数

    参数说明

    s3fs是否支持该参数

    obsfs 1.0是否支持该参数

    obsfs 2.0是否支持该参数

    posix

    参数解释:

    POSIX 语义模式。

    约束限制:

    文件桶(并行文件系统)始终使用强 PFS 语义(StrongPfs)时,此选项无效。

    取值范围:

    • weak:weak 模式下对象桶使用流式写入引擎(WeakObject)。
    • strong:strong 模式下保持强语义(StrongObject)。

    默认取值:

    strong

    不支持

    不支持

    支持

    streamread

    参数解释:

    启用流式读取模式。大文件按需读取,不预下载整个文件到本地缓存。适用于顺序读取大文件(视频、日志)的场景。大文件读取场景,适合开启流式读取模式。

    约束限制:

    需配合 streamread_window 使用。

    取值范围:

    不涉及

    默认取值:

    关闭。

    不支持

    支持

    支持

    streamread_window

    参数解释:

    流式读取窗口大小。控制预读缓冲区容量,越大越适合高带宽顺序读。

    约束限制:

    需先开启 streamread,即启用流式读取模式。

    取值范围:

    24(MB)~ 4096(MB)

    默认取值:

    24(MB)

    不支持

    支持

    支持

    storage_class

    参数解释:

    指定对象写入时携带的存储类别。

    约束限制:

    obs协议支持:standard、warm、cold。

    s3协议支持:standard、standard_ia、reduced_redundancy。

    取值范围:

    standard:标准存储

    standard_ia:低频访问存储

    reduced_redundancy:低冗余存储

    warm:低频访问存储

    cold:归档存储

    默认取值:

    standard

    支持

    支持

    支持

    use_xattr

    参数解释:

    扩展属性(xattr)开关。开启后挂载点支持用 setfattr/getfattr 等给文件或目录附加自定义键值对元数据(如 user.comment="备注")。

    约束限制:

    每设置或删除一个扩展属性,系统都需要先读取对象当前元数据,然后服务端修改元数据(客户端不传输文件数据),因此每次操作需要 2 次网络请求,频繁操作会因请求延迟累积明显影响性能。

    取值范围:

    • - o use_xattr:等价于启用
    • - use_xattr=1:启用
    • - use_xattr=0:禁用
    • -其他值为非法,obsfs 会拒绝挂载并退出。

    默认取值:

    未启用(false)

    支持,但无法读取obsfs的xattr。

    支持,但无法读取s3fs的xattr,可读取obsfs 2.0创建的xattr。

    支持,但无法读取s3fs的xattr,可读取obsfs 1.0创建的xattr。

    multipart_threshold

    参数解释:

    单次上传与分片上传(multipartupload)的切换阈值。

    • 待上传文件大小小于此阈值时,整文件一次上传。
    • 待上传对象大小达到此阈值时,自动改为分片上传(把大文件切成多个小片并行上传,最后合并),提升大文件上传速度与可靠性。

    约束限制:

    仅 s3fs 支持此参数。obsfs 不支持(透传挂载时会被拒绝,obsfs 使用 multipart_size 参数指定分片大小上传,不按文件总大小自动切换上传方式)。

    取值范围:

    ≥ 5 MB(小于 MIN_MULTIPART_SIZE(5MB) 拒绝挂载并退出);单位为 MB。

    默认取值:

    25(MB)

    支持

    不支持

    不支持

    kernel_meta_ttl_sec

    参数解释:

    操作系统内核侧的文件属性缓存时长(秒)。挂载后,操作系统内核会缓存已查看过的文件/目录属性(大小、修改时间等)。在缓存有效期内,重复查看同一文件/目录属性时,内核直接用缓存结果返回,不再下发到 obsfs 进程,从而减少内核到 obsfs 的往返、提升目录浏览和文件属性查看速度。

    约束限制:

    • 仅 obsfs 2.0 支持。设为 0 表示关闭内核缓存,每次查看文件属性都从 obsfs 实时获取(属性始终最新,但速度较慢)。
    • 缓存期间,若对象存储上的文件被其他方式(其他客户端、控制台)修改或删除,内核缓存可能暂时看不到变化,需等缓存到期后才反映最新状态。
    • 此参数控制的是内核侧缓存,与 obsfs 进程内的属性缓存(stat_cache_expire)相互独立,两者叠加生效:一次属性查看先查内核缓存,未命中再查 obsfs 进程缓存,最后才发请求到对象存储。

    取值范围:

    0 ~ 3600(整数,单位为秒);0 表示关闭缓存;超出范围会拒绝挂载。

    默认取值:

    60(秒)

    不支持

    不支持

    支持

    hard_remove

    参数解释:

    控制文件删除方式。启用该参数后,系统会直接从对象存储删除该对象;不启用该参数时,可能先将要删除的文件临时改名(隐藏),之后再实际删除。

    约束限制:

    仅 s3fs 和 obsfs 1.0 支持并生效。obsfs 2.0 接受此参数(不会报错),但该参数不产生实际作用,删除行为默认即为直接删除,无需此开关。

    取值范围:

    无(布尔开关,填写即启用)。

    默认取值:

    未启用。

    支持

    支持

    不支持。(默认行为和s3fs,obsfs1.0一致)

相关文档