Skip to content

Releases: bidzhao/storefs

Release v0.3.8

Choose a tag to compare

@bidzhao bidzhao released this 05 Jul 02:06
  1. Provides a comprehensive monitoring and alerting system based on the Prometheus + Grafana + Alertmanager stack.

Key Features

  • Metrics Collection: Each StoreFS node exposes a /metrics endpoint with system-level metrics (CPU, memory, disk, network), operation counters (object upload/download, multipart, fragment), and Go runtime metrics.
  • Hot Bucket Detection: Real-time top-K hot bucket tracking using a sliding window algorithm (2-minute window), covering uploads, downloads, upload parts, and multipart completes.
  • Pre-built Grafana Dashboards: Two pre-configured dashboards are included — a single-node detailed view and a cluster-wide summary view.
  • **Alert Rules**: Pre-defined Prometheus alert rules for node down, disk usage, CPU/memory thresholds, and goroutine count.
  • Notification Channels: Alertmanager configuration with templates for Slack, Email, and Webhook notifications (all disabled by default — easy to enable).
  1. Provides an MCP (Model Context Protocol) server that enables AI assistants — primarily Claude Code — to manage the cluster through natural language. Instead of remembering API endpoints and request formats, you can simply describe what you want to do.

Key Features

  • Natural Language Management: Manage users, groups, buckets, policies, and objects by chatting with the AI
  • 40+ Tools: Six groups of tools covering cluster management, user administration, storage policies, bucket operations, object management, and S3 data operations
  • Automatic Language Detection: Responses auto-switch between English and Chinese based on your input
  • Secure Authentication: Bearer token for admin operations, AWS Signature V4 for S3 data operations
  • File Operations: Upload, download, and copy files directly through natural language commands

Release v0.3.6

Choose a tag to compare

@bidzhao bidzhao released this 28 Jun 15:02

New Features

  1. Server-Side Encryption (SSE) Support
  • SSE-C: Supply your own AES-256 encryption key via request headers for PutObject, GetObject, HeadObject, and Multipart Upload
  • SSE-S3 (bucket-Level Encryption): Enable encryption at the bucket level — data is automatically encrypted/decrypted server-side
  • Encryption is transparent on read; encrypted data is decrypted before being returned
  1. Gzip Compression Support for PutObject and Multipart Upload
  • Server now accepts gzip-compressed request bodies via Content-Encoding: gzip header for PutObject and UploadPart requests
  • Supports both fixed-length and chunked transfer encoding with gzip
  • Compatible with RDMA transport — gzip-compressed payloads over RDMA are decompressed automatically
  1. s3file CLI Improvements
  • Ctrl+C cancellation: In-flight S3 API calls now abort gracefully when pressing Ctrl+C, with proper cancellation messages
  • Interactive mode enhancements: Revamped navigation, UI, and object browsing experience
  • S3FS mode: New interactive filesystem-like interface for browsing and manipulating objects
  • Silent command mode: Optimized output for non-interactive script usage

Improvements

  1. S3 Signature Verification Enhanced
  • region and service are now parsed from the Authorization header's Credential field, enabling cross-region request support
  1. Public Bucket Access Fix
  • Fixed a regression where normal S3 GetObject requests to public buckets would fail due to an incorrectly set publicAccess attribute
  1. Multipart Upload Improvements
  • CompleteMultipartUpload now returns the actual CRC-based ETag instead of the upload ID
  • ETag consistency enforced across upload parts for SSE-C — the same key must be used for all parts and completion
  1. Input Validation
  • Bucket names now strictly enforce S3 naming conventions (length 3–63, lowercase only, IP address exclusion, reserved prefix checks)
  • Object keys validated for length (max 1024 bytes), UTF-8 validity, and control character rejection
  • Usernames validated for length, reserved words, and allowed character patterns
  1. Better Error Responses
  • Invalid bucket creation date now returns a proper HTTP 500 instead of a server panic
  • NoSuchUpload returns proper XML-formatted error responses for ListParts
  1. ListObjects Pagination Fix
  • Fixed nextMarker / nextContinuationToken logic for delimited listing (ListObjectsV1/V2) to correctly indicate truncation
  1. Potential Bug Fix
  • Fixed 50+ potential issues reported by AI code review.

Web Admin Console

  • Bucket management: Added encryption toggle in create/edit forms and list view
  • Object list: Major UI overhaul with improved navigation and display
  • User management: Enhanced password change, profile, and access key management pages

Upgrade Notes

  • Schema migration required: New columns added to buckets, object_md, object_v_md, and multipart_uploads tables
  • SSE-C follows the standard S3 protocol — no special SDK required on the client side

Release v0.3.5

Choose a tag to compare

@bidzhao bidzhao released this 19 Jun 15:10

Significantly improved metadata access performance by DB index tuning.
[Regression] Fixed normal S3 requests failure by not setting publicAccess attribute properly.

Release v0.3.4

Choose a tag to compare

@bidzhao bidzhao released this 14 Jun 02:17

New features:

