# 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一致）            |
     
  
 
