FAST VP no armazenamento Unity: como funciona

Hoje falaremos sobre uma tecnologia interessante implementada nos sistemas de armazenamento Unity/Unity XT - FAST VP. Se esta é a primeira vez que você ouve falar do Unity, você pode conferir as características do sistema usando o link no final do artigo. Trabalhei como vice-presidente da FAST na equipe de projeto da Dell EMC por mais de um ano. Hoje quero falar mais detalhadamente sobre esta tecnologia e revelar alguns detalhes de sua implementação. Claro, apenas aqueles que podem ser revelados. Se você está interessado em questões de armazenamento eficiente de dados ou simplesmente não entendeu completamente a documentação, então este artigo certamente será útil e interessante.

FAST VP no armazenamento Unity: como funciona

Direi imediatamente o que não estará no material. Não haverá busca por concorrentes e comparação com eles. Também não pretendo falar sobre tecnologias semelhantes de código aberto, pois o leitor curioso já as conhece. E, claro, não vou anunciar nada.

Camadas de armazenamento. Metas e objetivos do FAST VP

FAST VP significa Tiering de armazenamento totalmente automatizado para pool virtual. Um pouco difícil? Não tem problema, vamos descobrir agora. Tiering é uma forma de organizar o armazenamento de dados em que existem vários níveis (camadas) onde esses dados são armazenados. Cada um tem suas próprias características. O mais importante: desempenho, volume e preço de armazenamento de uma unidade de informação. Claro, existe uma relação entre eles.

Uma característica importante da hierarquização é que o acesso aos dados é fornecido de maneira uniforme, independentemente do nível de armazenamento em que estão localizados atualmente, e o tamanho do pool é igual à soma dos tamanhos dos recursos nele incluídos. É aqui que residem as diferenças em relação ao cache: o tamanho do cache não é adicionado ao volume total do recurso (pool, neste caso), e os dados do cache duplicam algum fragmento dos dados da mídia principal (ou serão duplicados se o os dados do cache ainda não foram gravados). Além disso, a distribuição dos dados por níveis fica oculta do usuário. Ou seja, ele não vê exatamente quais dados estão localizados em cada nível, embora possa influenciar isso indiretamente, definindo políticas (falaremos mais sobre isso posteriormente).

Agora vamos dar uma olhada nos recursos de implementação de camadas de armazenamento no Unity. O Unity tem 3 níveis ou camadas:

  • Desempenho extremo (SSDs)
  • Desempenho (HDD SAS 10k/15k RPM)
  • Capacidade (HDD NL-SAS 7200 RPM)

Eles são apresentados em ordem decrescente de desempenho e preço. O desempenho extremo inclui apenas unidades de estado sólido (SSDs). As outras duas camadas incluem unidades de disco magnético, que diferem na velocidade de rotação e, consequentemente, no desempenho.

Mídias de armazenamento do mesmo nível e tamanho são combinadas em uma matriz RAID, formando um grupo RAID (grupo RAID, abreviado como RG); Você pode ler sobre os níveis de RAID disponíveis e recomendados na documentação oficial. Os pools de armazenamento são formados por grupos RAID de um ou mais níveis, a partir dos quais o espaço livre é então distribuído. E do pool o espaço é alocado para sistemas de arquivos e LUNs.

FAST VP no armazenamento Unity: como funciona

Por que preciso de níveis?

Em suma e abstratamente: alcançar melhores resultados usando um mínimo de recursos. Mais especificamente, o resultado costuma ser entendido como um conjunto de características do sistema de armazenamento – velocidade e tempo de acesso, custo de armazenamento, entre outras. O mínimo de recursos significa o menor gasto: dinheiro, energia e assim por diante. O FAST VP implementa mecanismos para redistribuir dados em diferentes níveis em sistemas de armazenamento Unity/Unity XT. Se você acredita em mim, pode pular o próximo parágrafo. De resto, contarei um pouco mais.

