- Garage là một kho lưu trữ đối tượng tương thích S3 có thể hoạt động ổn định ngay cả trong môi trường ngoài trung tâm dữ liệu
- Được cung cấp dưới dạng binary độc lập không phụ thuộc nên có thể dễ dàng chạy trên mọi bản phân phối Linux
- Dữ liệu được sao chép trên 3 zone để đảm bảo mức độ dư thừa và khả năng chịu lỗi cao
- Triển khai Amazon S3 API, tương thích với nhiều ứng dụng như Nextcloud, Matrix, Mastodon
- Yêu cầu phần cứng thấp và thiết kế dựa trên nghiên cứu công khai giúp mở rộng khả năng tiếp cận các hệ thống phân tán
Tổng quan
- Garage là kho lưu trữ đối tượng S3 có thể vận hành ổn định cả bên ngoài trung tâm dữ liệu, có thể chạy trên nhiều trung tâm dữ liệu thông qua Internet
- Có thể dùng cho nhiều mục đích như lưu trữ website, lưu trữ media, đích sao lưu
Mục tiêu thiết kế
- Hệ thống được phát triển với trọng tâm là tính gọn nhẹ và hiệu quả
- Được phân phối dưới dạng tệp thực thi độc lập không phụ thuộc, hoạt động trên mọi bản phân phối Linux
- Được thiết kế thân thiện với quản trị viên hệ thống để triển khai nhanh và vận hành an toàn
- Được thiết kế để có thể triển khai trong mọi môi trường, nên có thể vận hành giữa nhiều trung tâm dữ liệu trên Internet ngay cả khi không có mạng backbone chuyên dụng
- Đảm bảo khả năng phục hồi cao để chịu được sự cố mạng, độ trễ, lỗi đĩa, sai sót của người vận hành
Yêu cầu tối thiểu
- CPU: x86_64, ARMv7 hoặc ARMv8 trong vòng 10 năm gần đây
- RAM: 1GB
- Dung lượng đĩa: tối thiểu 16GB
- Mạng: độ trễ dưới 200ms, băng thông từ 50Mbps trở lên
- Hỗ trợ phần cứng không đồng nhất, cho phép xây dựng cụm bằng thiết bị đã qua sử dụng
Khả năng phục hồi dữ liệu và tính tương thích
- Mỗi mảnh dữ liệu (chunk) được lưu bằng cách sao chép trên 3 zone
- Triển khai Amazon S3 API, tương thích ngay với các ứng dụng hiện có
- Ví dụ được hỗ trợ: Nextcloud, Matrix, Cyberduck, Mastodon, Rclone, PeerTube
Nền tảng kỹ thuật
- Garage được thiết kế dựa trên các thành tựu nghiên cứu hệ thống phân tán hiện đại
- Kho lưu trữ key-value Dynamo của Amazon
- Conflict-Free Replicated Data Types (CRDTs)
- Bộ cân bằng tải mạng phần mềm Maglev
Tài trợ và hỗ trợ vốn
- Dự án Garage đã nhiều lần nhận được nguồn tài trợ công
- 2021–2022: NGI POINTER – hỗ trợ 3 nhân sự toàn thời gian trong 1 năm
- 2023–2024: NLnet / NGI0 Entrust – hỗ trợ 1 nhân sự toàn thời gian trong 1 năm
- 2025: NLnet / NGI0 Commons Fund – hỗ trợ tương đương 1,5 nhân sự toàn thời gian trong 1 năm
- Nhận hỗ trợ tài chính từ chương trình nghiên cứu và đổi mới sáng tạo Horizon 2021 của Liên minh châu Âu và chương trình Next Generation Internet
- Có thể tham gia thông qua tài trợ bổ sung hoặc hợp đồng hỗ trợ (liên hệ: garagehq@deuxfleurs.fr)
1 bình luận
Ý kiến trên Hacker News
Gần đây đã kiểm chứng Garage khá rộng rãi trong các bài test nội bộ
Việc triển khai đơn giản hơn một chút so với MinIO, nhưng kém hơn về hiệu năng tốc độ cao
Trong môi trường NIC 25G, MinIO đạt 20~25Gbps nhưng Garage bị giới hạn ở khoảng 5Gbps
Có cảm giác Garage không nhắm đến các trường hợp sử dụng hiệu năng cao kiểu này
Lần tới dự định sẽ xem xét thêm cả RustFS và Ceph/Rook
Có vẻ cuối cùng vẫn phải tìm phương án thay thế khác vì hướng đi gần đây của MinIO
Triết lý của họ là: “Hiệu năng cao sẽ ràng buộc thiết kế và hạ tầng, nên chúng tôi theo đuổi hiệu năng thông qua chủ nghĩa tối giản”
(tài liệu Design Goals)
Tuy vậy, điểm nghẽn hiệu năng nằm ở đâu vẫn là điều thú vị. Có thể mức độ xử lý song song ít hơn MinIO
Độ phức tạp rất cao, nên nếu không thực sự hiểu nó thì sẽ khó khôi phục khi cluster gặp sự cố
Có vẻ là một dự án thú vị cho mục đích phát triển cục bộ
Nhưng khi xem hướng dẫn cấu hình production thì hơi thấy ngại
Garage khuyến nghị dùng hệ thống tệp như BTRFS hoặc ZFS vì khi lưu metadata, nó không tự thực hiện checksum và kiểm tra toàn vẹn
Engine LMDB mặc định có nguy cơ hỏng dữ liệu khi tắt bất thường, nên cần chụp snapshot định kỳ
Cũng có thể dùng SQLite, nhưng khá bất ngờ khi DB mặc định lại dễ bị ảnh hưởng bởi sự cố mất điện
Họ nói sẽ tích hợp ngay vào Garage
Yêu cầu tối thiểu RAM 1GB của Garage có phần hơi nặng
Khuyến nghị dùng ổ NVMe có PLP (bảo vệ mất điện) hoặc UPS
Đang thấy việc chấp nhận Garage tăng mạnh sau vụ MinIO
Bài viết so sánh benchmark của Repoflow khá hữu ích
RustFS cũng thú vị, nhưng đã loại bỏ vì lý do phi kỹ thuật
Nếu có mẹo nào khi thay thế MinIO thì rất muốn nghe
Xem liên kết GitHub
Cũng tò mò muốn biết nó so với Ceph S3 Gateway thế nào
Trang chính thức của Deuxfleurs là website có thiết kế đẹp nhất mà tôi từng thấy
Đang dùng Garage cho phát triển cục bộ và kiểm thử
Kết hợp với s5cmd, có thể seed 15GB và hơn 60 nghìn object trong vòng chưa tới 60 giây
Việc sao chép môi trường staging gồm API, DB, cache và container object bằng Docker hoàn tất trong chưa tới 2 phút
Cấu hình rất đơn giản và chạy ổn định
Trước đây từng dùng LocalStack S3, nhưng vấn đề là thiếu tính bền vững dữ liệu, còn MinIO OSS thì đã ngừng được bảo trì
Cũng đã xem SeaweedFS và RustFS, nhưng Garage là phương án dễ dùng nhất
Garage rất ấn tượng trong test code và benchmark
Việc triển khai đơn giản nhờ chỉ có một file thực thi, tài liệu cũng rất tốt
Nhưng việc thiếu tính năng object tagging là một thiếu sót lớn
Trong thế giới cloud API, tag là tính năng cơ bản, nên mong điểm này sẽ được cải thiện
Rất thích Garage
Nó không chỉ là một lựa chọn thay thế S3 đơn thuần, mà còn hữu ích trong kiến trúc hyper-converged
Cách nó ưu tiên đọc dữ liệu từ máy cục bộ và chỉ dùng mạng khi cần là một cấu trúc rất hay
Việc không có erasure coding là một thiệt thòi lớn về khả năng chịu lỗi và hiệu quả
Mối bận tâm lớn là nó sẽ phục hồi thế nào khi phần cứng gặp sự cố
Garage tỏ ra hữu ích trong các script data engineering
Vì đa số công cụ đều hỗ trợ tích hợp S3, nên có thể đổ dữ liệu vào Garage rồi dễ dàng mở rộng lên cloud sau này
Gần đây đã thử Garage
Sau khi upload khoảng 300 tài liệu (1GB) rồi cố xóa, dịch vụ S3 đã crash trong container và phải khởi động lại
Đây là một dự án rất hay, nhưng theo trải nghiệm của tôi thì độ tin cậy vẫn còn thiếu