Live data from Hacker News

Show HN: Minimalist Object Storage Project

github.com

21–30 of 30 posts

Re: Show HN: Minimalist Object Storage Project

#21

What specifically separates this from Swift or Ceph, both of which have S3 compatible APIs and are considerably better documented/hardened/maintained + distributed?

Minio is about minimalist design, take a look at the blog post to get an idea https://medium.com/@minio/minio-no-knobs-to-turn-no-button-t...

At this early stage of the project it is hard to explain why another approach is necessary.

Re: Show HN: Minimalist Object Storage Project

#22
post #9

While the concept is interesting, it hasn't built the only real detail that matters from an Object Store perspective: Cheap, Multi-Datacenter, Performant, Highly Available storage. "YAS3I" / Yet-Another-S3-Implementation isn't really compelling even if it is open source. I can pull that out of https://wiki.openstack.org/wiki/Swift/APIFeatureComparison#A... if I really need that.

We are in an early stage, we will have a distributed version by end of this year. It isn't about "YAS3I". It isn't compatible just for the compatibility sake. Minio implementation is opinionated: "There is only one way to do it". Given a choice between Amazon S3 and OpenStack SwiftAPI compatibility, we picked Amazon S3. As SwiftAPI gains adoption, we may switch over to SwiftAPI, but will have to drop S3 then. Let the…

From working at an Openstack startup for a while, I can say that customers definitely prefer the S3 API since it works with their existing tools. That being said, they are largely compatible until you get into the authorization models, and the fact that S3 is globally namespaced, whereas Swift scopes names to tenants.

Re: Show HN: Minimalist Object Storage Project

#23
post #15

Earlier quoted context omitted.

We don't have any yet, we are just few months old project. We will will have a distributed server by end of this year. We have stand alone server now which includes currently three modes of operation -- memory -- filesystem -- donut(experimental) A small video to help you download and start a memory mode - https://asciinema.org/a/21575 Client tools and libraries are ready to be used by community to give us feedback o…

What's "donut" storage?

Donut - is a distributed erasure coded backend format, designed specifically for immutable data.

We call it "do not delete" in short donut.

https://github.com/minio/minio/tree/master/pkg/storage/donut

It is currently experimental, but a distributed version is a work in progress.

Re: Show HN: Minimalist Object Storage Project

#24
post #8
post #4

Why not just use Swift? http://docs.openstack.org/developer/swift/ It can be run as a stand alone app so it's generally pretty simple and can include support from https://swiftstack.com/ .

First time I'm seeing Swift. Are there use cases where Swift is a better fit than Cassandra?

As mentioned elsewhere on this thread, you'd use Swift (and other object storage systems) to store larger pieces of unstructured binary data (eg. images/videos/backups). The easiest way to do that in Cassandra without rolling a whole bunch of new code for yourself would be to store these things as gigantic rows in Cassandra, which isn't where it performs well. Typically object storage systems also come with a whole lot of features such as being able to control who views your files, the ability to upload files in piecemeal fashion, etc.

Re: Show HN: Minimalist Object Storage Project

#25
The first questions which I look for on objects stores are how it approaches data integrity – things I'd like to see on the homepage:

1. Does it have the S3/Swift/etc. semantics that you will always get the bits first stored or an error but never a corrupt or truncated file?

2. Does it have the S3 and (IIRC) Swift feature that allows you to provide an expected hash so data corrupted in transit will be detected and an error will be returned instead of storing the object?

3. How does it verify data integrity? Only on access, background scrubs, via API request, etc.

4. Which strong hashes are used for all of the above? Are they configurable / selectable so e.g. if I wanted something strong than S3's Content-MD5 header for uploads can I use SHA-256 instead?

5. The classic easy-to-ask, hard-to-answer one: what level of testing backs up all of the previous answers?

Re: Show HN: Minimalist Object Storage Project

#26
post #4

Why not just use Swift? http://docs.openstack.org/developer/swift/ It can be run as a stand alone app so it's generally pretty simple and can include support from https://swiftstack.com/ .

Personally I'm enjoying playing with Skylable SX server (and its libres3 s3 interface) - I'll be honest, I never really gave Swift enough of a chance. I've yet to get my head round it quickly enough so far. Found this one while researching other things

"Skylable was founded in 2012 by Tomasz Kojm, Luca Gibelli, Edwin Török and Alberto Wu, best known for their success with ClamAV, the leading GPL anti-virus for UNIX running on millions of servers and protecting billions of users."

http://www.skylable.com/products/sx/

"With SX Cluster you aggregate the disk space available on multiple servers and merge it into a single storage system. The cluster makes sure that your data is always replicated over multiple nodes (the exact number of copies is defined by the sysadmin) and synchronized. Additionally Sx has built-in support for deduplication, client-side encryption, on-the-fly compression and much more"

Very responsive in their IRC channel on Freenode too. I know I sound like a walking advert reading this comment back but I have no affiliation other than end user

Re: Show HN: Minimalist Object Storage Project

#27

I'm new to the concept of object storage. Is the thing which distinguishes object storage from key-value storage the ability to also store metadata? I.e., Instead of providing (key: value), it provides (key: (metadata, value))?

I've seen this an an outgrowth of the file storage world:

