From fcd566e89d88b709529a7399c0de82f2be2c090c Mon Sep 17 00:00:00 2001 From: Quentin Dufour Date: Thu, 18 Mar 2021 11:26:02 +0100 Subject: [PATCH 1/4] Fix a table in the doc --- doc/book/src/getting_started/daemon.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/book/src/getting_started/daemon.md b/doc/book/src/getting_started/daemon.md index 2f2b71b0a..0f45daee8 100644 --- a/doc/book/src/getting_started/daemon.md +++ b/doc/book/src/getting_started/daemon.md @@ -124,8 +124,8 @@ For our example, we will suppose the following infrastructure: |----------|---------|------------|------------| | Paris | Mercury | fc00:1::1 | 1 To | | Paris | Venus | fc00:1::2 | 2 To | -| London | Earth | fc00:1::2 | 2 To | -| Brussels | Mars | fc00:B::1 | 1.5 To | +| London | Earth | fc00:B::1 | 2 To | +| Brussels | Mars | fc00:F::1 | 1.5 To | On each machine, we will have a similar setup, especially you must consider the following folders/files: - `/etc/garage/pki`: Garage certificates, must be generated on your computer and copied on the servers From 2dae4a25d65594d02a1cf2d9802b7514c1e896a6 Mon Sep 17 00:00:00 2001 From: Quentin Dufour Date: Thu, 18 Mar 2021 11:35:50 +0100 Subject: [PATCH 2/4] Fix some typos --- doc/book/src/intro.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/doc/book/src/intro.md b/doc/book/src/intro.md index 02920f837..d041ae8a2 100644 --- a/doc/book/src/intro.md +++ b/doc/book/src/intro.md @@ -5,15 +5,15 @@ Garage is a lightweight geo-distributed data store. It comes from the observation that despite numerous object stores many people have broken data management policies (backup/replication on a single site or none at all). -To promote better data management policies, with focused on the following desirable properties: +To promote better data management policies, we focused on the following desirable properties: - - **Self-contained & lightweight**: works everywhere and integrates well in existing environments to target hyperconverged infrastructures - - **Highly resilient**: highly resilient to network failures, network latency, disk failures, sysadmin failures - - **Simple**: simple to understand, simple to operate, simple to debug + - **Self-contained & lightweight**: works everywhere and integrates well in existing environments to target hyperconverged infrastructures. + - **Highly resilient**: highly resilient to network failures, network latency, disk failures, sysadmin failures. + - **Simple**: simple to understand, simple to operate, simple to debug. - **Internet enabled**: made for multi-sites (eg. datacenter, offices, etc.) interconnected through a regular internet connection. We also noted that the pursuit of some other goals are detrimental to our initial goals. -The following have been identified has non-goals, if it matters to you, you should not use Garage: +The following has been identified has non-goals, if these points matter to you, you should not use Garage: - **Extreme performances**: high performances constrain a lot the design and the infrastructure; we seek performances through minimalism only. - **Feature extensiveness**: complete implementation of the S3 API or any other API to make garage a drop-in replacement is not targeted as it could lead to decisions impacting our desirable properties. @@ -25,7 +25,7 @@ The following have been identified has non-goals, if it matters to you, you shou Garage speaks (or will speak) the following protocols: - [S3](https://docs.aws.amazon.com/AmazonS3/latest/API/Welcome.html) - *SUPPORTED* - Enable applications to store large blobs such as pictures, video, images, documents, etc. S3 is versatile enough to also be used to publish a static website. - - [IMAP](https://github.com/go-pluto/pluto) - *PLANNED* - email storage is quite complex to get good oerformances. + - [IMAP](https://github.com/go-pluto/pluto) - *PLANNED* - email storage is quite complex to get good performances. To keep performances optimals, most imap servers only support on-disk storage. We plan to add logic to Garage to make it a viable solution for email storage. - *More to come* From 3e6534d7a806ba922f315478e4c43862526cf914 Mon Sep 17 00:00:00 2001 From: Quentin Dufour Date: Thu, 18 Mar 2021 11:46:29 +0100 Subject: [PATCH 3/4] Fix garage_util description --- doc/book/src/intro.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/book/src/intro.md b/doc/book/src/intro.md index d041ae8a2..f515c53a4 100644 --- a/doc/book/src/intro.md +++ b/doc/book/src/intro.md @@ -73,7 +73,7 @@ If you encounter a specific bug in Garage or plan to patch it, you may jump dire - [garage\_model](https://docs.rs/garage_model/latest/garage_model/) - contains Garage's model built on the table abstraction - [garage\_rpc](https://docs.rs/garage_rpc/latest/garage_rpc/) - contains Garage's federation protocol - [garage\_table](https://docs.rs/garage_table/latest/garage_table/) - contains core Garage's CRDT datatypes - - [garage\_util](https://docs.rs/garage_util/latest/garage_util/) - contains garage entrypoints (daemon, cli) + - [garage\_util](https://docs.rs/garage_util/latest/garage_util/) - contains garage helpers - [garage\_web](https://docs.rs/garage_web/latest/garage_web/) - contains the S3 website endpoint ### Talks From b119e9d3c42e973092449c25655372bb974e8690 Mon Sep 17 00:00:00 2001 From: LUXEY Adrien Date: Fri, 19 Mar 2021 16:45:21 +0100 Subject: [PATCH 4/4] intro.md: fix some typos, errors & dead links, plus some stylistic stuff MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit modifié : doc/book/src/intro.md --- doc/book/src/intro.md | 53 ++++++++++++++++++++++--------------------- 1 file changed, 27 insertions(+), 26 deletions(-) diff --git a/doc/book/src/intro.md b/doc/book/src/intro.md index f515c53a4..3611d1580 100644 --- a/doc/book/src/intro.md +++ b/doc/book/src/intro.md @@ -5,20 +5,20 @@ Garage is a lightweight geo-distributed data store. It comes from the observation that despite numerous object stores many people have broken data management policies (backup/replication on a single site or none at all). -To promote better data management policies, we focused on the following desirable properties: +To promote better data management policies, we focused on the following **desirable properties**: - - **Self-contained & lightweight**: works everywhere and integrates well in existing environments to target hyperconverged infrastructures. + - **Self-contained & lightweight**: works everywhere and integrates well in existing environments to target [hyperconverged infrastructures](https://en.wikipedia.org/wiki/Hyper-converged_infrastructure). - **Highly resilient**: highly resilient to network failures, network latency, disk failures, sysadmin failures. - **Simple**: simple to understand, simple to operate, simple to debug. - - **Internet enabled**: made for multi-sites (eg. datacenter, offices, etc.) interconnected through a regular internet connection. + - **Internet enabled**: made for multi-sites (eg. datacenters, offices, households, etc.) interconnected through regular Internet connections. We also noted that the pursuit of some other goals are detrimental to our initial goals. -The following has been identified has non-goals, if these points matter to you, you should not use Garage: +The following has been identified has **non-goals** (if these points matter to you, you should not use Garage): - **Extreme performances**: high performances constrain a lot the design and the infrastructure; we seek performances through minimalism only. - **Feature extensiveness**: complete implementation of the S3 API or any other API to make garage a drop-in replacement is not targeted as it could lead to decisions impacting our desirable properties. - **Storage optimizations**: erasure coding or any other coding technique both increase the difficulty of placing data and synchronizing; we limit ourselves to duplication. - - **POSIX/Filesystem compatibility**: we do not aim at being POSIX compatible or to emulate any kind of filesystem. Indeed, in a distributed environment, such syncronizations are translated in network messages that impose severe constraints on the deployment. + - **POSIX/Filesystem compatibility**: we do not aim at being POSIX compatible or to emulate any kind of filesystem. Indeed, in a distributed environment, such synchronizations are translated in network messages that impose severe constraints on the deployment. ## Supported and planned protocols @@ -26,37 +26,38 @@ Garage speaks (or will speak) the following protocols: - [S3](https://docs.aws.amazon.com/AmazonS3/latest/API/Welcome.html) - *SUPPORTED* - Enable applications to store large blobs such as pictures, video, images, documents, etc. S3 is versatile enough to also be used to publish a static website. - [IMAP](https://github.com/go-pluto/pluto) - *PLANNED* - email storage is quite complex to get good performances. -To keep performances optimals, most imap servers only support on-disk storage. +To keep performances optimal, most IMAP servers only support on-disk storage. We plan to add logic to Garage to make it a viable solution for email storage. - *More to come* ## Use Cases **[Deuxfleurs](https://deuxfleurs.fr) :** Garage is used by Deuxfleurs which is a non-profit hosting organization. -Especially, it is used to host their main website, this documentation and some of its members's blogs. Additionally, -Garage is used as a [backend for Nextcloud](https://docs.nextcloud.com/server/20/admin_manual/configuration_files/primary_storage.html). Deuxfleurs also plans to use Garage as their [Matrix's media backend](https://github.com/matrix-org/synapse-s3-storage-provider) and has the backend of [OCIS](https://github.com/owncloud/ocis). +Especially, it is used to host their main website, this documentation and some of its members' blogs. +Additionally, Garage is used as a [backend for Nextcloud](https://docs.nextcloud.com/server/20/admin_manual/configuration_files/primary_storage.html). +Deuxfleurs also plans to use Garage as their [Matrix's media backend](https://github.com/matrix-org/synapse-s3-storage-provider) and as the backend of [OCIS](https://github.com/owncloud/ocis). *Are you using Garage? [Open a pull request](https://git.deuxfleurs.fr/Deuxfleurs/garage/) to add your organization here!* ## Comparison to existing software -**[Minio](https://min.io/) :** Minio shares our *self-contained & lightweight* goal but selected two of our non-goals: *storage optimizations* through erasure coding and *POSIX/Filesystem compatibility* through strong consistency. -However, by pursuing these two non-goals, minio do not reach our desirable properties. -First, it fails on the *simple* property: due to the erasure coding, minio has severe limitations on how drives can be added or deleted from a cluster. -Second, it fails on the *interned enabled* property: due to its strong consistency, minio is latency sensitive. -Furthermore, minio has no knowledge of "sites" and thus can not distribute data to minimize the failure of a given site. +**[MinIO](https://min.io/):** MinIO shares our *Self-contained & lightweight* goal but selected two of our non-goals: *Storage optimizations* through erasure coding and *POSIX/Filesystem compatibility* through strong consistency. +However, by pursuing these two non-goals, MinIO do not reach our desirable properties. +Firstly, it fails on the *Simple* property: due to the erasure coding, MinIO has severe limitations on how drives can be added or deleted from a cluster. +Secondly, it fails on the *Internet enabled* property: due to its strong consistency, MinIO is latency sensitive. +Furthermore, MinIO has no knowledge of "sites" and thus can not distribute data to minimize the failure of a given site. -**[Openstack Swift](https://docs.openstack.org/swift/latest/) :** -OpenStack Swift at least fails on the *self-contained & lightweight* goal. -Starting it requires around 8Gb of RAM, which is too much especially in an hyperconverged infrastructure. -It seems also to be far from *Simple*. +**[Openstack Swift](https://docs.openstack.org/swift/latest/):** +OpenStack Swift at least fails on the *Self-contained & lightweight* goal. +Starting it requires around 8GB of RAM, which is too much especially in an hyperconverged infrastructure. +We also do not classify Swift as *Simple*. -**[Ceph](https://ceph.io/ceph-storage/object-storage/) :** +**[Ceph](https://ceph.io/ceph-storage/object-storage/):** This review holds for the whole Ceph stack, including the RADOS paper, Ceph Object Storage module, the RADOS Gateway, etc. -At is core, Ceph has been designed to provide *POSIX/Filesystem compatibility* which requires strong consistency, which in turn -makes Ceph latency sensitive and fails our *Internet enabled* goal. -Due to its industry oriented design, Ceph is also far from being *Simple* to operate and from being *self-contained & lightweight* which makes it hard to integrate it in an hyperconverged infrastructure. -In a certain way, Ceph and Minio are closer togethers than they are from Garage or OpenStack Swift. +At its core, Ceph has been designed to provide *POSIX/Filesystem compatibility* which requires strong consistency, which in turn +makes Ceph latency-sensitive and fails our *Internet enabled* goal. +Due to its industry oriented design, Ceph is also far from being *Simple* to operate and from being *Self-contained & lightweight* which makes it hard to integrate it in an hyperconverged infrastructure. +In a certain way, Ceph and MinIO are closer together than they are from Garage or OpenStack Swift. *More comparisons are available in our [Related Work](design/related_work.md) chapter.* @@ -67,7 +68,7 @@ We reference here other places on the Internet where you can learn more about Ga ### Rust API (docs.rs) -If you encounter a specific bug in Garage or plan to patch it, you may jump directly to the source code documentation! +If you encounter a specific bug in Garage or plan to patch it, you may jump directly to the source code's documentation! - [garage\_api](https://docs.rs/garage_api/latest/garage_api/) - contains the S3 standard API endpoint - [garage\_model](https://docs.rs/garage_model/latest/garage_model/) - contains Garage's model built on the table abstraction @@ -80,16 +81,16 @@ If you encounter a specific bug in Garage or plan to patch it, you may jump dire We love to talk and hear about Garage, that's why we keep a log here: - - [(fr, 2020-12-02) Garage : jouer dans la cour des grands quand on est un hébergeur associatif](https://git.deuxfleurs.fr/Deuxfleurs/garage/src/branch/master/doc/20201202_talk/talk.pdf) + - [(fr, 2020-12-02) Garage : jouer dans la cour des grands quand on est un hébergeur associatif](https://git.deuxfleurs.fr/Deuxfleurs/garage/src/branch/main/doc/20201202_talk/talk.pdf) *Did you write or talk about Garage? [Open a pull request](https://git.deuxfleurs.fr/Deuxfleurs/garage/) to add a link here!* ## Community If you want to discuss with us, you can join our Matrix channel at [#garage:deuxfleurs.fr](https://matrix.to/#/#garage:deuxfleurs.fr). -Our code and our issue tracker, which is the place where you should report bugs, are managed on [Deuxfleurs' Gitea](https://git.deuxfleurs.fr/Deuxfleurs/garage). +Our code repository and issue tracker, which is the place where you should report bugs, is managed on [Deuxfleurs' Gitea](https://git.deuxfleurs.fr/Deuxfleurs/garage). ## License -Garage, all the source code, is released under the [AGPL v3 License](https://www.gnu.org/licenses/agpl-3.0.en.html). +Garage's source code, is released under the [AGPL v3 License](https://www.gnu.org/licenses/agpl-3.0.en.html). Please note that if you patch Garage and then use it to provide any service over a network, you must share your code!