A distribuição adequada de dados entre camadas de armazenamento permite economizar no custo geral de armazenamento, sacrificando a velocidade de acesso a algumas informações raramente usadas, e melhorar o desempenho, movendo dados usados ​​com frequência para mídias mais rápidas. Aqui alguém poderia argumentar que mesmo sem hierarquização, um administrador normal sabe onde colocar quais dados, quais são as características desejáveis ​​de um sistema de armazenamento para sua tarefa, etc. Isto é sem dúvida verdade, mas a distribuição manual de dados tem suas desvantagens:

  • requer tempo e atenção do administrador;
  • Nem sempre é possível “redesenhar” os recursos de armazenamento para se adequarem às mudanças nas condições;
  • uma vantagem importante desaparece: o acesso unificado a recursos localizados em diferentes níveis de armazenamento.

Para que os administradores de armazenamento se preocupem menos com a segurança no trabalho, acrescentarei que aqui também é necessário um planejamento de recursos competente. Agora que as tarefas de hierarquização foram brevemente descritas, vamos dar uma olhada no que você pode esperar do FAST VP. Agora é a hora de voltar à definição. As duas primeiras palavras – Totalmente Automatizado – são traduzidas literalmente como “totalmente automatizado” e significam que a distribuição entre os níveis ocorre automaticamente. Bem, o Virtual Pool é um datapool que inclui recursos de diferentes níveis de armazenamento. Isto é o que parece:

FAST VP no armazenamento Unity: como funciona

Olhando para o futuro, direi que o FAST VP move dados apenas dentro de um pool, e não entre vários pools.

Problemas resolvidos pelo FAST VP

Vamos falar abstratamente primeiro. Temos um pool e algum mecanismo que pode redistribuir os dados dentro desse pool. Lembrando que nosso objetivo é atingir a produtividade máxima, perguntemo-nos: de que forma podemos alcançá-lo? Pode haver vários deles, e aqui o FAST VP tem algo a oferecer ao usuário, já que a tecnologia é algo mais do que apenas camadas de armazenamento. Aqui estão algumas maneiras pelas quais o FAST VP pode aumentar o desempenho do pool:

  • Distribuição de dados em diferentes tipos de discos, níveis
  • Distribuindo dados entre discos do mesmo tipo
  • Distribuição de dados ao expandir o pool

Antes de vermos como essas tarefas são resolvidas, precisamos saber alguns fatos necessários sobre como funciona o FAST VP. O FAST VP opera com blocos de um determinado tamanho - 256 megabytes. Este é o menor “bloco” contíguo de dados que pode ser movido. Na documentação é assim que eles chamam: slice. Do ponto de vista do FAST VP, todos os grupos RAID consistem em um conjunto dessas “peças”. Consequentemente, todas as estatísticas de E/S são acumuladas para tais blocos de dados. Por que esse tamanho de bloco foi escolhido e será reduzido? O bloco é bastante grande, mas este é um compromisso entre a granularidade dos dados (tamanho de bloco menor significa distribuição mais precisa) e os recursos computacionais disponíveis: dadas as estritas limitações existentes na RAM e um grande número de blocos, os dados estatísticos podem ocupar demais, e o número de cálculos aumentará proporcionalmente.

Como o FAST VP aloca dados ao pool. Políticos

Para controlar o posicionamento de dados em um pool com o FAST VP habilitado, existem as seguintes políticas:

  • Nível mais alto disponível
  • Camada automática
  • Comece em nível alto e depois em nível automático (padrão)
  • Nível mais baixo disponível

Eles afetam tanto a alocação inicial do bloco (primeiro os dados gravados) quanto a realocação subsequente. Quando os dados já estiverem localizados em discos, a redistribuição será iniciada de acordo com um cronograma ou manualmente.

O nível mais alto disponível tenta colocar um novo bloco no nível de desempenho mais alto. Se não houver espaço suficiente nele, ele será colocado no próximo nível mais produtivo, mas então os dados poderão ser movidos para um nível mais produtivo (se houver espaço ou deslocando outros dados). O Auto-Tier coloca novos dados em diferentes níveis, dependendo da quantidade de espaço disponível, e é redistribuído dependendo da demanda e do espaço livre. Iniciar alto e então Auto-Tier é a política padrão e também recomendada. Quando colocado inicialmente, funciona como o nível mais alto disponível e, em seguida, os dados são movidos dependendo de suas estatísticas de uso. A política do nível mais baixo disponível procura colocar os dados no nível menos produtivo.

