Files
rustfs/rustfs
Chris 36227adc96 fix(io-metrics): drop the rustfs-common edge by injecting the S3 telemetry observer (#7795)
* fix(io-metrics): drop the rustfs-common edge by injecting the S3 telemetry observer

dc700d366 (#7775) made the io-metrics leaf crate depend on rustfs-common
to publish typed telemetry trace events from S3HttpRequestGuard, which
breaks the backlog#1834 leaf-crate rule (io-metrics may only depend on
rustfs-s3-ops).

S3HttpRequestGuard now takes an optional fn-pointer completion observer
(operation, latency, 2xx?) and knows nothing about the trace bus. The
server builds guards through rustfs::server::s3_http_request_guard, which
attaches the observer only while a telemetry subscriber exists and owns
the S3Operation -> TelemetryTraceOperation mapping.

* chore(guard): admit #7785 s3s ratchet growth (+1 file, +4 lines)

#7785 landed the gateway key inventory admin handler after the
baselines were verified, leaving check_s3s_footprint.sh red on main
and every branch cut from it (measured 210 files / 1592 lines vs
209/1588 baselines).

The handler follows the house admin convention whose Operation::call
signature is s3s-typed (S3Request/S3Result), so it cannot route
through a non-s3s seam until the s3gate admin migration replaces the
admin router (rustfs/backlog#1677 F1); no local refactor can shed the
file-level import. Record the measured growth with rationale:
files 209 -> 210, s3_error! lines 1588 -> 1592.

* fix

* fix: resolve clippy gate failures in connect and CLI surfaces

- Box the two large CommandResult performance variants and
  LicenseRenewalOutcome::Installed (clippy::large_enum_variant)
- Return RelayError instead of () from RelayTransport::deliver and the
  test destination (clippy::result_unit_err)
- Drop an unused mut on the protected relay file handle (unused_mut)
- Pass the digest by value to base64 encoding and drop a redundant
  result_json clone (clippy::needless_borrows_for_generic_args,
  clippy::redundant_clone)

* fix(connect): resolve the remaining site-replication clippy errors

- Group the endpoint credential triple into SiteReplicationCredentials
  so SiteReplicationEndpoint::new takes 6 arguments
  (clippy::too_many_arguments)
- Take the build-feature validator by &str (clippy::ptr_arg); the
  validator closure stays because &String needs the deref coercion

* style: apply rustfmt to the site-replication credential grouping

* fix(connect): keep the CPU profile fixture off the ecstore import scan

#7811 used "rustfs_ecstore::disk::read_object" as the raw-symbol fixture
of the profile redaction test, which the architecture guard counts as a
direct rustfs_ecstore reference outside the compatibility boundaries
(its scan deliberately includes inline test modules). The accumulator
treats symbols opaquely, so use the internal rustfs::storage:: path that
keeps the fixture realistic without matching the import scanner.

* fix

* fix

* fix

* fix

---------

Co-authored-by: Hauser <housemecn@gmail.com>
2026-09-14 10:23:52 +00:00
..
2025-05-29 06:53:11 +00:00

RustFS

RustFS is a high-performance distributed object storage software built using Rust

CI Build and Push Docker Images GitHub commit activity Github Last Commit

Getting Started · Docs · Bug reports · Discussions

English | Simplified Chinese

RustFS is a high-performance distributed object storage software built using Rust, one of the most popular languages worldwide. Along with MinIO, it shares a range of advantages such as simplicity, broad S3 API compatibility for supported features, open-source nature, support for data lakes, AI, and big data. Furthermore, it has a better and more user-friendly open-source license in comparison to other storage systems, being constructed under the Apache license. As Rust serves as its foundation, RustFS provides faster speed and safer distributed features for high-performance object storage.

Features

  • High Performance: Built with Rust, ensuring speed and efficiency.
  • Distributed Architecture: Scalable and fault-tolerant design for large-scale deployments.
  • S3 Compatibility: Integration with common S3-compatible applications; current coverage is tracked in the S3 compatibility matrix.
  • Data Lake Support: Optimized for big data and AI workloads.
  • Open Source: Licensed under Apache 2.0, encouraging community contributions and transparency.
  • User-Friendly: Designed with simplicity in mind, making it easy to deploy and manage.

RustFS vs MinIO

Stress test server parameters

Type parameter Remark
CPU 2 Core Intel Xeon(Sapphire Rapids) Platinum 8475B , 2.7/3.2 GHz
Memory 4GB  
Network 15Gbp  
Driver 40GB x 4 IOPS 3800 / Driver

https://github.com/user-attachments/assets/2e4979b5-260c-4f2c-ac12-c87fd558072a

RustFS vs Other object storage

RustFS Other object storage
Powerful Console Simple and useless Console
Developed based on Rust language, memory is safer Developed in Go or C, with potential issues like memory GC/leaks
Does not report logs to third-party countries Reporting logs to other third countries may violate national security laws
Licensed under Apache, more business-friendly AGPL V3 License and other License, polluted open source and License traps, infringement of intellectual property rights
S3-compatible core, with coverage tracked in the compatibility matrix Variable S3 support and local cloud vendor coverage
Rust-based development, strong support for secure and innovative devices Poor support for edge gateways and secure innovative devices
Stable commercial prices, free community support High pricing, with costs up to $250,000 for 1PiB
No risk Intellectual property risks and risks of prohibited uses

Quickstart

To get started with RustFS, follow these steps:

  1. One-click installation script (Option 1)

    curl -O  https://rustfs.com/install_rustfs.sh && bash install_rustfs.sh
    
  2. Docker Quick Start (Option 2)

 # Docker Hub (recommended)
 docker run -d -p 9000:9000 -v /data:/data rustfs/rustfs:latest

 # Alternative using Podman
 podman run -d -p 9000:9000 -v /data:/data rustfs/rustfs:latest
  1. Access the Console: Open your web browser and navigate to http://localhost:9001 to access the RustFS console, default username and password is rustfsadmin .
  2. Create a Bucket: Use the console to create a new bucket for your objects.
  3. Upload Objects: You can upload files directly through the console or use S3-compatible APIs to interact with your RustFS instance.

Documentation

For detailed documentation, including configuration options, API references, and advanced usage, please visit our Documentation.

Getting Help

If you have any questions or need assistance, you can:

  • Check the FAQ for common issues and solutions.
  • Join our GitHub Discussions to ask questions and share your experiences.
  • Open an issue on our GitHub Issues page for bug reports or feature requests.

Contact

Contributors

RustFS is a community-driven project, and we appreciate all contributions. Check out the Contributors page to see the amazing people who have helped make RustFS better.

License

Apache 2.0

RustFS is a trademark of RustFS, Inc. All other trademarks are the property of their respective owners.