s3fs简介
简要来说,就是将s3的存储桶,文件,文件列表可以通过挂载到本地形成一个本地文件系统,方便浏览和查看目录结构,由于ceph rgw服务兼AWS S3,所以通过s3fs工具我们也能够将ceph radosgw集群的文件导出成本地文件系统。
环境
原ceph环境搭建在ubuntu16.04,ceph版本为L版本。
安装
可以直接通过apt-get install (如果没有安装,尝试将apt源替换为清华/163的源),可以省去通过源码包下载安装编译配置环境等复杂步骤。
使用
首先集群的对象网关服务正常在线,并且已经创建好相关用户和bucket。以test用为例,将test用户的access key和secret key导入到一个本地文件并赋予权限,此处以两个key都是test为例。该文件在s3fs挂载时需要用到。
echo test:test > /opt/tempkeyfile
chmod 600 /opt/tempkeyfile
创建完成后,即可利用s3fs进行挂载,基本命令为:
s3fs [bucketname] [mountpoint]
然而如果在ceph中使用直接此命令报错。
s3fs: unable to access MOUNTPOINT /opt/temp/: Transport endpoint is not connected
因为官网和其他链接给出的使用文档bucket都是基于公有服务器而不是自己搭建的cpeh对象网关服务,当使用ceph对象网关进行挂载时,需要制定额外参数
- 指定url(必需):即对象网关服务ip以及端口号,和使用cloudberry一样。(我的对象网关节点ip为192.168.1.100,服务端口号为:7480)
- 指定passwd_file(必需):之前手动生成的tempkeyfile
- 指定use_path_request_style(最主要引起错误原因):使用路径访问方式,如果使用自己的ceph集群,此项必须添加,否则会报错。
- 指定签名版本(非必需):sigv2,如果不一样可能会导致部分文件无法正常使用,默认为v4认证,因为我集群内对象网关配置成v2认证,此处需要添加。
先将刚刚挂载报错的目录卸载掉(不然即使命令正确而未进行卸载依然报错)
fusermount -u /opt/temp/
最后,完整正确的ceph环境中使用s3fs挂载命令如下:
s3fs testbucket1 /opt/temp/ -o url=http://192.168.1.100:7480 -o passwd_file=/opt/tempkeyfile -o sigv2 -o use_path_request_style