Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update S3 code to use s3gof3r #2016

Closed
kyledrake opened this issue Nov 30, 2015 · 6 comments
Closed

Update S3 code to use s3gof3r #2016

kyledrake opened this issue Nov 30, 2015 · 6 comments
Labels
help wanted Seeking public contribution on this issue topic/repo Topic repo

Comments

@kyledrake
Copy link

The original S3 code is no longer being mantained and has error reporting issues. The current workaround (using datastore with an S3 FUSE mount such as goobys) is pretty slow.

Update the S3 code to use s3gof3r (https://github.com/rlmcpherson/s3gof3r), which looks pretty best-case for performance considerations RE ipfs/infra#89 (comment)

In the future some caching considerations may be needed, but this ticket is finished by just getting a basic integration in. Optimization will depend on benchmarking.

@jbenet
Copy link
Member

jbenet commented Dec 1, 2015

@almereyda
Copy link

I am currently looking into backing IPFS by FLOSS S3-compatible object stores. Finding https://github.com/ipfs/go-ipfs/blob/master/thirdparty/s3-datastore/datastore.go let me already suspect a strong binding to Amazons infrastructure. As ipfs/notes#9 also maneuvers around plain Amazon-branded S3, I am interested in knowing your prospect:

Could IPFS also be backed by FLOSS distributed storage infrastructure?

https://github.com/jbenet/go-datastore/ lets me believe Redis would already be possible, but the documantation scattered somewhere inbetween jbenet/random-ideas#33 and ipfs-inactive/faq#86 (comment) does not explicitly mention how to use different block storage providers. Unfortunately the suggested go package also doesn't mention third party S3-compatible API providers.

https://github.com/ipfs/specs/tree/master/repo suggests to create https://github.com/ipfs/specs/blob/master/repo/s3-repo instead of (4) above.

As of https://groups.google.com/d/msg/ipfs-users/6POFh0EdnVI/rPSKGqoREgAJ there has already been some work at https://github.com/ipfs/go-ipfs/tree/s3, #1261 and #1488 which needs to be revamped either way.

Would there be any interest in supporting Ceph, Swift, GlusterFS, Eucalyptus and others as distributed storage clusters for large-scale IPFS nodes? Have a look at how ownCloud Enterprise tricks their S3 client to use Ceph instead.

@daviddias daviddias added topic/fuse Topic fuse and removed topic/fuse Topic fuse labels Jan 2, 2016
@sivachandran
Copy link
Contributor

I am trying to bring S3 as datastore for IPFS. As POC I changed the openDefaultDatastore function of defaultds.go to initialize the repo with S3 backed datastore for blocks and leveldb for everything else. The S3 datastore uses s3gof3r library to access S3 bucket. I've implemented the Put, Get, Has, Batch functions of S3 datastore. I didn't implement the Query function as s3gof3r library doesn't support listing keys. IPFS runs fine with these changes. Whenever I add content to IPFS I can confirm blocks getting stored in the S3 bucket. I can also able to retrieve content from IPFS where the blocks are actually stored in S3.

Now I want to make the changes proper and integrate with IPFS. But I am not sure how to proceed on this as this involves changing the config file format to specify S3 parameters. I've checked ipfs/notes#9 but not sure which one is finalized.

@whyrusleeping @jbenet Can you guide me how should I take this forward?

@whyrusleeping
Copy link
Member

@sivachandran where is your s3 datastore implementation at?

On the todo list is making configuring the local datastore nicer, i'll ping back here when thats complete.

@whyrusleeping whyrusleeping added help wanted Seeking public contribution on this issue topic/repo Topic repo and removed topic/fuse Topic fuse labels Aug 19, 2016
@sivachandran
Copy link
Contributor

@whyrusleeping RealImage#1 is the S3 datastore implementation. It is designed and implemented mainly to satisfy my requirements. It might require some changes to merge into master.

@Kubuxu
Copy link
Member

Kubuxu commented Apr 10, 2019

S3 datastore was migrated here: https://github.com/ipfs/go-ds-s3/

@Kubuxu Kubuxu closed this as completed Apr 10, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
help wanted Seeking public contribution on this issue topic/repo Topic repo
Projects
None yet
Development

No branches or pull requests

7 participants