提升ls命令文件列出速度

更新时间:2025-02-05 06:30:05

当您将包含多个文件和目录的Bucket挂载到本地时,可以通过优化挂载参数来显著提高使用ls命令列出文件的速度。

前提条件

适用场景

  1. Bucket目录下存在大量文件或文件夹。

  2. Bucket内不包含任何软链接文件,且不打算使用软链接功能。此外,对文件的用户ID(uid)、组ID(gid)等元数据信息没有特殊要求。

  3. 在对元数据一致性要求不高的场景中,例如模型训练或推理时,数据集文件基本上不会发生更改。

参数说明

选项名称

描述

选项名称

描述

max_stat_cache_size

控制是否启用元数据缓存和缓存的大小,1.91.x版本默认值为100,000,约占用内存40 MB。之前的版本默认为1,000。请根据OSS中被频繁访问的对象数量进行配置,在内存充足时,建议配置足够大的值,以有效提升操作体验,例如1,000,000。

  • 若设置为0,则表示禁用元数据缓存。一般不建议这样做,因为这会增加大量OSS元数据请求,从而影响性能。

    说明

    如果您希望在读、写文件时获取最新的元数据,您也可以不设置该参数。ossfs在处理POSIX语义的open请求时会自动获取最新的元数据。

    如果设为0后,要进行高频读写,ossfsHeadObj请求数量可能会远超读写请求,恢复默认值(100000)后,HeadObj请求数量下降到大致和读写请求相当,性能大幅优化。

  • 若设置为xxxx大于0,则表示设置元数据缓存大小为xx。

readdir_optimize

控制是否使用缓存优化,默认为false,即不使用。添加该挂载选项后ossfsls时不会执行HeadObject去获取文件项元数据(如giduid等)。根据应用程序特性选择。但是因为权限检查等原因仍然可能产生一定量的HeadObject请求。

stat_cache_expire

控制是否启用元数据缓存的过期淘汰策略以及调整缓存的过期时间(秒)。默认为900,即过期时间为15分钟。

  • 若设置为-1,则表示关闭缓存的过期淘汰策略。除非数据挂载后不会进行任何更新,不建议关闭淘汰策略。

  • 若设置为xxxx大于0,则表示设置缓存的过期时间为xx。

挂载示例

  • 场景1:Bucket目录下存在大量文件或文件夹。

    挂载名为mybucketOSS存储桶到本地/mnt/oss目录,开启元数据缓存并设置缓存空间为1000000约占内存400 MB。

    ossfs mybucket /mnt/oss -ourl=http://oss-cn-****.aliyuncs.com -omax_stat_cache_size=1000000 
  • 场景2:Bucket内不包含任何软链接文件,且不打算使用软链接功能。此外,对文件的用户ID(uid)、组ID(gid)等元数据信息没有特殊要求。

    挂载名为mybucketOSS存储桶到本地/mnt/oss目录,在后续执行ls命令时,不会发送HeadObject请求来获取文件项的元数据(如gid、uid等)。

    ossfs mybucket /mnt/oss -ourl=http://oss-cn-****.aliyuncs.com -oreaddir_optimize
  • 场景3:对元数据一致性要求不高的场景,例如模型训练或推理时,数据集文件基本上不会发生更改。

    挂载名为mybucketOSS存储桶到本地/mnt/oss目录,且关闭元数据缓存过期淘汰策略,将stat_cache_expire参数值设置为-1。您也可以设置一个较大的值,如72000,即20小时后缓存过期。

    ossfs mybucket /mnt/oss -ourl=http://oss-cn-****.aliyuncs.com -ostat_cache_expire=-1
  • 本页导读 (1)
  • 前提条件
  • 适用场景
  • 参数说明
  • 挂载示例
AI助理

点击开启售前

在线咨询服务

你好,我是AI助理

可以解答问题、推荐解决方案等