A healthy cloud grows. This episode covers MicroCloud scaling: adding new nodes with microcloud join, automatic Ceph data rebalancing, adding OSD disks with microceph disk add, and expanding storage pools so cluster capacity increases without downtime.

So far you've managed a static cloud — three nodes, three OSDs, fixed capacity. But workload needs always grow: more instances, more data. In episode 11 we learn how to scale MicroCloud in two dimensions: adding nodes (new compute + storage) and adding disks (per-node capacity). Both can be done without stopping the cluster.
An analogy: a cluster is like a coalition of companies. Adding a node is like bringing in a new partner — they bring their own capital (OSD disks) and share the workload. Adding a disk is like a partner buying a new warehouse — storage capacity rises, and goods (data) are automatically redistributed to stay balanced. Nobody has to "change offices".
The fourth node needs the same prerequisites as episode 3:
sudo hostnamectl set-hostname node-d
sudo apt install -y chrony && sudo systemctl enable --now chrony
sudo snap install lxd microceph microovn microcloudUnlike episode 5 (joining at the same time as init), here the cluster is already running. The new node discovers the cluster via mDNS and joins:
sudo microcloud joinMicroCloud scans the network, finds the existing cluster, and asks the usual storage/network questions. After peer approval (manual or proactive trust), the new node becomes a member:
lxc cluster list
microcloud status+---------+---------+-------------------+------+------+
| NAME | STATUS | ADDRESS | ... | |
+---------+---------+-------------------+------+------+
| node-a | ONLINE | 192.168.1.10:8443 | | |
| node-b | ONLINE | 192.168.1.11:8443 | | |
| node-c | ONLINE | 192.168.1.12:8443 | | |
| node-d | ONLINE | 192.168.1.13:8443 | | |
+---------+---------+-------------------+------+------+With 4 nodes, the failure tolerance stays at 1 (because an absolute majority, 3 out of 4, is required). Tolerance rises to 2 once the cluster has 5 nodes. That's why adding nodes in odd numbers (3 → 5) gives a real tolerance jump.
Note
Many admins choose to add nodes in pairs until reaching 5 or 7 nodes. 4 nodes add capacity without adding tolerance — that's valid, as long as you're aware that an even number of nodes doesn't increase quorum resilience. For production with high HA, target 5 nodes.
When the new node's OSD becomes active, Ceph starts rebalancing: some PGs (placement groups) are moved to the new OSD so capacity and load are spread evenly across the cluster. This happens automatically — no manual commands needed.
ceph -scluster:
id: ...
health: HEALTH_WARN
Rebalancing after adding osd.3Rebalancing can strain the network. To be gentle, limit the recovery rate:
sudo microceph cluster config set osd_max_backfills 1
sudo microceph cluster config set osd_recovery_max_active 1After rebalancing completes (back to HEALTH_OK), restore the defaults:
sudo microceph cluster config set osd_max_backfills 4
sudo microceph cluster config set osd_recovery_max_active 5Capacity can also grow by adding disks to nodes that are already members:
sudo microceph disk add /dev/sdcmicroceph status
ceph osd treeOnce Ceph capacity grows, the LXD pool automatically benefits from the new capacity — no pool reconfiguration needed. You can also create additional pools with different policies (e.g., replication 2 for less critical data):
sudo microceph pool add pool-fast replication 2lxc storage create fast ceph --source pool-fastNow there's a new LXD storage pool named fast using the Ceph pool pool-fast with replication 2 — saving capacity for data that can tolerate higher risk.
microceph disk add) — fast, no new member needed.microcloud join) — capacity rises in every dimension.microceph pool add + lxc storage create.osd_max_backfills so production isn't disturbed.Key takeaways:
microcloud join to an active cluster — compute + storage capacity rises.osd_max_backfills.microceph disk add — capacity grows without new members.In the next episode, we'll cover multi-cluster: MicroCloud Cluster Manager — a beta tool (AGPLv3, Go, Juju + PostgreSQL + Traefik) for managing and monitoring many MicroClouds from a single UI, integrated since MicroCloud 3.1, complete with cross-cluster observability and the LXD Grafana dashboard. Your cloud is no longer alone!