---
title: "Erasure coded pools\n    | Ubuntu"
description: Ubuntu is an open source software operating system that runs from the
  desktop, to the cloud, to all your internet connected things.
url: https://ubuntu.com/ceph/docs/erasure-coded-pools?format=md
keywords: index, follow
---

*Submit*

# Erasure coded pools

Erasure coded pools use a technique that allows for the same resiliency as replicated pools, yet require less space to achieve (i.e. storage overhead is reduced). An object is split into data “chunks”, and parity “chunks” are then generated. All chunks are distributed amongst a user-configurable number of OSDs.

Note:

Erasure coded pools require more memory and CPU cycles than replicated pools do. They are also only supported starting with Ceph Luminous.

Erasure coding is enabled by modifying a charm’s pool type. This only affects the pool(s) associated with that charm:

```
pool-type: erasure-coded
```

The current list of Juju charms that support erasure coded pools is given here:

* ceph-fs
* ceph-radosgw
* cinder-ceph
* glance
* nova-compute

For these charms there are many configuration options pertinent to erasure coding, but the two that are most widely used are:

```
ec-profile-k: 1
ec-profile-m: 2
```

The values given above are the defaults.

Note:

The full list of options related to erasure coding are covered in the [Ceph erasure coding](https://docs.openstack.org/project-deploy-guide/charm-deployment-guide/latest/app-erasure-coding.html) section of the OpenStack Charms Deployment Guide.

Option `ec-profile-k` gives the number of equal-sized data chunks an object is split into. Option `ec-profile-m` gives the number of parity chunks that are generated. Based on the recovery algorithm, ec-profile-m also ends up being the number of failed OSDs that a cluster can sustain without incurring data loss. The sum of `ec-profile-k` and `ec-profile-m` is the number of OSDs that an object will be distributed amongst.

Important:

The sum of `ec-profile-k` and `ec-profile-m` must never surpass the number of OSDs in the cluster.

Unlike the ‘replicated’ pool type, to use erasure coded pools some configuration and judgement is required.

Consider the following essential options and their respective default values:

```
pool-type: erasure-coded
ec-profile-k: 1
ec-profile-m: 2
```

A cluster thus configured will effectively distribute an object amongst **three** OSDs and be able to sustain the loss of **two** of them. The original object is not split (k=1) so the parity chunks are simply distributed to the two other OSDs (m=2). The space required is 300% of the original data (i.e. a storage overhead of **200%**). This is the storage overhead of a replicated pool with three OSDs, but such a cluster would also acquire a processing overhead in terms of CPU, memory, and network traffic.

Note:

All data and parity chunks for any given cluster are of the same size. Data chunks can be used to reconstruct an object and parity chunks can be used to rebuild a lost data chunk.

Now consider the following:

```
pool-type: erasure-coded
ec-profile-k: 10
ec-profile-m: 4
```

A cluster thus configured will effectively distribute an object amongst **14** OSDs and be able to sustain the loss of **four** of them, and the storage overhead is just **40%**.

The challenge is to strike a balance between these factors:

* number of available OSDs
* number of OSD failures without data loss (larger is good)
* storage overhead (smaller is good)

The given charm’s documentation will provide more detailed information on how erasure coded Ceph pools pertain to it. Also see [Ceph erasure coding](https://docs.openstack.org/project-deploy-guide/charm-deployment-guide/latest/app-erasure-coding.html) in the OpenStack Charms Deployment Guide for in-depth information on how erasure coding applies to charms in general.

---

[Previous

Replicated pools](https://ubuntu.com/ceph/docs/replicated-pools)
[Next

RADOS Gateway multi-site replication](https://ubuntu.com/ceph/docs/multi-site-replication)

This page was last modified 3 years ago. [Help improve this document in the forum](https://discourse.ubuntu.com/t/erasure-coded-pools/18807).
