目前一些开源项目支持把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:fXH7xeljeOoPFkKcbEu