ceph radosgw 挂载goofys

来源:互联网 发布:软件测试技术大全 编辑:程序博客网 时间:2024/05/18 00:09

目前一些开源项目支持把s3接口挂在成fuse文件系统,最早的是s3fs,目前有两个项目,一个是c++写的,一个是python实现的,目前用的比较多的是python实现的,另外还有riofs和goofys,目前对比测试了三种挂载方式,整体来说goofys性能最好


当然ceph目前也有个把radosgw通过nfs协议挂载的方式,但是目前还不成熟



1. 如何挂载

/home/ceph/goofys/bin/goofys --endpoint http://127.0.0.1:8001  --debug_s3 --debug_fuse -f new-bucket /home/ceph_goofys


 --debug_s3 --debug_fuse -f 分别是几个调试信息打印选项,可以看到goofys与rgw之间的http消息交互情况,如果有错误会在其中反馈



问题:

1. 挂载返回400错误,提示invalid uil

原因:radosgw内部默认的civetweb作为http服务器,对于goofys挂载时传递的absolute uri不支持,例如消息:

HEAD http://127.0.0.1:8001/new-bucket HTTP/1.1
Host: 127.0.0.1:8001
User-Agent: aws-sdk-go/1.0.0 (go1.6.3; linux; amd64)
Authorization: AWS 4YFLF7T4FDHRPCQ2OCBQ:fXH7xeljeOoPFkKcbEuvUNVUr0M=
X-Amz-Date: Fri, 4 Nov 2016 07:23:00 +0000


可以看到uri是absolute uri,如果是相对uri则应该是/new-bucket

目前ceph社区中已经提到这个问题,但是貌似并没有解决,但是civetweb中较新的版本已经解决了,可以合入解决,但是在较新版本中对于相对uri的提取需要判断

对于authentication_domain前缀是否匹配请求中的uri前缀的判断,因此需要在config中增加

rgw_frontends = civetweb authentication_domain=127.0.0.1 port=8001



0 0
原创粉丝点击