Rustfs Disk-Full Recovery Failure & Metadata Corruption Report #2737
bartfaizoli76
started this conversation in
General
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
Rustfs Version: docker.io/rustfs/rustfs:1.0.0-alpha.98
Deployment Mode: Single-replica Deployment on OpenShift with LVMS thin-provisioned PVC
1. Executive Summary
When the underlying storage volume reached ~98% capacity (71 GiB used out of 72 GiB), rustfs entered an unrecoverable state where:
local disk /data health is faulty, returning errorInsufficientReadQuorumerrorsThe only recovery path was complete PVC deletion and data loss.
2. Environment Details
lvms-vg2(LVM Thin Provisioning)72Gi(XFS filesystem)resources.limits.memory: 2Gi,resources.limits.cpu: 2000m/datamounted fromrustfs-data-pvc10001edb-hcp(63 GiB),logs(negligible)3. Problem Timeline
Phase 1: Silent Degradation (disk fills up)
edb-hcpbucketPhase 2: Total API Failure
All S3 operations (GET, PUT, DELETE, LIST) returned errors. Rustfs logs showed:
Impact:
mc ls→The specified bucket does not existmc rm→Bucket does not exist(even though buckets were present)Phase 3: Diagnosis (volume expansion attempted)
We diagnosed the issue on the host node:
Conclusion: The XFS filesystem was healthy; the issue was rustfs's internal logic.
Phase 4: Volume Expansion (did NOT help)
We expanded the underlying infrastructure:
pvresize /dev/vdb— physical volume expanded to 200 GiB100Gvirtual sizexfs_growfs— filesystem grown to 100 GiBResult: Disk now reported 71% used (
100G total, 71G used, 30G free)But rustfs STILL failed with NEW errors:
Phase 5: Root Cause Identified
The
.rustfs.sys/buckets/.usage.jsonmetadata file (stored as erasure-coded chunks in rustfs's internal format) had lost read quorum. This means:4. What Actually Failed
/dev/vdb)vg2/thin-pool-2)vg2/be6af05d-...)xfs_repair -nclean.rustfs.sys)InsufficientReadQuorum5. Reproduction Steps
1.0.0-alpha.98with a 72 GiB XFS volumedisk health is faulty6. Feature Requests / Bug Reports for Rustfs Team
6.1 🐛 Bug: Metadata corruption on disk-full
Severity: Critical
Description: When the underlying disk fills up, rustfs's internal metadata writes (
.rustfs.sys/*) can leave erasure-coded chunks in an inconsistent state. After disk space is freed or expanded, metadata read quorum cannot be restored.Expected behavior: Rustfs should handle ENOSPC gracefully without corrupting its own metadata. At minimum, metadata writes should be atomic or self-healing.
Actual behavior: Metadata files (
.usage.json,.usage.json.bkp,.bloomcycle.bin) become permanently unreadable withInsufficientReadQuorum.6.2 ⚠ Feature: Configurable disk-usage threshold
Description: The
local disk /data health is faultymessage gives no indication whether the issue is:Request: Add a configurable
MIN_FREE_SPACE_PERCENTorMIN_FREE_SPACE_GBparameter. When breached:DiskFullerrorDisk usage 98% exceeds threshold 90%6.3 ⚠ Feature: Read-only / maintenance mode on disk-full
Description: When disk is critically full, rustfs rejects everything, including DELETE operations.
Request: Implement a "read-only with deletes allowed" mode. Users must be able to remove objects to recover space.
6.4 ⚠ Feature: Metadata self-healing
Description: If internal metadata files (
.usage.json, etc.) lose read quorum, rustfs has no recovery path.Request: On startup, if metadata is unreadable:
fsck)Rebuilding metadata from bucket scan — this may take time6.5 ⚠ Feature: Disk health diagnostic endpoint
Description:
/healthreturns only HTTP 200/503. There's no way to query WHY the disk is considered faulty.Request: Add
/health/detailedor expose metrics showing:full/io_error/metadata_corrupt/ok)7. Workarounds (for operators hitting this issue)
❌ Did NOT work:
xfs_repair— filesystem was already clean✅ Only working recovery:
rustfs-data-pvc(this destroys all data)8. Appendix: Key Log Excerpts
Disk-full period (before resize):
After volume resize (100 GiB, 71% used):
9. Contact / Follow-up
This issue was encountered during EDB Hosted Cloud Platform (HCP) PoC operations.
We are happy to provide additional logs, core dumps, or reproduction environments if helpful.
Suggested priority: P1 — data-loss / unrecoverable state
Suggested labels:
bug,data-loss,disk-full,metadata,erasure-codingBeta Was this translation helpful? Give feedback.
All reactions