New features:

  1. Group for user management. Now we have 3 roles for users: user, group_admin, super_admin.
  2. S3 multipart upload over RDMA.
  3. S3 public URL.

With minor bug fixes and GUI adjustment.

Note: There are table schema changes in this release.

Release v0.3.1

Choose a tag to compare

@bidzhao bidzhao released this 11 Jun 06:17

New feature: S3 Put/Get over RDMA (For Linux only).

v0.3.0

Choose a tag to compare

@bidzhao bidzhao released this 02 Jun 11:10

Release Notes

Major New Features

1. Object Versioning

  • S3 API Enhancements:

    • PUT Bucket versioning: Enable/suspend bucket versioning
    • GET Bucket versioning: Get bucket versioning status
    • GET Bucket versions: List all versions of objects
    • DELETE Object with versionId: Delete specific object version
    • GET/HEAD Object with versionId: Retrieve specific object version
  • Versioning State Transitions:

    • UnversionedEnabled: Enable versioning
    • EnabledSuspended: Toggle between enabled and suspended states
    • Once enabled, cannot return to completely unversioned state
  • Delete Markers:

    • When versioning is enabled, deleting an object creates a delete marker
    • Delete marker becomes the latest version of the object
    • Specific versions can be permanently deleted by version ID

2. Object Lock

  • Object Lock Configuration:

    • Enable object lock at bucket creation
    • Support COMPLIANCE and GOVERNANCE lock modes
    • Configurable default retention period (Retention Days)
    • Object lock state cannot be disabled or turned off once created
  • S3 API Enhancements:

    • GET Object Lock Configuration: Get bucket's object lock configuration
    • GET Object retention: Get object's retention configuration
    • x-amz-object-lock-mode: Set object lock mode
    • x-amz-object-lock-retain-until-date: Set retention expiration
    • x-amz-bypass-governance-retention: Bypass governance retention (requires permission)
  • User Permissions:

    • New user field bypass to indicate if user can bypass governance retention
    • Administrators can set user bypass permission

3. Admin API Enhancements

  • Bucket Management:

    • Bucket list shows versioning and object lock status
    • Configure versioning and object lock when creating buckets
    • Adjust versioning state when editing buckets (Enabled ↔ Suspended)
    • Modify lock mode and retention period when editing buckets (only if object lock is enabled)
  • Object Management:

    • Support displaying object version information
    • View and manage object lock status

4. Admin Console (Web UI) Enhancements

  • Bucket Form:

    • Enable versioning when creating buckets
    • Enable object lock and configure lock mode/retention when creating buckets
    • Enabling object lock automatically enables versioning
    • Versioning state can be toggled between Enabled ↔ Suspended when editing
    • Object lock status is read-only after creation
  • Object List:

    • Display object version information
    • Support version management operations

5. Database Schema Updates

  • buckets table:

    • New versioning field (default: 'unversioned')
    • New is_locked field (default: false)
    • New lock_mode field (default: 'COMPLIANCE')
    • New retention field (default: 30)
    • New last_update_at field
  • object_md table:

    • New has_versions field
    • New lock_mode field
    • New expiration_time field
  • object_v_md table (new):

    • Stores object version metadata
    • Includes version number, delete marker, lock information, etc.
  • users table:

    • New bypass field (default: false)
  • multipart_uploads table:

    • New lock_mode field
    • New expiration_time field

6. CLI Enhancements

  • s3file tool supports object version operations
  • Support listing object versions
  • Support getting specific object versions

Bug Fixes

  • Fixed issue deleting objects with / character in name
  • Fixed race condition when uploading same object concurrently
  • Fixed CRC checksum related issues
  • Optimized pagination query performance

Documentation

  • New S3 API documentation
  • New Admin API documentation
  • New FAQ documentation
  • New troubleshooting guide

Upgrade Notes

Upgrading to v0.3.0 requires database migration

Note: Object lock configuration cannot be disabled after bucket creation, please configure carefully.

v0.2.1

Choose a tag to compare

@bidzhao bidzhao released this 23 Apr 09:04
  1. Introduce a new s3file CLI for StoreFS, MinIO, AWS S3, and all S3-compatible services.
  2. Add a refresh button in object list page.
  3. Add HTTP header "x-amz-checksum-crc32" in response of S3 GET/HEAD operations.
  4. Change stored CRC to be Base64.

0.2.0

Choose a tag to compare

@bidzhao bidzhao released this 15 Apr 12:11

Change List:

  1. Support S3 multipart.
  2. Embed web admin console into binary.
  3. Add 30 minute timeout to admin console.
  4. Support relative path as the value of node.disks.path in config file.
  5. Add more S3 Rest APIs:
    HeadBucket
    HeadObject
    CopyObject
    DeleteObjects
    RenameObject
    CreateMultipartUpload
    UploadPart
    CompleteMultipartUpload
    AbortMultipartUpload
    ListMultipartUploads
    ListParts

0.1.0

Choose a tag to compare

@bidzhao bidzhao released this 04 Apr 07:47

Initial release.