uroni

Joined 1 year ago

Karma
41
Submissions
20
Member since
Sep 24
Self-hosted scale-up S3:

https://github.com/uroni/hs5

Client/Server backup system:

https://github.com/uroni/urbackup_backend

View on Hacker News

Recent submissions

Comment · 1 month ago
I implemented this (HS5). Etags match the AWS S3 ones as well.
Comment · 1 month ago
Ceph is pretty much the standard, I think. Very complex to manage, though, but that might just be necessary complexity for a distributed storage system.
Comment · 1 month ago
Not without snapshot currently. I guess I could collect all writes in the (optional) WAL file while a backup is running, then the files would be consistent.
Comment · 1 month ago
My https://github.com/uroni/hs5 is designed for this use case.

One notable thing is that compared to MinIO (and others) it does not store the objects as individual files. I also have DuckDB directly integrated.

The readme has a comparison to Garage, seaweedfs, RustFS and Ceph.

Comment · 4 months ago
Comment · 5 months ago
In my similar project (s3 compatible single-node storage) https://github.com/uroni/hs5 I do use proper fsync for data and metadata durability. But it can be turned of via switch. It is a pet peeve of mine that the defaults should always be to fsync. I do have a section on this in my README of the project.

I also do have an optional WAL. Maybe I should add an additional mode that disables fsync only for the WAL. I don't think it would be a good idea. My WAL does use checksums and sequence numbers etc. to prevent committing wrong data.

Comment · 6 months ago
I build https://github.com/uroni/hs5 as replacement for single node use with a focus on high performance. I list other alternatives in the README there. Some short version:

Ceph: Robust, widely used for multi-node deployments. Would recommend for serious use.

RustFS: As an in-place replacement using the same storage format. Though, to me it is a bit suspect, e.g. if it uses fsync for durability.

seaweedfs: Multi-node alternative, that keeps the object mapping in memory (so more RAM usage and startup cost compared to alternatives).

Garage: Multi-node alternative, web-interface available separately. To me seems unsuitable for single-node use at this point.

VersityGW: Single-node alternative, which uses the same object=file in file system tree storage as MinIO (with the same disadvantages/advantages). It uses extended attributes for S3 metadata, so less filesystem overhead than MinIO/RustFS at least. Cannot find any Sync() or fsync calls in the code, though.

Comment · 6 months ago
I'd worry about file create, write, then fsync performance with btrfs, but not about reliability or data-loss.

But a quick grep across versitygw tells me they don't use Sync()/fsync, so not a problem... Any data loss occurring from that is obviously not btrfs fault.

Comment · 6 months ago
Comment · 6 months ago
For me it went into the multi-node direction, where I'd use Ceph anyway (or build on-top of an existing solid distributed database) if I needed it.

Also think there is an abstraction mismatch with the object stores that store the objects with a 1:1 mapping into the file system. Obvious issues are that you only get good listing performance with '/' as delimiter and things like "keys with length up to 1024 bytes" break.

Comment · 6 months ago
I made https://github.com/uroni/hs5 -- focus is on single node and high performance. So plenty of alternatives available.
Comment · 8 months ago
Comment · 8 months ago
Comment · 8 months ago

Live from the official Hacker News API

A modern reader for Hacker News · SvelteKit + Skeleton