对象存储使用s3fs挂载充当硬盘

warning: 这篇文章距离上次修改已过108天,其中的内容可能已经有所变动。

本文以Linux系列为例,Windows可参考rclone

1、安装s3fs
Ubuntu:

sudo apt install s3fs 

CentOS:

sudo yum install epel-release 
sudo yum install s3fs-fuse

2、配置账号访问信息
将具有Bucket访问权限的AccessKey ID和AccessKey Secret信息存放在.passwd-s3fs文件中。

echo 你的AccessKey:你的AccessKey Secret > ${HOME}/.passwd-s3fs

3、将.passwd-s3fs文件的权限设置为600

chmod 600 ${HOME}/.passwd-s3fs

4、挂载存储空间
创建挂载点

mkdir /tmp/disk-bucket

将对象存储Endpoint地域的bucket挂载至/tmp/disk-bucket

s3fs 你的bucket名称 /tmp/disk-bucket -o passwd_file=$HOME/.passwd-s3fs -ourl=http://对象存储Endpoint域名

验证验证

备注:卸载命令fusermount -u /tmp/disk-bucket 或 umount -l /tmp/disk-bucket

5、参数调优
从性能优化的角度,推荐的一组挂载参数

s3fs bucket_name /tmp/disk-bucket -o passwd_file=$HOME/.passwd-s3fs -o url=http://对象存储Endpoint域名:7480 -o use_path_request_style -o allow_other -o umask=0 -o use_cache=/dev/shm -o enable_noobj_cache -o sigv2 -o del_cache -o multipart_size=64 -o max_write=131072 -o big_writes -o kernel_cache -o max_background=1000 -o max_stat_cache_size=100000 -o parallel_count=30 -o multireq_max=30 -o dbglevel=warn

-o allow_other
本参数用于设置挂载目录可以被任意登录服务器的用户使用。

-o umask=0
本参数用于设置挂载后资源的访问权限,确保挂载后所有用户能够对挂载目录下资源具有访问权限。umask与chmod配套,当设置umask=0时对于文件权限为777,若需要设置权限为755,则设置umask=022,以此类推配置所需权限。

-o use_cache
使用内存作为缓存目录,而非本地磁盘作为cache将提升文件读写性能,即将该值设置为-o use_cache=/dev/shm。如果系统内存使用较高,则建议另外挂载一个SSD盘作为缓存目录。

-o enable_noobj_cache
使用本参数后,将减少s3fs发送的列举桶的请求,从而提升性能

-o sigv2
缺省值为采用V4鉴权,使用V2鉴权效率更高,兼容性更好

-o del_cache
文件使用完成后及时清理缓存中的数据。

-o multipart_size(default=”10”(10MB))
设定上传是单个分段的大小,缺省值为10MB。

-o max_write
本参数用于设置vfs的上传块大小,默认值为4096,可将该数值设置为fuse所支持的最大值128k(即设置-o max_write=131072),以提升性能。

-o big_writes
开启本参数后,内核会进行IO合并,对于大块读写,提升性能。

-o kernel_cache
支持 s3fs 安装点上的内核缓冲区高速缓存。这意味着对象将仅由 s3fs 读取一次,因为同一文件的重复读取可以通过内核的缓冲区高速缓存进行处理。内核缓冲区高速缓存将仅使用未被其他进程使用的可用内存。如果在存储区安装期间预期存储区对象会被其他进程/机器覆盖,并且您的用例需要实时访问最新的内容,那么建议不要使用此选项。

-o max_background
可提高 s3fs 并行文件读取性能。缺省情况下,FUSE 支持最多 128 KB 的文件读请求。当要求读取的对象超过此大小时,内核会将大请求拆分为较小的子请求,并允许 s3fs 以异步方式处理这些子请求。max_background 选项用于设置此类并行异步请求的全局最大数目。缺省情况下,此值设置为 12,但将其设置为任意高值 (1000) 可避免读请求被阻止,即使同时读取大量文件。

-o max_stat_cache_size
可减少 s3fs 发送的冗余 HTTP HEAD 请求数,并缩短列出目录或检索文件属性所用的时间。典型的文件系统用法会通过 stat() 调用频繁访问文件的元数据,该调用将映射到对象存储系统上的 HEAD 请求。缺省情况下,s3fs 会高速缓存最多 1000 个对象的属性(元数据)。每个高速缓存的条目最多需要 0.5 KB 内存。理想情况下,您会希望高速缓存能够保存存储区中所有对象的元数据。但是,您可能需要考虑这种高速缓存对内存使用量的影响。将其设置为 100000 需要的内存不超过 0.5 KB * 100000 = 50 MB。

-o parallel_count
设置每个文件读/写操作中并行发送给 ZOS 的最大请求数。缺省情况下,此值设置为 5。对于超大对象,可以通过增大此值来获取更多吞吐量。与先前选项一样,如果只读取每个文件的少量数据,请使此值保持较小。

-o multireq_max
列出目录时,会针对列表中的每个对象发送对象元数据请求 (HEAD),除非在高速缓存中找到元数据。此选项用于限制针对单个目录列示操作发送到 ZOS 的此类并发请求数。缺省情况下,此值设置为 20。请注意,此值必须大于或等于上面的 parallel_count 选项。

-o dbglevel
将调试级别设置为 warn,而不设置为缺省值 (crit),以将消息记录到 /var/log/messages

仅有一条评论

  1. 乱乱唱 乱乱唱

    发现用Ubuntu治疗好了多年的乱用root习惯。哈哈

添加新评论

选择表情