The Capacity Balancing service ensures that the percent of HCP storage space used on the storage nodes in the system remains roughly equivalent across the nodes when new nodes are added.
When the Capacity Balancing service runs, it evaluates the storage level for each node without regard to the individual logical volumes the node manages. If the storage levels for the nodes differ by a wide margin, the service moves objects around to bring the levels closer to a balanced state.
For the purpose of capacity balancing, HCP treats these items as individual objects:
- Parts of multipart objects
- Parts of in-progress multipart uploads
- Chunks for erasure-coded objects
- Chunks for erasure-coded parts of multipart objects
The Capacity Balancing service runs only when it is started manually. Typically, an authorized HCP service provider starts this service after adding new storage nodes to the system.
Capacity Balancing service processing
The Capacity Balancing service detects and repairs imbalances in storage availability across nodes in an HCP system, except for nodes that have data stored in namespaces where S Series storage is set as the ingest tier.
To detect imbalances in storage usage, the Capacity Balancing service compares node storage usage statistics. If the service determines that storage usage is imbalanced across nodes:
- The service determines whether the storage managed by each node is a source of objects to move or a target to move them to.
- From the storage for each source node, the service moves objects individually to storage managed by a target node provided the following conditions apply:
- The percent of capacity used on the source node is less than or equal to the average percent of capacity used on all the nodes in the system.
- The percent of capacity used on the target node is greater than the average percent of capacity used on all the nodes in the system.
- The storage managed by the target node does not have a copy of the object to be moved.
When selecting objects to move, the Capacity Balancing service considers the size of the object data and any custom metadata that the object includes.
At any point in time, HCP is unlikely to be in a perfectly balanced state for the following reasons:
- Object additions and deletions to and from the system do not trigger the Capacity Balancing service to run.
- When all the objects in a directory have been deleted, the empty directory remains in the namespace. Directories in the default namespace, whether empty or not, have metadata that takes up space.