You need to enable JavaScript to run this app. s3fs下载的文件未存储到指定缓存目录的原因是什么?
优惠活动
大模型
产品
解决方案
定价
更多

s3fs下载的文件未存储到指定缓存目录的原因是什么?

s3fs未生成磁盘缓存的原因说明
  • 内核页缓存优先级高于s3fs磁盘缓存
    你将文件写入s3fs挂载点时,数据会首先暂存在Linux内核的页缓存(Page Cache)中,此时你立刻读取该文件,内核会直接从内存返回数据,不会触发s3fs的读逻辑,自然不会走磁盘缓存写入流程,也不会发起S3下载请求。就算你重新挂载s3fs,只要内核的页缓存还没有被系统回收,读操作仍然会直接从内存取数据,不会和S3交互也不会写磁盘缓存。
    重启之后内存页缓存被清空,所以第一次读会触发S3下载,和你观察到的现象一致。
  • use_cache参数有触发前提,未满足条件时不会写入磁盘
    要触发磁盘缓存写入,必须同时满足以下条件:
  1. 实际发生了从S3服务端拉取数据的读请求(内存缓存未命中)
  2. s3fs运行身份对指定的/tmp缓存目录有读写权限
  3. 缓存目录剩余空间大于ensure_diskfree参数的阈值,s3fs默认该值为100MB,也就是说如果/tmp剩余空间低于100MB + 待缓存文件大小,s3fs会直接放弃写入磁盘缓存,数据仅在内存中流转
  4. 挂载时未开启direct_io等会绕开用户态缓存的参数
  • 缓存文件存在形式容易被忽略
    s3fs的磁盘缓存文件默认以对象的ETag值命名,且在读写过程中会使用临时文件名,如果你在文件读取过程中检查/tmp,可能看不到完整的缓存文件。部分版本的s3fs还会将缓存文件放在/tmp下的隐藏子目录中,你可以执行ls -la /tmp排查是否有相关隐藏目录或文件。

内容的提问来源于stack exchange,提问作者Karthik

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.16 23:27:03