Garage - un stockage d’objets S3 hautement fiable, utilisable même hors des datacenters
(garagehq.deuxfleurs.fr)- Garage est un stockage d’objets compatible S3 capable de fonctionner de manière fiable même en dehors d’un environnement de datacenter
- Fourni sous la forme d’un binaire autonome sans dépendances, il peut être exécuté facilement sur toutes les distributions Linux
- Les données sont répliquées sur 3 zones (zones) afin d’assurer une forte redondance et tolérance aux pannes
- Il implémente l’API Amazon S3, ce qui le rend compatible avec diverses applications comme Nextcloud, Matrix et Mastodon
- Grâce à de faibles exigences matérielles et à une conception fondée sur la recherche publique, il élargit l’accès aux systèmes distribués
Aperçu
- Garage est un stockage d’objets S3 pouvant être exploité de façon fiable en dehors des datacenters, et peut être déployé sur plusieurs datacenters via Internet
- Il peut servir à différents usages, notamment l’hébergement de sites web, le stockage de médias et comme cible de sauvegarde
Objectifs de conception
- Un système conçu avec un fort accent sur la légèreté et l’efficacité
- Distribué sous la forme d’un exécutable autonome sans dépendances, il fonctionne sur toutes les distributions Linux
- Conçu pour les administrateurs système afin de permettre un déploiement rapide et une exploitation sûre
- Pensé pour être déployable dans tous les environnements, y compris entre plusieurs datacenters sur Internet sans réseau backbone dédié
- Offre une grande résilience face aux pannes réseau, à la latence, aux erreurs disque et aux erreurs humaines d’exploitation
Exigences minimales
- CPU : x86_64, ARMv7 ou ARMv8 datant des 10 dernières années
- RAM : 1 Go
- Espace disque : minimum 16 Go
- Réseau : latence inférieure ou égale à 200 ms, bande passante d’au moins 50 Mbps
- La prise en charge du matériel hétérogène permet de constituer un cluster à partir d’équipements d’occasion
Résilience des données et compatibilité
- Chaque fragment de données (
chunk) est stocké avec une réplication sur 3 zones - Il implémente l’API Amazon S3, assurant une compatibilité immédiate avec les applications existantes
- Exemples pris en charge : Nextcloud, Matrix, Cyberduck, Mastodon, Rclone, PeerTube
Fondements techniques
- Garage est conçu sur la base des avancées récentes de la recherche sur les systèmes distribués
- Le stockage clé-valeur Dynamo d’Amazon
- Les Conflict-Free Replicated Data Types (CRDTs)
- Le répartiteur de charge réseau logiciel Maglev
Sponsoring et financement
- Le projet Garage a bénéficié à plusieurs reprises de financements publics
- 2021–2022 : NGI POINTER – financement d’1 an pour 3 employés à temps plein
- 2023–2024 : NLnet / NGI0 Entrust – financement d’1 an pour 1 employé à temps plein
- 2025 : NLnet / NGI0 Commons Fund – financement d’1 an pour 1,5 employé à temps plein
- Il bénéficie d’un soutien financier du programme européen de recherche et d’innovation Horizon 2021 ainsi que du programme Next Generation Internet
- Il est possible de participer via un sponsoring supplémentaire ou un contrat de support (contact : garagehq@deuxfleurs.fr)
1 commentaires
Réactions sur Hacker News
J’ai récemment testé Garage de manière assez approfondie en interne
Le déploiement était un peu plus simple que celui de MinIO, mais les performances élevées étaient en retrait
Dans un environnement avec NIC 25G, MinIO montait à 20~25 Gbps, tandis que Garage semblait plafonner autour de 5 Gbps
J’ai l’impression que Garage ne vise pas ce type de cas d’usage à très haute performance
La prochaine fois, je compte aussi évaluer RustFS et Ceph/Rook
Vu l’orientation récente de MinIO, j’aurai probablement besoin de chercher d’autres alternatives
Sa philosophie est la suivante : « les hautes performances imposent des contraintes sur la conception et l’infrastructure ; nous recherchons donc la performance par le minimalisme »
(document Design Goals)
Cela dit, il serait intéressant de comprendre où se situent exactement les goulets d’étranglement. Il est possible que le parallélisme soit moindre que dans MinIO
La complexité est très élevée, et sans une bonne maîtrise, la récupération devient difficile quand le cluster tombe en panne
Le projet semble intéressant pour du développement local
Mais en lisant le guide de configuration pour la production, ça fait un peu peur
Garage recommande des systèmes de fichiers comme BTRFS ou ZFS, car il n’effectue pas lui-même de checksum ni de vérification d’intégrité lors du stockage des métadonnées
Le moteur LMDB par défaut présente un risque de corruption des données après un arrêt anormal, ce qui impose des snapshots réguliers
SQLite est aussi possible, mais j’ai été surpris que la base par défaut soit vulnérable aux coupures de courant
Il serait intégré à Garage immédiatement
Le minimum requis de 1 Go de RAM pour Garage m’a paru un peu contraignant
Il est recommandé d’utiliser des SSD NVMe avec PLP (protection contre les pertes d’alimentation) ou un UPS
Depuis l’affaire MinIO, je vois une forte hausse de l’adoption de Garage
Le billet comparatif de benchmarks de Repoflow était utile
RustFS semblait aussi intéressant, mais je l’ai écarté pour des raisons non techniques
Si vous avez des conseils pour remplacer MinIO, je suis preneur
Voir le lien GitHub
Je serais aussi curieux d’avoir une comparaison avec Ceph S3 Gateway
Le site officiel de Deuxfleurs a le plus beau design que j’aie vu jusqu’à présent
J’utilise Garage pour le développement local et les tests
Avec s5cmd, je peux injecter 15 Go et plus de 60 000 objets en moins de 60 secondes
En Docker, la réplication d’un environnement de staging avec API, DB, cache et conteneurs d’objets se termine en moins de 2 minutes
La configuration est très simple et fonctionne de manière stable
Avant, j’utilisais LocalStack S3, mais le manque de persistance était un problème, et MinIO OSS n’est plus maintenu
J’ai aussi examiné SeaweedFS et RustFS, mais Garage était le plus simple à mettre en place
Garage m’a beaucoup impressionné dans le code de test et les benchmarks
Le déploiement est simple grâce au binaire unique, et la documentation est bonne
Mais l’absence de prise en charge des tags d’objets était vraiment regrettable
Dans l’univers des API cloud, les tags sont une fonctionnalité de base, donc j’aimerais voir ce point amélioré
J’aime vraiment Garage
C’est utile non seulement comme alternative simple à S3, mais aussi dans des architectures hyperconvergées
Le fait de lire d’abord les données depuis la machine locale, puis de n’utiliser le réseau qu’en cas de besoin, est très élégant
L’absence d’erasure coding est une perte importante en matière de tolérance aux pannes et d’efficacité
Ma principale préoccupation concernait la manière dont la récupération se ferait en cas de panne matérielle
Garage s’est révélé utile dans des scripts de data engineering
Comme la plupart des outils prennent en charge l’intégration S3, il est facile d’envoyer les données dans Garage puis de monter en charge plus tard vers le cloud
J’ai récemment testé Garage
Après avoir téléversé puis tenté de supprimer environ 300 documents (1 Go), le service S3 a planté dans le conteneur et j’ai dû le redémarrer
C’est un projet intéressant, mais d’après mon expérience, la fiabilité reste encore insuffisante