Na era dos grandes dados, as empresas estão a gerar mais informação do que nunca. Contudo, não é suficiente apenas armazenar dados—estes devem ser armazenados de forma eficiente, fiável e económica. É aqui que a codificação de eliminação (CE) entra em jogo. Utilizada por sistemas de armazenamento distribuído como o Ceph, a codificação de eliminação oferece uma forma mais inteligente de salvaguardar dados enquanto optimiza a utilização do armazenamento. Este artigo decompõe o que é a codificação de eliminação, como funciona e quando utilizá-la em vez da replicação tradicional.
Replicação vs. Codificação de eliminação: qual é a diferença?
Por predefinição, muitos sistemas de armazenamento, incluindo o Ceph, utilizam replicação para proteger dados. A replicação é simples: cada fragmento de dados é duplicado em múltiplos discos (frequentemente 3 cópias). Este método é rápido e fiável, especialmente para ficheiros pequenos ou ambientes de alto desempenho—mas consome uma grande quantidade de armazenamento.
A codificação de eliminação, por outro lado, adopta uma abordagem mais eficiente. Em vez de copiar conjuntos de dados inteiros, divide-os em fragmentos menores—uma combinação de fragmentos de dados e fragmentos de paridade (utilizados para recuperação). Estes fragmentos são distribuídos por diferentes discos. Se alguns discos falharem, os dados em falta podem ser reconstruídos utilizando a informação de paridade.
A tabela abaixo compara a replicação e a codificação de eliminação em termos de eficiência de armazenamento, método de recuperação e casos de utilização ideais:

Como funciona a codificação de eliminação no Ceph
A codificação de eliminação no Ceph é configurável através de perfis que definem como os dados são divididos e protegidos. Cada perfil CE é definido por dois parâmetros:
• k – Número de fragmentos de dados
• m – Número de fragmentos de codificação (paridade)
O sistema cria um total de k + m fragmentos, que são distribuídos pelo cluster de armazenamento. O Ceph pode tolerar até m falhas sem perda de dados.
A tabela abaixo descreve os perfis de codificação de eliminação mais comumente utilizados e compara-os em termos de tolerância a falhas e sobrecarga de armazenamento:

Exemplo: Um perfil 3+2 divide os dados em 3 fragmentos e adiciona 2 fragmentos de paridade. Quaisquer 3 de 5 fragmentos podem restaurar os dados originais, mesmo se 2 fragmentos forem perdidos.
Escolher o perfil CE adequado
A escolha depende do seu ambiente e objectivos:
• k mais baixo, m mais alto (por exemplo, 3+2): Mais redundância, ideal para clusters menores ou onde a resiliência é uma prioridade máxima.
• k mais alto, m mais baixo (por exemplo, 10+4): Melhor eficiência de armazenamento, óptimo para implementações em grande escala que priorizam a redução de custos.
A codificação de eliminação oferece várias vantagens que a tornam uma escolha poderosa para sistemas de armazenamento modernos, incluindo:
• Armazenamento eficiente: Menor sobrecarga do que a replicação—armazene mais dados no mesmo espaço de disco.
• Alta tolerância a falhas: Lida com múltiplas falhas de disco sem perda de dados.
• Escalabilidade: Adequada para grandes clusters e implementações em escala de nuvem.
• Redundância personalizada: Ajuste o rácio k+m para atender às suas necessidades de durabilidade e orçamento.
Quando a codificação de eliminação faz sentido
A codificação de eliminação não é ideal para todos os cenários. Mas quando aplicada estrategicamente, destaca-se em muitos casos. Aqui estão os cenários onde a codificação de eliminação se destaca, juntamente com as razões pelas quais é particularmente adequada para cada um:

Cenários mais adequados para replicação
A codificação de eliminação requer mais CPU e I/O durante escritas e reconstruções, pelo que pode não ser a melhor escolha para:
• Bases de dados ou VMs (por exemplo, Ceph RBD)
• Sistemas de ficheiros interactivos com ficheiros pequenos (por exemplo, CephFS)
• Cargas de trabalho de I/O de baixa latência e alto rendimento
Nestes casos, a replicação oferece melhor desempenho apesar do seu custo de armazenamento mais elevado.
A codificação de eliminação é uma estratégia eficaz para as organizações que visam optimizar a eficiência, durabilidade e escalabilidade do armazenamento. No Ceph, reduz a sobrecarga de armazenamento ao fragmentar os dados em parcelas com paridade, permitindo a recuperação de falhas sem replicação total dos dados. Uma configuração como 6+3 pode tolerar até três falhas, tornando-a adequada para armazenamento inactivo e dados de objectos em grande escala.
Embora ofereça significativas poupanças de custos e resiliência, a codificação de eliminação introduz compromissos de desempenho, particularmente para escritas pequenas ou frequentes, e é menos ideal para aplicações sensíveis à latência, como bases de dados.