A transferência de dados ocorre com baixa prioridade para não interferir no funcionamento útil do sistema de armazenamento, porém, existe uma configuração de “Taxa de realocação de dados” que altera a prioridade. Há uma peculiaridade aqui: nem todos os blocos de dados têm a mesma ordem de redistribuição. Por exemplo, os blocos marcados como metadados serão movidos primeiro para um nível mais rápido. Metadados são, por assim dizer, “dados sobre dados”, alguma informação adicional que não são dados do usuário, mas armazenam sua descrição. Por exemplo, informações no sistema de arquivos sobre em qual bloco um arquivo específico está localizado. Isto significa que a velocidade de acesso aos dados depende da velocidade de acesso aos metadados. Dado que os metadados são normalmente de tamanho muito menor, espera-se que os benefícios de movê-los para discos de maior desempenho sejam maiores.

Critérios que Fast VP utiliza em seu trabalho

O principal critério para cada bloco, grosso modo, é a característica da “demanda” dos dados, que depende do número de operações de leitura e gravação de um fragmento de dados. Chamamos essa característica de “Temperatura”. Existem dados exigidos (quentes) que são “mais quentes” do que dados não reivindicados. É calculado periodicamente, por padrão em intervalos de uma hora.

A função de cálculo de temperatura possui as seguintes propriedades:

  • Na ausência de E/S, os dados “esfriam” com o tempo.
  • Sob carga mais ou menos igual ao longo do tempo, a temperatura primeiro aumenta e depois se estabiliza em uma determinada faixa.

A seguir, são levadas em consideração as políticas descritas acima e o espaço livre em cada nível. Para maior clareza, fornecerei uma imagem da documentação. Aqui as cores vermelha, amarela e azul indicam blocos com temperaturas altas, médias e baixas, respectivamente.

FAST VP no armazenamento Unity: como funciona

Mas voltemos às tarefas. Assim, podemos começar a analisar o que está sendo feito para resolver os problemas do FAST VP.

A. Distribuição de dados em diferentes tipos de discos, níveis

Na verdade, esta é a principal tarefa do FAST VP. O resto, em certo sentido, são derivados dele. Dependendo da política selecionada, os dados serão distribuídos em diferentes níveis de armazenamento. Em primeiro lugar, é levada em consideração a política de posicionamento, depois a temperatura do bloco e o tamanho/velocidade dos grupos RAID.

Para políticas de nível disponível mais alto/mais baixo, tudo é bastante simples. Para os outros dois é esse o caso. Os dados são distribuídos em diferentes níveis, levando em consideração o tamanho e o desempenho dos grupos RAID: de modo que a relação entre a “temperatura” total dos blocos e o “desempenho máximo condicional” de cada grupo RAID seja aproximadamente a mesma. Assim, a carga é distribuída de forma mais ou menos uniforme. Os dados mais solicitados são movidos para mídias rápidas e os dados raramente usados ​​são movidos para mídias mais lentas. Idealmente, a distribuição deveria ser mais ou menos assim:

FAST VP no armazenamento Unity: como funciona

B. Distribuição de dados entre discos do mesmo tipo

Lembre-se, no início eu escrevi que a mídia de armazenamento de um ou mais os níveis são combinados em um pool? No caso de um nível único, o FAST VP também tem trabalho a fazer. Para obter desempenho máximo em qualquer nível, é aconselhável distribuir os dados uniformemente entre os discos. Isso (em teoria) permitirá que você obtenha a quantidade máxima de IOPS. Os dados dentro de um grupo RAID podem ser considerados distribuídos uniformemente entre os discos, mas nem sempre é o caso entre grupos RAID. No caso de um desequilíbrio, o FAST VP moverá os dados entre grupos RAID proporcionalmente ao seu volume e “desempenho condicional” (em termos numéricos). Para maior clareza, mostrarei um esquema de rebalanceamento entre três grupos RAID:

FAST VP no armazenamento Unity: como funciona

B. Distribuição de dados ao expandir o pool

Esta tarefa é um caso especial da anterior e é executada quando um grupo RAID é adicionado ao pool. Para garantir que o grupo RAID recém-adicionado não permaneça ocioso, alguns dados serão transferidos para ele, o que significa que a carga será redistribuída por todos os grupos RAID.

Nivelamento de desgaste SSD

Ao usar o nivelamento de desgaste, o FAST VP pode prolongar a vida útil de um SSD, embora esse recurso não esteja diretamente relacionado ao armazenamento em camadas. Como os dados de temperatura já estão disponíveis, o número de operações de gravação também é levado em consideração e sabemos como mover os blocos de dados, seria lógico que o FAST VP resolvesse esse problema.

Se o número de entradas em um grupo RAID exceder significativamente o número de entradas em outro, o FAST VP redistribuirá os dados de acordo com o número de operações de gravação. Por um lado, isso alivia a carga e economiza recursos de alguns discos, por outro lado, acrescenta “trabalho” para os menos carregados, aumentando o desempenho geral.

Dessa forma, o FAST VP enfrenta os desafios tradicionais do Storage Tiering e faz um pouco mais do que isso. Tudo isso permite armazenar dados de forma bastante eficiente no sistema de armazenamento Unity.

Algumas dicas

  1. Não negligencie a leitura da documentação. Existem práticas recomendadas e elas funcionam muito bem. Se você os seguir, geralmente não surgirão problemas sérios. O restante dos conselhos basicamente os repete ou complementa.
  2. Se você configurou e ativou o FAST VP, é melhor deixá-lo ativado. Deixe-o distribuir os dados no tempo previsto e aos poucos, mais que uma vez por ano e tendo um sério impacto no desempenho de outras tarefas. Nesses casos, a redistribuição de dados pode demorar muito.
  3. Tenha cuidado ao escolher uma janela de realocação. Embora isso seja óbvio, tente escolher um horário com menos carga no Unity e aloque um período de tempo suficiente.
  4. Planeje expandir seu sistema de armazenamento, faça isso na hora certa. Esta é uma recomendação geral que também é importante para o FAST VP. Se a quantidade de espaço livre for muito pequena, a movimentação de dados ficará mais lenta ou se tornará impossível. Especialmente se você negligenciou o ponto 2.
  5. Ao expandir um pool com o FAST VP ativado, você não deve começar com os discos mais lentos. Ou seja, adicionamos todos os grupos RAID planejados de uma só vez ou adicionamos primeiro os discos mais rápidos. Nesse caso, a redistribuição dos dados para novos discos “rápidos” aumentará a velocidade geral do pool. Caso contrário, começar com discos “lentos” pode levar a uma situação muito desagradável. Primeiro, os dados serão transferidos para discos novos e relativamente lentos e, depois, quando forem adicionados discos mais rápidos, na direção oposta. Existem nuances aqui relacionadas às diferentes políticas do FAST VP, mas, em geral, uma situação semelhante é possível.

Se você estiver olhando para este produto, poderá experimentar o Unity gratuitamente baixando o dispositivo virtual Unity VSA.

FAST VP no armazenamento Unity: como funciona

Ao final do material compartilho vários links úteis:

Conclusão

Gostaria de escrever muito, mas entendo que nem todos os detalhes interessarão ao leitor. Por exemplo, você pode falar mais detalhadamente sobre os critérios pelos quais o FAST VP toma decisões sobre transferência de dados, sobre os processos de análise de estatísticas de E/S. Além disso, o tema da interação com Piscinas Dinâmicas, e isso merece um artigo separado. Você pode até fantasiar sobre o desenvolvimento desta tecnologia. Espero que não tenha sido chato e eu não tenha te entediado. Ver você de novo!

Fonte: habr.com

Adicionar um comentário