1. Flat data model – i.e. no directories, just a single globally-unique identifier 2. Much larger sizes than many key:value stores are designed to handle, typically bounded only by physical storage 3. Updates are complete and atomic: you don't have to support all of the crazy permutations like streaming writes from a file handle which could be kept open for years, dealing with simultaneous writes, etc. which make life interesting for filesystem implementers 4. None of the more complicated filesystem behaviour like locking, alternate data streams, etc. which add so many edge cases

Re: Show HN: Minimalist Object Storage Project

#28
post #25

The first questions which I look for on objects stores are how it approaches data integrity – things I'd like to see on the homepage: 1. Does it have the S3/Swift/etc. semantics that you will always get the bits first stored or an error but never a corrupt or truncated file? 2. Does it have the S3 and (IIRC) Swift feature that allows you to provide an expected hash so data corrupted in transit will be detected and an…

> 1. Does it have the S3/Swift/etc. semantics that you will always get the bits first stored or an error but never a corrupt or truncated file?

Yes you are right the behavior is exactly similar to how an S3 API would behave for Get/Put().

> Does it have the S3 and (IIRC) Swift feature that allows you to provide an expected hash so data corrupted in transit will be detected and an error will be returned instead of storing the object?

Yes, just like how Content-MD5 is set through a client request for per uploads in S3, Minio honors that as well.

Minio provides three modes of operation

-- memory (in memory object storage)

-- filesystem (point to any directory or disk, all files are contigous and not erasure coded)

-- donut (experimental, distributed erasure coded on disk format)

In Donut individual parts or chunks are separately sha256 summed along with erasure coding on top of these individual parts.

https://github.com/minio/minio/tree/master/pkg/storage/donut

Donut also implements rubberband erasure which is a dynamic erasure coding style where in cumulative parities are created for all objects depending on the available disks, total usage etc.

> How does it verify data integrity? Only on access, background scrubs, via API request, etc.

Donut also does data integrity checks on a regular basis as an operational process, where even silent data corruption is fixed automatically without the need for any user intervention.

We are in early stage of our project, as of today Donut is experimental - currently runs on a single node, does sha256 sums for erasured chunks and erasure codes your data on disk.

Much of the operational process and distributed donut is a work in progress, we are planning to get them ready by end of this year.

> Which strong hashes are used for all of the above? Are they configurable / selectable so e.g. if I wanted something strong than S3's Content-MD5 header for uploads can I use SHA-256 instead?

Yes while Content-MD5 is what we do now, along with erasure coding and sha256 summing individual chunks. We can provide the similar semantics of ``x-amz-content-sha256`` from client side. We would be happy to implement it feel free to open a bug - https://github.com/minio/minio/issues

> The classic easy-to-ask, hard-to-answer one: what level of testing backs up all of the previous answers?

I agree with hard-to-answer :-). Minio is written in Golang, which largely drives us to "write tests first" style and we have rightfully followed it on a day to day basis. Not being limited to that we are also working towards building a continous integration testing framework which would be baked into the product, which would help any user perform self diagnostics of his/her setup. In-turn generating reports for quality of their setup, any unknown parameters which might show up etc.

Also testing is an ongoing process, so we are striving to be better everyday :-)

Thanks for the questions, feel free to hop on to - gitter.im/minio/minio and find us there.

Re: Show HN: Minimalist Object Storage Project

#29
post #28
post #25

The first questions which I look for on objects stores are how it approaches data integrity – things I'd like to see on the homepage: 1. Does it have the S3/Swift/etc. semantics that you will always get the bits first stored or an error but never a corrupt or truncated file? 2. Does it have the S3 and (IIRC) Swift feature that allows you to provide an expected hash so data corrupted in transit will be detected and an…

> 1. Does it have the S3/Swift/etc. semantics that you will always get the bits first stored or an error but never a corrupt or truncated file? Yes you are right the behavior is exactly similar to how an S3 API would behave for Get/Put(). > Does it have the S3 and (IIRC) Swift feature that allows you to provide an expected hash so data corrupted in transit will be detected and an error will be returned instead of sto…

Thanks for the reply – it sounds like you're definitely hitting the areas I care about.

One quick thought: I was at USENIX the year that ZFS was announced and one thing which was very popular was when the Sun team talked about how much random testing they'd done with billions of runs exercising the major features with simulated failures, memory corruption, etc. so they could stress-test the detection and recovery mechanisms:

https://blogs.oracle.com/bill/entry/zfs_and_the_all_singing

You could see a lot of sysadmins nodding their heads as they described each class of failure mode and how they were trying to simulate it.

These days I'd probably toss in something like running afl-fuzz against your storage code, too.

Re: Show HN: Minimalist Object Storage Project

#30
post #29
post #28

Earlier quoted context omitted.

> 1. Does it have the S3/Swift/etc. semantics that you will always get the bits first stored or an error but never a corrupt or truncated file? Yes you are right the behavior is exactly similar to how an S3 API would behave for Get/Put(). > Does it have the S3 and (IIRC) Swift feature that allows you to provide an expected hash so data corrupted in transit will be detected and an error will be returned instead of sto…

Thanks for the reply – it sounds like you're definitely hitting the areas I care about. One quick thought: I was at USENIX the year that ZFS was announced and one thing which was very popular was when the Sun team talked about how much random testing they'd done with billions of runs exercising the major features with simulated failures, memory corruption, etc. so they could stress-test the detection and recovery mec…

> Thanks for the reply – it sounds like you're definitely hitting the areas I care about.

Thank you, appreciate the inputs :-)

Post reply on HN