En el ámbito del almacenamiento distribuido, Ceph se alza como una solución prominente, ofreciendo métodos diversos para proteger los datos en un clúster. Entre estos, destacan dos enfoques principales: la replicación con tres copias, comúnmente conocida como Replica 3, y el Erasure Coding, que fragmenta los datos y añade paridad para su reconstrucción en caso de fallos. La elección entre estas opciones no es trivial, pues impacta significativamente en el costo por terabyte útil, el rendimiento, la latencia, el consumo de CPU y la complejidad operativa, entre otros aspectos.
En un contexto donde la reducción de costos y la eficiente gestión del crecimiento de los datos son prioritarios, el Erasure Coding resurge como tema de interés. Sin embargo, no debe considerarse como un reemplazo directo de Replica 3. Ambos métodos tienen sus aplicaciones específicas en Ceph, y una elección errada puede transformar un ahorro en almacenamiento en un problema de rendimiento o disponibilidad.
El método Replica 3 es simple: cada dato se guarda en tres copias distribuidas en diferentes OSD (Object Storage Daemons), normalmente ubicados en distintos nodos o dominios de fallo. Esta configuración es ampliamente usada por su facilidad de comprensión y su eficacia en entornos de virtualización, bases de datos y cargas sensibles a la latencia. Sin embargo, su simplicidad conlleva un coste de capacidad elevado, ya que por cada 1 TB de datos útiles se requieren 3 TB de almacenamiento bruto. Aunque este enfoque es robusto para servicios críticos, resulta caro cuando se trata de almacenar grandes volúmenes de datos o repositorios de baja rotación.
Por otro lado, Erasure Coding emplea una metodología distinta, dividiendo los datos en fragmentos y añadiendo fragmentos de paridad. Por ejemplo, un perfil 4+2 divide los datos en cuatro fragmentos y añade dos de paridad, permitiendo tolerar la pérdida de hasta dos fragmentos. Esto mejora la eficiencia del almacenamiento, pues 100 TB útiles requieren alrededor de 150 TB brutos, comparado con los 300 TB de Replica 3. No obstante, esta eficiencia viene acompañada de un mayor consumo de CPU y sensibilidad a la latencia y red, especialmente para las escrituras, que deben calcular la paridad.
Ceph recomienda que los despliegues con pools Erasure Coded cuenten al menos con k+m dominios de fallo CRUSH, siendo crucial en la planificación del clúster para evitar que la pérdida de un nodo afecte significativamente.
En cuanto al rendimiento, Replica 3 presenta ventajas en escrituras pequeñas y cargas de baja latencia, al no requerir cálculo de paridad. Erasure Coding, por su parte, es más eficiente en capacidad, siendo ideal para datos grandes y menos cambiantes. Sin embargo, puede sufrir en escrituras pequeñas, intensivas y en escenarios degradados, donde la reconstrucción de datos es más compleja.
Las configuraciones actuales de Ceph permiten habilitar el uso de Erasure Coding para almacenamiento de bloques, como en RBD (RADOS Block Device) y CephFS, usando la opción allow_ec_overwrites. Esto amplía su aplicabilidad, pero no necesariamente lo convierte en la mejor opción para todas las cargas, especialmente las que requieren alta velocidad de escritura y baja latencia.
En conclusión, la decisión entre Replica 3 y Erasure Coding recae en un equilibrio entre costo y rendimiento. Si bien Replica 3 demanda más espacio, ofrece simplicidad operativa y menor latencia, siendo preferible para cargas críticas. Por otro lado, Erasure Coding permite un uso más eficiente de la capacidad, ideal para archivos grandes y datos no críticos. En muchos casos, la integración de ambos enfoques dentro de un clúster Ceph puede proporcionar una solución equilibrada, donde se utiliza Replica 3 para aplicaciones críticas y Erasure Coding para repositorios de datos más estáticos. A pesar de su robustez, Erasure Coding no exime de implementar estrategias de respaldo, ya que no protege contra corrupción lógica o pérdidas por otras causas externas al sistema. Así, la elección adecuada debe basarse no en una solución única, sino en el valor que cada técnica puede aportar según las necesidades específicas de almacenamiento.








