Tiering de Filesystem em Linux: O futuro está aí. Vindo diretamente do passado.

Olá a todos!

Quem segue o meu blog sabe que de vez em quando falo de armazenamento. Já apresentei no passado soluções muito interessantes para turbinar velocidade em discos mecânicos, colocando-os quase a velocidade de um ssd.
Hoje e no seguimento desses posts, venho falar de tiering de storage.

Embora a ideia em si não seja recente (a primeira vez que ouvi falar no assunto foi em 2008), e já amplamente utilizada em produtos da Sun, IBM e EMC de uma forma transparente ao nível de soluções de storage centralizado empresarial, não se tem falado muito disto em Linux, tirando as menções honrosas para openZfs.

A gestão eficiente do armazenamento de dados é uma prioridade para organizações de todos os tamanhos. Com o crescimento exponencial dos dados, é fundamental encontrar maneiras de otimizar o desempenho e reduzir os custos de armazenamento. Uma abordagem cada vez mais adotada para atingir esses objetivos é o tiering de filesystem, uma técnica que organiza os dados em diferentes camadas ou “tiers” com base em critérios como a frequência de acesso. Neste artigo, iremos visitar o tema, detalhando como funciona o tiering de filesystem, focando na alocação inteligente de dados em dispositivos de armazenamento com diferentes níveis de desempenho.

O Que é Tiering de Filesystem?

O tiering de filesystem é uma estratégia de gestão de dados que envolve a alocação dos mesmos em diferentes camadas de armazenamento com base em suas características e padrões de acesso. Esta abordagem reconhece que nem todos os dados têm a mesma importância ou são acedidos com a mesma frequência. Portanto, ao distribuir os dados em camadas, é possível priorizar(!) o armazenamento dos dados mais críticos ou frequentemente acedidos em dispositivos de armazenamento mais rápidos e caros, enquanto os dados menos acedidos ou menos críticos podem ser armazenados em dispositivos mais lentos e econômicos.

Quais os Benefícios do Tiering de Filesystem?

  1. Otimização do Desempenho: Ao colocar os dados mais acessados em dispositivos de armazenamento mais rápidos, como NVME’s/SSDs (Solid State Drives), o tiering de filesystem melhora significativamente o desempenho geral do sistema. Isso resulta em tempos de acesso mais curtos e uma experiência mais ágil para os utilizadores.
  2. Redução de Custos: O tiering de filesystem permite que as organizações otimizem seus investimentos em armazenamento, alocando recursos mais caros, como SSDs, apenas para os dados que realmente necessitam de alta performance. Isso ajuda a reduzir os custos gerais de infraestrutura de armazenamento.
  3. Melhor Utilização de Recursos: Ao distribuir os dados em diferentes camadas de armazenamento, o tiering de filesystem garante uma melhor utilização dos recursos disponíveis. Isso é especialmente importante em ambientes onde os recursos de armazenamento são limitados ou caros.
  4.  Flexibilidade: Os sistemas de tiering de filesystem oferecem flexibilidade para ajustar as políticas de movimentação de dados com base nas necessidades específicas de cada organização. Isso permite uma adaptação fácil às mudanças nos padrões de acesso aos dados ao longo do tempo.

Implementação Teórica do Tiering de Filesystem.

Para implementar com sucesso o tiering de filesystem, é importante entender as características dos diferentes tipos de dispositivos de armazenamento disponíveis e como eles podem ser usados efetivamente em conjunto. Por exemplo, em um ambiente típico, os dados podem ser distribuídos da seguinte maneira:

  1. Tier 1 (SSDs): Esta camada é reservada para os dados mais críticos e frequentemente acessados. Os SSDs oferecem tempos de acesso muito baixos e são ideais para aplicativos que exigem alta performance, como bancos de dados transacionais e sistemas de virtualização.
  2.  Tier 2 (Discos de 7200 RPM): Esta camada é destinada aos dados de uso intermediário, que não exigem a velocidade dos SSDs, mas ainda são acessados com uma certa frequência. Discos rígidos de 7200 RPM oferecem um bom equilíbrio entre desempenho e capacidade de armazenamento.
  3. Tier 3 (Discos de 5400 RPM): Esta camada é usada para armazenar dados de baixa prioridade ou arquivos de grande volume que são acessados com pouca frequência. Discos de 5400 RPM são mais lentos, mas oferecem uma capacidade de armazenamento mais alta a um custo mais baixo.

