We previously published a blog post, No More Default Rebalancing of Object Storage!, where we explained that MinIO doesn’t rebalance data automatically, instead it places data in the optimal location within the distributed deployment. Traditional distributed object storage systems balance data by spreading it across nodes in a cluster. The cluster then runs regular rebalancing activities to balance data across nodes and drives. When you add a node or a drive, you rebalance data across the entire deployment. Performance on such systems suffers when they take resources away from applications and users and instead devote them to rebalancing tasks.
To summarize the post (and our general approach), MinIO does not rely on regular, automated rebalancing and instead enables rapid expansion while maintaining top-notch performance for S3 operations. MinIO scales quickly using Server Pools to add capacity in the form of erasure sets. The principle is straightforward: Expanding with a new group of nodes is a hyperscale move, growing by a single drive or node is not. Objects in the original Server Pool were optimally placed onto drives, and now we’re adding a new Server Pool where new objects will be optimally placed on drives – voila, no rebalancing needed.
MinIO brings the new Server Pool up, adds it to the existing Server Pools and then performs new write operations (weighted writes) to the pool with the least storage fills. To reiterate, MinIO uses weighted writes as the default mechanism because automated rebalancing is expensive and consumes a lot of resources.
This has proven to be highly effective for most deployments and our customers are big fans of the ability to scale quickly. One client, in the media/streaming space, however, asked for a way to manually move objects from existing Server Pools to a new Server Pool.
Starting with the 2023-06-23T20-26-00Z release, MinIO will support manual rebalancing through the
mc admin rebalance command. This starts, monitors or stops a rebalancing operation on a MinIO deployment. Triggering a manual rebalancing prompts MinIO to scan the entire deployment and move objects as necessary to achieve a similar amount of free space across all Server Pools. Further details are available here.
Rebalance If You Want To
Customers buy MinIO because it serves as a high-performance and elastically scalable foundation for application stacks and data lakehouses. As a result, they need software-defined object storage that can grow rapidly – and not affect overall performance while growing. Server Pools enable rapid capacity growth, and now MinIO admins have the ability to manually rebalance objects across all Server Pools, existing and new. This is the fastest way to bring new object storage into service. In contrast to automatic rebalancing, manual rebalancing lets you schedule the tasks so they don’t interfere with normal usage.