配置
更新时间:2023-10-19
参数设置
bosfs支持设定参数来配置用户权限、存储类型及缓存等。执行bosfs –h
可以获得bosfs参数设置的详细说明:
bosfs参数 | 配置作用 | 注意事项 |
---|---|---|
-o use_cache, -o bos.fs.cache.base=< your_cache_dir_path > | 指定文件缓存模式下cache file位置 | 该位置不能在挂载点内,且必须是绝对路径, 被缓存的文件会长期存储在该目录下 |
-o allow_other -o mount_umask=0000 | 允许其他用户访问挂载点,并通过mount_umask禁止某些权限,mount_umask与linux umask含义一致 | 默认情况下,bosfs只具有挂载用户的读、写、执行权限即S_IRWXU |
-o meta_expires=< integer seconds> | 指定meta缓存过期时间 | 默认为不过期, 多端同时使用/挂载同一bucket时,建议配置-o meta_expires=0, 保证元数据和bos服务端一致, 详情见下文中 配置实践 |
-o meta_capacity=< integer number> | 指定内存中meta缓存容量,超过容量后过期的缓存会被以lru方式清除 | 默认 100000, 注意使用meta cache后, 多挂载点读写同一个bucket数据时, bosfs中文件元信息可能出现与bos服务端不一致情况 |
-o meta_strategy=<remote,merge,local> | 指定meta读取策略 remote:从远端读 merge:从远端读且于本地合并 local:只读本地缓存 | 该参数需于meta_expires配置使用 |
-o storage_class=< standard or standard_ia> | 指定object存储类型,包括标准存储和低频存储 | 默认为标准存储 |
-o tmpdir=<your_tmp_dir> | 指定file模式下临时文件位置 | 该位置不能在挂载点内,且必须是绝对路径,临时文件非长期存储在磁盘,close file后临时文件会被自动清除, 但需保证该目录磁盘空间充足, bosfs默认使用该模式 |
-o multipart_size=<integer KB,MB> | 指定并发传输的分片大小,可用KB或MB单位 | 默认为10MB |
-o multipart_threshold=<integer KB,MB> | 指定启用三步上传的文件大小阈值, 超过该阈值则开启 | 默认为100MB |
-o multipart_parallel=<integer number'> | 限制大文件上传并发度 | 可根据网络带宽等因素合理配置, 一般配置为10 |
-o preload_blocks=<integer number,MB> | 指定预读blocks数, 单次预读数据为: preload_blocks*1MB | 默认0, 如进行大文件下载(顺序读), 建议配置, 若进行随机读, 则不建议配置 |
-o connect_timeout=< milliseconds> | 指定连接Bos server的超时时间 | 默认1000ms |
-o client_timeout=< milliseconds> | 指定数据传输的超时时间 | 默认1200000s, 处于弱网/公网状态建议进行重新配置, 超时后会进行重试, 根据网络环境配置. |
-o rw_strategy=<mem_sequence,mem_random> | 指定读写策略, mem_sequence:使用内存模式, 只进行顺序读写(适用于只上传下载场景); mem_random:使用内存模式, 进行随机读写 | mem_sequence:只能进行顺序读写, 使用于上传/下载大文件(size>10GB), 可提升性能且减少/tmp目录下临时文件的空间使用. |
-o mem_cache_per_size=< integer MB> | 配置rw_strategy=mem_sequence/mem_random前提下, 指定单个文件的内存cache大小 | 配置rw_strategy=mem_random时, 需注意, mem_cache_per_size值必须大于所有可能打开文件大小最大值. |
-o mem_cache_limit_size=< integer MB> | 配置rw_strategy=mem_sequence/mem_random前提下, 指定bosfs进程所能使用当做文件缓存的总内存阈值, 超过该阈值, 则自动转换成普通file模式 | bosfs进程所能使用当做文件缓存的总内存阈值=同时open文件数据 *mem_cache_per_size, 默认值为启动bosfs时系统free内存大小 * 80% |
-o logfile=</tmp/bosfs.log> -o loglevel=debug | 开启bosfs日志,可配置日志位置在/tmp/bosfs.log下 | 默认1GB进行切割, 测试环境下建议开启debug日志 |
-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 |
fuse参数 | 配置作用 | 注意事项 |
---|---|---|
-o ro | 设置为只读模式, 用于保护bucket不被写入 | 该选项是fuse的标准选项 |
-o direct_io | 设置为direct_io, 不使用操作系统page cache | 配置rw_strategy=mem_sequence/mem_random前提下可设置为direct_io, 该选项是fuse的标准选项 |
日志
日志默认输出到stderr,可以用-o logfile=xxxx/xxxx.log
来指定名称。使用命令-d
打开debug模式的情况下,可以重定向到本地文件。
注意:
- 切勿将logfile文件路径或者重定向的文件路径指定到mountpoint里面,这会导致持续地将日志刷入BOS,造成不必要的开销。
- 如果没有使用
-d
或者-f
指定前台运行模式,启动之后bosfs进程会变成daemon,同时会将工作目录切到/之下,因此logfile需要指定绝对路径。bosfs的日志文件不会自动切割,需要用户自行使用脚本管理。- BOS FS挂载后,如果使用rsync功能,建议设置
-o loglevel=ERROR
和--partitial-dir=本地路径
,因为rsync会产生临时文件,默认会存在目的文件所在位置(bosfs中),产生不必要的bosfs中的上传开销。
只读
可以使用-o ro
选项来设置只读模式,用于保护bucket不被写入,该选项是fuse的标准选项。
配置实践
- 一般场景下(仅用作上传或下载文件场景, 无或很少随机读写)的推荐挂载参数:
bosfs <bos-bucket> <local-mount-dir> -o endpoint=bj.bcebos.com -o ak=xxx -o sk=xxx -o logfile=/tmp/bosfs.log -o loglevel=debug -o meta_expires=0 -o preload_blocks=100 -o bos.sdk.multipart_threshold=100MB -o bos.sdk.multipart_size=10MB -o bos.fs.multipart_parallel=10
- 元数据缓存 meta_expires 配置项
该配置项为bosfs元数据信息(文件size, last_modify_time, acl等)缓存时间, 使用元数据缓存可获得更高的性能, 但无法保证与bos服务端数据一致性, 一般有以下情况:
不配置-o meta_expires该项, 默认为使用元数据缓存, 且无过期时间, 当缓存条数达到meta_capacity后, 进行lru淘汰
-o meta_expires=0 表示不使用元数据缓存, 即每次都从bos服务端拉取元数据信息, 相应的会降低性能
-o meta_expires=3600 表示元数据缓存为3600秒, 该过期时间内使用本地缓存的元数据信息, 过期后从bos服务端重新拉取元数据信息
(1) 在有多个挂载点/sdk/其他途径对同一bucket中数据进行更新, 当前挂载点读数据时, 配置-o meta_expires=0可保证此挂载点始终能拉取到bos服务端的最新数据.
(2) 在只使用此挂载点来读写bucket中数据, 无其他挂载点读写同一bucket时, 可不配置该项, 以获得更高性能.
(3) 在只使用bosfs挂载点进行上传/写数据, 不进行下载/读数据时, 可不配置该项, 以获得更高性能. - 下载/上传文件(顺序读/写)场景下, 可参考以下配置, 提升性能.
(1)开启100MB预读, 当文件size超过100MB开启分片上传, 分片size为10MB, 并行度为10.
(2)下载场景下, 当文件size>10MB, bosfs会默认开启并行下载.
(3) 注意, 随机读写下开启预读会导致性能下降.
-o meta_expires=0 -o preload_blocks=100 -o bos.sdk.multipart_threshold=100MB -o bos.sdk.multipart_size=10MB -o bos.fs.multipart_parallel=10
- 在一次下载, 多次读取的场景下, 可开启file缓存模式, 参考以下配置, 提升性能.
开启file缓存模式后(默认为不开启file缓存模式), bosfs会在本机器的bos.fs.cache.base目录下缓存通过bosfs读到的文件, 下次读取相同文件, 会直接读取本地文件, 而非从bos服务端重新拉取, 以此提升性能.
(1) 开启file缓存模式, 并配置bosfs缓存目录为/tmp/bosfs-cache
(2) 开启100MB预读, 当文件size超过100MB开启分片上传, 分片size为10MB, 并行度为10.
(3) 下载场景下, 当文件size>10MB, bosfs会默认开启并行下载.
-o meta_expires=0 -o use_cache -o bos.fs.cache.base=/tmp/bosfs-cache -o preload_blocks=100 -o bos.sdk.multipart_threshold=100MB -o bos.sdk.multipart_size=10MB -o bos.fs.multipart_parallel=10
- 只用做上传/下载大文件(文件size>10GB)场景下, 可开启内存模式, 参考以下配置, 提升整性能.
(1) 开启内存模式, 配置单个文件内存cache为20MB, bosfs进程所能使用总的cache size为1000MB
① 顺序读写场景下, 即配置rw_strategy=mem_sequence, 当bosfs进程使用cache size内存超过配置阈值时, 自动退化为locla file模式
(2) 开启20MB预读, 指定上传文件size超过100MB开启分片并发上传, 分片size为10MB, 并行度为10.
(3) 下载场景下, 当文件size>10MB, bosfs会默认开启并行下载.
-o meta_expires=0 -o preload_blocks=20 -o bos.sdk.multipart_threshold=100MB -o bos.sdk.multipart_size=10MB -o bos.fs.multipart_parallel=10 -o mem_cache_per_size=20 -o rw_strategy=mem_sequence -o mem_cache_limit_size=1000 -o direct_io