Implementação Pratica do Tiering de Filesystem em Linux:

Recentemente o fabricante de soluções de storage 45drives tem estado a desenvolver junto com a comunidade uma solução baseada linux, com backend FUSE, precisamente para isso.
O produto, de nome autotier, é um userspace implementation de um sistema de arquivos (em cima de FUSE)  que move inteligentemente arquivos entre camadas de armazenamento com base na frequência de uso, idade do arquivo e ocupação da camada.

O autotier  atua como uma passagem de mesclada para qualquer número de sistemas de arquivos que se encontrem por baixo. Esses sistemas de arquivos subjacentes podem ser de qualquer tipo, desde xfs, ext3,4, inclusive em cima de LVM.
Nos bastidores, o autotier move arquivos de forma que os mais acedidos sejam mantidos na camada mais alta. Por desenho, o autotier preenche cada camada definida até a quota definida na configuração, começando pela camada mais rápida com os arquivos de maior prioridade.

The rule of thumb nesta solução (e em qualquer outra de tiering) é que se o nosso workload envolve escrever muita quantidade de dados, temos de definir uma quota menor para a camada mais alta para permitir mais espaço. Se o nosso workoad principal for ler, temos de definir um limite superior mais alto para permitir o máximo uso possível do armazenamento de primeira linha disponível.

O procedimento de instalação é bastante simples, tanto para plataformas debian based como para sistemas rpm based desde que tenham as dependências necessárias e está descrito na seção de instalação da pagina de github do projeto: https://github.com/45Drives/autotier?tab=readme-ov-file#installation

Desafios e Considerações

Embora o tiering de filesystem ofereça uma série de benefícios, também apresenta desafios que devem ser considerados durante o planeamento e implementação:

  1. Políticas de Movimentação de Dados:Desenvolver políticas eficazes para determinar quando e como os dados devem ser movidos entre as diferentes camadas de armazenamento é fundamental para o sucesso do tiering de filesystem. Isto requer uma compreensão clara dos padrões de acesso aos dados e das necessidades de desempenho de cada aplicação.
  2. Overhead de Gestão: Implementar e gerir um sistema de tiering de filesystem irá adicionar complexidade ao ambiente de armazenamento e exigir recursos adicionais de gestão. Nem que seja na altura de implementar e afinar. É importante garantir que os benefícios da implementação superem os custos associados a gestão do sistema.
  3. Custos Iniciais: A aquisição de dispositivos de armazenamento mais rápidos, como SSDs, pode representar um investimento inicial significativo para algumas organizações (ou homelab). É importante considerar cuidadosamente os custos e benefícios a longo prazo ao decidir sobre a implementação do tiering de filesystem.
  4. Monitorização Contínua: Monitorar continuamente o desempenho do sistema e ajustar as políticas de tiering conforme necessário é essencial para garantir que o sistema permaneça otimizado ao longo do tempo. Isso requer uma análise regular dos padrões de acesso aos dados e uma resposta rápida a quaisquer mudanças no ambiente de armazenamento.

Chegamos ao fim do post desta semana, onde abordamos o tiering de filesystem. É uma estratégia muito util para maximizar o desempenho e a eficiência do armazenamento de dados em ambientes empresariais com a elasticidade de crescimento que atribuímos a soluções de LVM.
Ao distribuir os dados em diferentes camadas de armazenamento com base em critérios como a frequência de acesso,  podemos garantir que os nossos recursos de armazenamento sejam usados de forma mais eficiente e que as aplicações críticas tenham o desempenho necessário para atender às exigencias dos projetos ou negócios para os quais o storage irá ser utilizado.
Embora a implementação bem-sucedida do tiering de filesystem exija planeamento e gestão cuidadosa, os benefícios em termos de desempenho, custo e flexibilidade fazem dele uma estratégia valiosa para qualquer organização que busque otimizar seu ambiente de armazenamento de dados.

Até ao proximo post e se tiverem alguma duvida ou reparo, sabem onde me encontrar.
Abraço!
Nuno