##########
Ceph Guide
##########

***************************************
Placement Groups (PGs) and Auto-scaling
***************************************

In Ceph, Placement Groups (PGs) are an important abstraction that help
distribute objects across the cluster. Each PG can be thought of as a logical
collection of objects and Ceph uses these PGs to assign data to the appropriate
OSDs (Object Storage Daemons).  The proper management of PGs is critical to
ensure the health and performance of your Ceph cluster.

The number of PGs must be carefully configured depending on the size and layout
of your cluster.   The cluster performance can be negatively impacted if you
have too many or too few placement groups.

To learn more about placement groups and their role in Ceph, refer to the
`placement groups <https://docs.ceph.com/en/latest/rados/operations/placement-groups/>`_
documentation from the Ceph project.

The primary recommendations for a Ceph cluster is the following:

- Enable placement group auto-scaling
- Enable the Ceph balancer module to ensure data is evenly distributed across OSDs

The following sections provide guidance on how to enable these features in your
Ceph cluster.

Enabling PG Auto-scaling
========================

Ceph provides a built-in placement group auto-scaling module, which can
dynamically adjust the number of PGs based on cluster utilization. This is
particularly useful as it reduces the need for manual intervention when
scaling your cluster up or down.

To enable PG auto-scaling, execute the following command in your Ceph cluster:

.. code-block:: console

   $ ceph mgr module enable pg_autoscaler

You can configure auto-scaling to be on a per-pool basis by setting the target
size or percentage of the cluster you want a pool to occupy.  For example,
to enable auto-scaling for a specific pool:

.. code-block:: console

   $ ceph osd pool set <pool_name> pg_autoscale_mode on

For more detailed instructions, refer to the `Autoscaling Placement Groups <https://docs.ceph.com/en/reef/rados/operations/placement-groups/#autoscaling-placement-groups>`_
documentation from the Ceph project.

Managing the Ceph Balancer
==========================

The Ceph Balancer tool helps redistribute data across OSDs in order to maintain
an even distribution of data in the cluster.  This is especially important as
the cluster grows, new OSDs are added, or during recovery operations.

To enable the balancer, run:

.. code-block:: console

   $ ceph balancer on

You can check the current balancer status using:

.. code-block:: console

   $ ceph balancer status

For a more in-depth look at how the balancer works and how to configure it,
refer to the `Balancer module <https://docs.ceph.com/en/latest/rados/operations/balancer/>`_
documentation from the Ceph project.
