配置
更新时间:2025-09-12
参数设置
bosfs2支持设定参数来配置用户权限、存储类型及缓存等。执行bosfs2 –h
可以获得bosfs参数设置的详细说明:
bosfs2参数 | 配置作用 | 注意事项 |
---|---|---|
-o credentials=/path/credentials | 配置通过/path/credentials文件读取ak/sk等信息, 使用sts权限时必须使用此方式 | 具体格式: [defaults] bce_access_key_id = xxx bce_secret_access_key = xxx bce_security_token = xxx reload_interval_s=60 |
-o multi_thread=< integer> | 写异步提交或异步预读的线程数量 | 默认20线程,可以lscpu后根据cpu数量调整 |
-o multipart_size=<integer KB,MB> | 三步上传每个part的大小 | 默认16M。如果文件大小小于multipart_size。则不走三步上传,直接走PutObject。同时改参数会影响文件最大大小(1w*multipart_size) |
-o block_size=<integer KB,MB> | 顺序读每个对齐预读任务预读的块大小 | 默认4M, 一般场景无需改动 |
-o preload_blocks=< blocks> | 顺序读每个文件最多预读的块数量 | 默认32个。文件总预读:preload_blocks * block_size。默认128M |
-o mem_cache_limit_size=< integer> | 读或者写最大缓存数量 | 单位MB,默认1024MB 如果指定为-1,将最大使用挂载时空闲内存的80% 如果未指定内存gc时间,不会进行gc,读写按照1:1分配 如果指定了gc时间,读或者写最多占用 0.8 * mem_cache_limit_size。 |
-o mem_gc_interval=< second> | 内存池闲置内存回收周期 | 默认不GC |
-o meta_expires=< seconds> | meta 或者 attr 过期时间,单位是秒 | 默认60s。如果文件不存在,则不受cache影响, 依然能list&get到最新文件 |
-o connect_timeout=< milliseconds> | 指定连接Bos server的超时时间 | 默认1000ms |
-o client_timeout=< milliseconds> | 指定数据传输的超时时间 | 默认120000ms, 内网环境可适当降低超时时间, 使其快速重试 |
-o logfile=/path/to/logfile | 指定日志文件位置 | 主要是用来分析问题 |
-o log_level=<fatal,error,warn,info,debug> | 指定日志等级 | 主要是用来分析问题 |
-o bos.fs.log.rotate_size=< integer MB> | 指定日志切割文件大小 | 默认1024MB |
-o bos.fs.log.quota_size=< integer MB> | 指定bosfs日志总占用容量, 超过该容量将自动清理最久的日志 | 默认10240MB |
-o max_mem_file_size=< integer MB> | 指定最大完全缓存内存文件大小 | 默认10MB 这种文件支持随机读写(如果需要先随机写然后顺序写,当前需要对最后一个byte写一下,移动offset) |
fuse参数 | 配置作用 | 注意事项 |
---|---|---|
-o allow_other | 其他用户可读写 | 当前默认情况下目录权限为 777,文件权限为 666 |
-o max_threads=< integer> | 设置同时并发的线程数量 | 该选项是fuse的标准选项,默认10 |
挂载样例
Plain Text
1bosfs2 <bucket>[/<bos_dir_path>] <local-mount-dir> \
2 -o endpoint=bj.bcebos.com \
3 -o ak=xxx \
4 -o sk=xxx \
5 -o mem_cache_limit_size=8192 \
6 -o mem_gc_interval=10 \
7 -o multi_thread=32 \
8 -o max_threads=32 \
9 -o preload_blocks=256 \
10 -o multipart_size=32M \
11 -o block_size=4M \
12 -o meta_expires=60 \
13 -o log_quota_size=10000 \
14 -o log_rotate_size=1000 \
15 -o loglevel=info \
16 -o logfile=/var/log/bosfs2.log \
17 -o max_mem_file_size=32MB \
18 -o allow_other
日志
日志默认输出到stderr,可以用-o logfile=xxxx/xxxx.log
来指定名称。使用命令-d
打开debug模式的情况下,可以重定向到本地文件。
注意:
- 切勿将logfile文件路径或者重定向的文件路径指定到mountpoint里面,这会导致持续地将日志刷入BOS,造成不必要的开销。
- 如果没有使用
-d
或者-f
指定前台运行模式,启动之后bosfs进程会变成daemon,同时会将工作目录切到/之下,因此logfile需要指定绝对路径。
推荐配置
- meta_expires 适当增加可显著提高lookup,stat的性能
- multi_thread 适当增加可以提高大文件顺序读写性能
- max_threads 适当增加可以提高小文件读写以及非listdir的元数据性能
大文件顺序读
示例:以读为主,设置总缓存10GiB,后台任务线程128,预读块大小4M,总共预读512个块,相当于预读2GiB。同时设置内存回收周期为60秒,让读可以占更多内存
Plain Text
1-o mem_cache_limit_size=10240 -o multi_thread=128 -o mem_gc_interval=60 -o block_size=4M -o preload_blocks=512
大文件顺序写
由于三步上传的限制,默认配置最大支持 312GiB。如果需要更大的文件,可以适当调大multipart_size 示例:以写为主,设置总缓存10GiB,后台任务线程128,三步上传单个Part为32M,同时内存回收周期60秒
Plain Text
1-o mem_cache_limit_size=10240 -o multi_thread=128 -o mem_gc_interval=60 -o multipart_size=32M
多线程并发读写大量小文件
示例:设置fuse工作线程数64,并配置meta过期时间为10分钟
Plain Text
1-o max_threads=64 -o meta_expires=600
需要支持小文件随机写
随机写文件,最大支持配置总内存占用的一半。但是由于随机写的过程中无法释放内存,通常不建议放那么大,除非能保证只会同时写一个文件,否则可能造成资源占用死锁。同时,在使用结束后应该立即close,把数据写回后端。比如说使用最大内存,最大随机写文件为1GiB
Plain Text
1-o mem_cache_limit_size=-1 -o max_mem_file_size=1024MB