78 lines
2.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# MinIO: It Works, But It Hates Me
*By someone who survived a 150,000-file sync and lived to tell the tale.*
---
MinIO is fast. It's lightweight. It's compatible with Amazon S3. Its everything you want in a self-hosted object storage system.
Until you try to **use it like a filesystem**.
Then it becomes the most temperamental, moody, selectively mute piece of software you've ever met.
---
## What I Was Trying to Do
All I wanted was to migrate ~40GB of Mastodon media from local disk into a MinIO bucket. Nothing fancy. Just a clean `rclone sync` and a pat on the back.
---
## What Actually Happened
- **Load average spiked to 33**
- `find` froze
- `rclone size` hung
- `zfs snapshot` stalled so long I thought the server died
- The MinIO **UI lied to my face** about how much data was present (5GB when `rclone` said 22GB)
- Directory paths that looked like files. Files that were secretly directories. I saw `.meta` and `.part.1` in my dreams.
---
## The Root Problem
MinIO is **not** a filesystem.
It's a flat key-value object store that's just *pretending* to be a folder tree. And when you throw 150,000+ nested objects at it — especially from a tool like `rclone` — all the lies unravel.
It keeps going, but only if:
- You feed it one file at a time
- You dont ask it questions (`rclone ls`, `rclone size`, `find`, etc.)
- You dont use the UI expecting it to reflect reality
---
## The Fixes That Kept Me Sane
- Switched from `rclone ls` to `rclone size` with `--json` (when it worked)
- Cleaned up thousands of broken `.meta`/`.part.*` directories using a targeted script
- Paused `rclone` mid-sync with `kill -STOP` to get snapshots to complete
- Used `du -sh` instead of `find` to track usage
- Lowered `rclone` concurrency with `--transfers=4 --checkers=4`
- Drank water. A lot of it.
---
## The Moral of the Story
If you're going to use MinIO for massive sync jobs, treat it like:
- A **delicate black box** with fast internals but fragile mood
- Something that **prefers to be written to, not inspected**
- An S3 clone with boundary issues
---
## Final Thought
MinIO *does* work. It's powerful. Its fast. But it also absolutely hates being watched while it works.
And you won't realize how much until you're 100,000 files deep, snapshot frozen, and `rclone` is telling you you're doing great — while the UI smirks and says you're at 5 gigs.
MinIO: It works.
But it hates you.
---
**Filed under:** `disaster recovery`, `object storage`, `sync trauma`, `zfs`, `rclone`, `why me`