Partitioning
============

Partitions system are configured with a standard schema using LVM, so
that they can be possibly changed afterwards.

By default the whole space available on the first block device is used
and any existing partition is removed.

Alternatively you might set the sysdb attribute ``system_disk`` with the
device name of the disk which should be used instead::

    bob node set-attr $FQDN system_disk=md126

The default partition schema for RHEL 7 is:

   - create one primary ``/boot`` partition of 1Gb;
   - create the ``vg_root`` Volume Group that uses the rest of the disk;
   - on ``vg_root`` create the following logical volumes:
       - ``lv_root`` of 12 Gb size for ``/root``;
       - ``lv_var`` of 8 Gb size for ``/var``;
       - ``lv_var_log`` of 2 Gb size for ``/var/log``;
       - ``lv_tmp`` of 2 Gb size for ``/tmp``.

For RHEL 8 it is:

   - create one primary ``/boot`` partition of 1Gb;
   - create the ``vg_root`` Volume Group that uses the rest of the disk;
   - on ``vg_root`` create the following logical volumes:
       - ``lv_root`` of 14 Gb size for ``/root``;
       - ``lv_home`` of 2 Gb size for ``/home``;
       - ``lv_var`` of 8 Gb size for ``/var``;
       - ``lv_var_log`` of 3 Gb size for ``/var/log``;
       - ``lv_var_tmp`` of 2 Gb size for ``/var/log``;
       - ``lv_tmp`` of 2 Gb size for ``/tmp``.

To increase these sizes, you might use :doc:`vgroot::path <../puppet/profiles/vgroot>` in Hiera.

Custom Partitioning
-------------------
It is possible to customize the partitioning by using the ``partitions`` attribute on sysdb.

The ``partitions`` attribute can take two values:

   - ``manual``: this will not partition the disks and the installation process will wait for manual partitioning;
   - ``<URL>``: it is assumed to be a file containing the partitioning commands as used in kickstart.

If it is not possible to download the given URL the system fails-back to manual at installation time.
Please also note that no check is done on the URL content. 

Note that if you want to do add partitions outside of the on the system disk (while keeping above default partitioning for it), you might use Puppet and the `lvm Puppet module <https://forge.puppet.com/modules/puppetlabs/lvm>`_ instead to define the full LVM volume group.
