Object Storage Consistency Check Failed: Quick Fixes
This error usually means your object storage nodes disagree on data. We'll cover the top three causes and how to fix them fast.
1. Network Time Sync Drift
This is the number one cause. I've seen it in Ceph, MinIO, and even on-prem object stores. When your storage nodes have clock drift—even by a few seconds—they start arguing about which version of an object is the right one. The consistency check fails because timestamps don't match.
How to spot it: Check /var/log/messages or your storage daemon logs for entries like "clock skew" or "time mismatch". You'll also see the error pop up after a reboot or after a power outage when NTP hasn't fully synced yet.
The fix:
- Check current time on all nodes: Run
dateon each node and compare. If they're more than half a second off, that's your problem. - Force NTP sync immediately: Run
sudo systemctl restart ntp(orchronydif you're on RHEL/CentOS 7+). Then wait 30 seconds and runntpq -pto confirm sync. - If you're in a VM: Disable VMware time sync or Hyper-V time sync integration services. They often fight with NTP. Set
tools.syncTime = "FALSE"in your VMX file for VMware. - Permanent fix: Add
server pool.ntp.org iburstto/etc/ntp.confand make sure NTP starts on boot:sudo systemctl enable ntp.
After fixing time, run the consistency check again. 8 times out of 10, it passes immediately.
2. Corrupted Object or Stale Checksum
If time is fine, the next culprit is a corrupted object or a stale checksum file. This happens when a write operation gets interrupted—think sudden power loss, a full disk, or a network timeout during a large file upload. The metadata says the object is one size or hash, but the actual data on disk is different.
How to spot it: Look at the storage node logs for checksum mismatch or object size mismatch. In MinIO, you'll see md5 mismatch errors. In Ceph, scrub error messages point to specific OSDs and PGs.
The fix:
- Identify the bad object: Use your storage system's tool to list inconsistent objects. For Ceph:
ceph pg scrub {pg-id}, thenceph pg repair {pg-id}. For MinIO: usemc admin heal myminio. - Force a recheck: Don't assume it fixes itself. Run a deep scrub if you can. On Ceph:
ceph pg deep-scrub {pg-id}. - If repair fails: You may need to delete and re-upload the object. That's rare—like 1 in 50 cases—but it happens. Check if the object is critical, then copy it from a backup or regenerate it.
A lot of admins skip step 2. Don't. A deep scrub actually reads the data and compares it to the checksum. That's what catches the corruption.
3. Cluster Rebalance Stuck or Hung
This one's sneaky. The consistency check fails because the cluster is mid-rebalance and can't settle on which node owns the object. I see this most often when you add a new node or replace a failed disk. The rebalance process gets stuck on a specific bucket or object.
How to spot it: Check the cluster status. In Ceph, ceph -s shows rebalancing or degraded state. In MinIO, mc admin info shows incomplete uploads or pending rebalance. Also, the consistency check error might only affect one bucket or a set of objects.
The fix:
- Let it finish or force it: If the rebalance is slow, increase the rebalance speed. For Ceph:
ceph tell osd.* injectargs '--osd-max-backfills 4'. For MinIO: setMINIO_REBALANCE_THROTTLE=0(removes throttling). - If it's actually stuck: Restart the stuck node. For Ceph OSD:
sudo systemctl restart ceph-osd@{id}. For MinIO:sudo systemctl restart minioon the node that's lagging. - Worst case: Remove and re-add the node. I've had to do this twice in 14 years. Export the bucket data first with
mc mirrororradostools, then remove the node, let the cluster heal, then add it back.
Pro tip: before restarting anything, check disk space on each node. A full disk will stop rebalance cold.
Quick-Reference Summary Table
| Cause | Key Sign | Fix |
|---|---|---|
| Clock drift | "clock skew" in logs, >0.5s difference between nodes | Restart NTP, disable VM time sync |
| Corrupted object | "checksum mismatch", "scrub error" | Run deep scrub, repair, or re-upload object |
| Stuck rebalance | "rebalancing" in cluster status, one bucket affected | Increase rebalance speed, restart stuck node |
That's it. Fix time first, then check for corruption, then deal with rebalance. You'll clear this error in under 30 minutes.
Was this solution helpful?