seaweedfs
Go IPFS
DISCONTINUED
Our great sponsors
seaweedfs | Go IPFS | |
---|---|---|
33 | 63 | |
20,796 | 13,905 | |
7.9% | - | |
9.9 | 9.6 | |
6 days ago | over 1 year ago | |
Go | Go | |
Apache License 2.0 | GNU General Public License v3.0 or later |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
seaweedfs
-
Billion File Filesystem
If you want/need to take out the metadata, there's some nice solutions for that https://github.com/seaweedfs/seaweedfs
-
SeaweedFS fast distributed storage system for blobs, objects, files and datalake
First, the feature set you have built is very impressive.
I think SeaweedFS would really benefit from more documentation on what exactly it does.
People who want to deploy production systems need that, and it would also help potential contributors.
Some examples:
* It says "optimised for small files", but it is not super clear from the whitepaper and other documentation what that means. It mostly talks about about how small the per-file overhad is, but that's not enough. For example, on Ceph I can also store 500M files without problem, but then later discover that some operations that happen only infrequently, such as recovery or scrubs, are O(files) and thus have O(files) many seeks, which can mean 2 months of seeks for a recovery of 500M files to finish. ("Recovery" here means when a replica fails and the data is copied to another replica.)
* More on small files: Assuming small files are packed somehow to solve the seek problem, what happens if I delete some files in the middle of the pack? Do I get fragmentation (space wasted by holes)? If yes, is there a defragmentation routine?
* One page https://github.com/seaweedfs/seaweedfs/wiki/Replication#writ... says "volumes are append only", which suggests that there will be fragmentation. But here I need to piece together info from different unrelated pages in order to answer a core question about how SeaweedFS works.
* https://github.com/seaweedfs/seaweedfs/wiki/FAQ#why-files-ar... suggests that "vacuum" is the defragmentation process. It says it triggers automatically when deleted-space overhead reaches 30%. But what performance implications does a vacuum have, can it take long and block some data access? This would be the immediate next question any operator would have.
* Scrubs and integrity: It is common for redundant-storage systems (md-RAID, ZFS, Ceph) to detect and recover from bitrot via checksums and cross-replica comparisons. This requires automatic regular inspections of the stored data ("scrubs"). For SeaweedFS, I can find no docs about it, only some Github issues (https://github.com/seaweedfs/seaweedfs/issues?q=scrub) that suggest that there is some script that runs every 17 minutes. But looking at that script, I can't find which command is doing the "repair" action. Note that just having checksums is not enough for preventing bitrot: It helps detect it, but does not guarantee that the target number of replicas is brought back up (as it may take years until you read some data again). For that, regular scrubs are needed.
* Filers: For a production store of a highly-available POSIX FUSE mount I need to choose a suitable Filer backend. There's a useful page about these on https://github.com/seaweedfs/seaweedfs/wiki/Filer-Stores. But they are many, and information is limited to ~8 words per backend. To know how a backend will perform, I need to know both the backend well, and also how SeaweedFS will use it. I will also be subject to the workflows of that backend, e.g. running and upgrading a large HA Postgres is unfortunately not easy. As another example, Postgres itself also does not scale beyond a single machine, unless one uses something like Citus, and I have no info on whether SeaweedFS will work with that.
* The word "Upgrades" seems generally un-mentioned in Wiki and README. How are forward and backward compatibility handled? Can I just switch SeaweedFS versions forward and backward and expect everything will automatically work? For Ceph there are usually detailed instructions on how one should upgrade a large cluster and its clients.
In general the way this should be approached is: Pretend to know nothing about SeaweedFS, and imagine what a user that wants to use it in production wants to know, and what their followup questions would be.
Some parts of that are partially answered in the presentations, but it is difficult to piece together how a software currently works from presentations of different ages (maybe they are already outdated?) and the presentations are also quite light on infos (usually only 1 slide per topic). I think the Github Wiki is a good way to do it, but it too, is too light on information and I'm not sure it has everything that's in the presentations.
I understand the README already says "more tools and documentation", I just want to highlight how important the "what does it do and how does it behave" part of documentation is for software like this.
I posted this on https://github.com/seaweedfs/seaweedfs/discussions/5290
This is an old project, I had a quick look and see that I submitted a pull-request back in 2015:
-
Show HN: OpenSign – The open source alternative to DocuSign
> Theoretically they could swap with minio but last time we used it it was not a drop-in replacement yet.
Depends on whether AGPL v3 works for you or not (or whether you decide to pay them), I guess: https://min.io/pricing
I've actually been looking for more open alternatives, but haven't found much.
Zenko CloudServer seemed to be somewhat promising, but doesn't seem to be managed very actively: https://github.com/scality/cloudserver/issues/4986 (their Docker images on DockerHub were last updated 10 months ago, which is what the homepage links to; blog doesn't seem active since 2019, forums don't have much going on, despite some action on GitHub still)
There was also Garage, but that one is also AGPL v3: https://garagehq.deuxfleurs.fr/
The closest I got was discovering that SeaweedFS has an S3 compatible mode: https://github.com/seaweedfs/seaweedfs
- The Tailscale Universal Docker Mod
- Google Cloud Storage FUSE
-
First Homelab as a 19yr old Software Developer
SeaweedFS S3 Gateway for Joplin notes
-
My Experience Self Hosting
Supabase-Storage uses an S3 compatible API and is ultimately just middleware for it. So, the redundancy would be at the storage backend systems. Seems like the majority of s3 compatible selfhosted systems are built for redundancy/high-availability. With only a brief read of docs, and in no particular order: https://garagehq.deuxfleurs.fr/documentation/quick-start/ https://github.com/seaweedfs/seaweedfs CEPH can do it, but at that point you could probably just use the basic local filesystem storage container supabase provides, and out your VMs on CEPH
Go IPFS
-
improving download infra
For me, https://github.com/ipfs/go-ipfs/issues/9044 is the main blocker atm and https://github.com/ipfs/go-ipfs/issues/2167 is still around and annoying.
-
Cheap, reliable way to host free archive of films of solidarity and struggle
I'm using the IPFS fuse mount to load mine into Plex/Jellyfin. It's nice that I can load a movie into a virtual directory on IPFS and my home and remote servers get updated automatically. (when I update my IPNS) So you could run an official solidaritycinema IPNS address that people load into their Plex as a library.
-
Remote Plex server and local Plex Server Sync
Maybe tangentially related, I've been interested in IPFS as a network medium. ( Using the IPFS fuse mount ) Rather than syncing the entire file it syncs the Library list. When the Plex server makes the request for the file, IPFS negotiates the download. It makes it more like Netflix.
-
We Put IPFS in Brave
"Implement bandwidth limiting" https://github.com/ipfs/go-ipfs/issues/3065
Going on six years now. You can use external tools (like "trickle") or your OS knobs.
- Can IPFS be used to share large files with others?
-
Does anyone else believe FIL will make them lot of money
The IPFS project in Github which requires a Github login in order to star a repo has over 20k unique people come by and star the project (https://github.com/ipfs) with language specific bindings for JS (https://github.com/ipfs/js-ipfs), go-ipfs (https://github.com/ipfs/go-ipfs) each of which ALSO have thousands of stars. It's fake!
-
A mostly complete guide to hosting a public IPFS gateway
sh apt install make pkg-config libssl-dev libcrypto++-dev mkdir -p ~/Applications git clone https://github.com/ipfs/go-ipfs.git ~/Applications/ipfs cd ~/Applications/ipfs go get github.com/lucas-clemente/quic-go@go118 GOTAGS=openssl make install
-
Is IPFS Dead?
The blog and go implementation and js implementation are still actively updated. So I wouldn't say it's dead. There are still pain points to be sure, but I'm still excited about this tech.
-
Webamp IPFS media player; sample hash included;)
> IPFS can use any transport protocol (see section 3.2 in the whitepaper [1]),
In theory. In practice, the network (I checked my local node with ~2500 nodes connected to it) is mostly using quic over tcp/udp, more or less 50%/50% split between tcp/udp.
> This busyness is acknowledged by the developers and should be addressed somewhere down the line.
IPFS has been killing routers[https://github.com/ipfs/go-ipfs/issues/3320] and sending/receiving lots of network traffic[https://github.com/ipfs/go-ipfs/issues/2917] since 2016 and there hasn't been any notable improvements on that front yet. When is "down the line" in reality?
-
A few notes on IPNS-Link-Gateways and www.ipns.live
Due to a full go-ipfs node at its core, long running Gateways at small VM (virtual machine)s (with 1GB RAM) might suffer from periodic OOM (Out-Of-Memory) outages. Periodic restarts are enough to get around this. ipns.live currently restarts hourly causing just a few seconds downtime every hour. This memory leak issue will be fixed with future go-ipfs releases or in future implementations of IPNS-Link-Gateway.
What are some alternatives?
minio - The Object Store for AI Data Infrastructure
Ceph - Ceph is a distributed object, block, and file storage platform
Tahoe-LAFS - The Tahoe-LAFS decentralized secure filesystem.
Apache Hadoop - Apache Hadoop
syncthing - Open Source Continuous File Synchronization
GlusterFS - Web Content for gluster.org -- Deprecated as of September 2017
garage - (Mirror) S3-compatible object store for small self-hosted geo-distributed deployments. Main repo: https://git.deuxfleurs.fr/Deuxfleurs/garage
GlusterFS - Gluster Filesystem : Build your distributed storage in minutes
cubefs - cloud-native file store
Seaweed File System - SeaweedFS is a fast distributed storage system for blobs, objects, files, and data lake, for billions of files! Blob store has O(1) disk seek, cloud tiering. Filer supports Cloud Drive, cross-DC active-active replication, Kubernetes, POSIX FUSE mount, S3 API, S3 Gateway, Hadoop, WebDAV, encryption, Erasure Coding. [Moved to: https://github.com/seaweedfs/seaweedfs]