FAST VP em Unity Storage: como funciona

Hoje falaremos sobre uma tecnologia interessante implementada nos sistemas de armazenamento Unity / Unity XT - FAST VP. Se você ouviu falar pela primeira vez sobre o Unity, no link ao final do artigo, você pode se familiarizar com as características do sistema. Como parte da equipe de projeto da Dell EMC, trabalho no FAST VP há mais de um ano. Hoje eu quero falar mais sobre essa tecnologia e revelar alguns detalhes de sua implementação. Claro, apenas aqueles que têm permissão para revelar. Se você estiver interessado nos problemas de armazenamento eficiente de dados ou apenas não tiver descoberto completamente a documentação, este artigo certamente será útil e interessante.



Devo dizer imediatamente sobre o que não estará no material. Não haverá busca de concorrentes e comparações com eles. Também não pretendo falar sobre tecnologias semelhantes de código aberto, porque um leitor curioso já sabe sobre elas. E, é claro, não vou anunciar nada.

Camadas de armazenamento. Metas e objetivos do FAST VP


FAST VP significa Armazenamento em camadas totalmente automatizado para pool virtual. É complicado? Nada, agora vamos descobrir. A classificação por camadas é uma maneira de organizar o armazenamento de dados, em que existem vários níveis (camadas) em que esses dados são armazenados. Cada um tem suas próprias características. O mais importante: desempenho, volume e preço do armazenamento de uma unidade de informação. Claro, há um relacionamento entre eles.

Um recurso importante da classificação por camadas é que o acesso aos dados é fornecido de maneira uniforme, independentemente do nível de armazenamento em que estão atualmente e o tamanho do pool é igual à soma dos tamanhos dos recursos incluídos nele. Aqui está a diferença do cache: o tamanho do cache não é adicionado à quantidade total do recurso (nesse caso, pool) e os dados do cache duplicam alguns dados na mídia principal (ou duplicam se os dados do cache ainda não foram gravados). Além disso, a distribuição de dados por níveis está oculta do usuário. Ou seja, ele não vê que tipo de dados está localizado em cada nível, embora possa influenciá-lo indiretamente definindo políticas (sobre eles posteriormente).

Agora, vejamos os recursos da implementação das camadas de armazenamento no Unity. A unidade distingue 3 níveis, ou tier'a:

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

Eles são apresentados em ordem decrescente de desempenho e preço. O desempenho extremo inclui unidades de estado sólido (SSDs). Em outras duas unidades de disco tier'a - magnéticas, diferem na velocidade de rotação e, consequentemente, no desempenho.

A mídia de armazenamento de um nível e um tamanho é combinada em uma matriz RAID, formando um grupo RAID (grupo RAID, para abreviação - RG); os níveis de RAID disponíveis e recomendados podem ser encontrados na documentação oficial. Dos grupos RAID de um ou vários níveis, os conjuntos de armazenamento são formados, a partir dos quais o espaço livre é alocado. E já do espaço do pool está alocado para sistemas de arquivos e LUNs.



Por que eu preciso de camadas?


Em resumo e resumo: para obter melhores resultados, utilizando um mínimo de recursos. Mais especificamente, o resultado é geralmente entendido como um conjunto de características dos sistemas de armazenamento - velocidade e tempo de acesso, custo de armazenamento e outros. Por um mínimo de recursos, entende-se o menor custo: dinheiro, energia e assim por diante. O FAST VP apenas implementa mecanismos de redistribuição de dados em diferentes níveis nos sistemas de armazenamento Unity / Unity XT. Se você acredita em mim, pode pular o próximo parágrafo. Quanto ao resto, vou contar um pouco mais.

A distribuição correta dos dados por níveis de armazenamento permite economizar no custo total de armazenamento sacrificando a velocidade de acesso a algumas informações raramente usadas e aumentar a produtividade movendo os dados usados ​​com frequência para mídias de armazenamento mais rápidas. Aqui, alguém pode argumentar que, mesmo sem hierarquizar, o administrador normal sabe onde colocar quais dados, quais características desejáveis ​​do sistema de armazenamento para sua tarefa, etc. Isso é indubitavelmente verdade, mas a distribuição manual de dados tem suas desvantagens:

  • Leva tempo e atenção do administrador;
  • Nem sempre é possível "redesenhar" os recursos de armazenamento para alterar as condições;
  • uma vantagem importante desaparece: acesso unificado a recursos localizados em diferentes níveis de armazenamento.

Para deixar os administradores de armazenamento menos preocupados com a segurança do trabalho, acrescentarei que também é necessário o planejamento competente de recursos. Agora que as tarefas da classificação por níveis são descritas brevemente, vamos ver o que você pode esperar do FAST VP. Aqui está a hora de retornar à definição. As duas primeiras palavras - totalmente automatizadas - traduzem literalmente como "totalmente automatizadas" e significam que a distribuição dos níveis ocorre automaticamente. Bem, o Virtual Pool é um pool de dados que inclui recursos de diferentes níveis de armazenamento. Aqui está o que parece:

imagem

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

Tarefas que o FAST VP resolve


Vamos falar abstratamente primeiro. Temos um pool e algum mecanismo que pode redistribuir dados dentro desse pool. Lembrando que nossa tarefa é alcançar o máximo desempenho, nos perguntamos: de que maneira isso pode ser alcançado? Pode haver vários deles, e aqui o FAST VP tem algo a oferecer ao usuário, pois 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 por diferentes tipos de discos, níveis
  • Distribuindo dados entre unidades do mesmo tipo
  • Distribuição de dados de expansão de pool

Antes de analisar como essas tarefas são resolvidas, precisamos conhecer alguns fatos necessários sobre o trabalho do FAST VP. O FAST VP opera com blocos de um determinado tamanho - 256 megabytes. Esse é o menor "bloco" contínuo de dados que pode ser movido. É chamado na documentação: fatia. Do ponto de vista do FAST VP, todos os grupos RAID consistem em um conjunto dessas "partes". Consequentemente, todas as estatísticas de E / S são acumuladas para esses blocos de dados. Por que esse tamanho de bloco é escolhido e será reduzido? O bloco é grande o suficiente, mas esse é um compromisso entre a granularidade dos dados (tamanho menor do bloco - mais precisamente a distribuição) e os recursos de computação disponíveis: sob as rígidas restrições existentes à RAM e a um grande número de blocos, essas estatísticas podem demorar demais e o número de cálculos aumentará proporcionalmente.

Como o FAST VP coloca dados em um pool. Políticos


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

  • Nível mais alto disponível
  • Camada automática
  • Iniciar alto e nível automático (padrão)
  • Menor nível disponível

Eles afetam o posicionamento inicial do bloco (os dados foram registrados pela primeira vez) e a redistribuição subsequente. Quando os dados já estiverem localizados nos discos, a redistribuição será iniciada de acordo com a programação ou manualmente.

O nível mais alto disponível está tentando colocar o novo bloco no nível mais produtivo. Com falta de espaço - no próximo nível de desempenho, mas os dados podem ser movidos para um nível mais produtivo (se houver espaço ou a exclusão de outros dados). A camada automática coloca novos dados em níveis diferentes, dependendo do tamanho do espaço disponível, e eles são redistribuídos dependendo da demanda e do espaço livre. Iniciar alto e a camada automática é a política padrão e também recomendada. No posicionamento inicial, ele funciona como o Nível mais alto disponível e os dados são movidos, dependendo das estatísticas de uso. A política de menor nível disponível procura colocar os dados no nível menos produtivo.

A transferência de dados é realizada com baixa prioridade, para não interferir no trabalho útil do sistema de armazenamento, no entanto, existe uma configuração de "Taxa de realocação de dados" que altera a prioridade. Há uma peculiaridade: nem todos os blocos de dados têm a mesma sequência de redistribuição. Por exemplo, os blocos marcados como metadados serão movidos para um nível mais rápido primeiro. Os metadados são, por assim dizer, "dados sobre dados", algumas informações adicionais que não são dados do usuário, mas armazenam sua descrição. Por exemplo, informações no sistema de arquivos sobre o bloco em que um arquivo específico está. Isso significa que a velocidade de acesso aos dados depende da velocidade de acesso aos metadados. Dado que os metadados geralmente são muito menores em tamanho, espera-se que mais se beneficie da mudança para discos mais produtivos.

Critérios que o Fast VP usa no trabalho


O principal critério para cada bloco, se bem aproximado, é a característica da “demanda” dos dados, que depende do número de operações de leitura e gravação do fragmento de dados. Essa característica é chamada de "temperatura". Existem dados quentes que são mais quentes do que não reclamados. É calculado periodicamente, por padrão, com um intervalo 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.
  • Com uma carga mais ou menos a mesma no tempo, a temperatura sobe primeiro e depois se estabiliza em um determinado intervalo.

Além disso, as políticas descritas acima e o espaço livre em cada camada são levados em consideração. Para maior clareza, darei uma imagem da documentação. Aqui as cores vermelho, amarelo e azul indicam blocos com temperatura alta, média e baixa, respectivamente.

imagem

Mas voltando à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 por diferentes tipos de discos, níveis


Na verdade, essa é a principal tarefa do FAST VP. O resto, em certo sentido, é derivado disso. Dependendo da política selecionada, os dados serão distribuídos por diferentes camadas de armazenamento. Primeiro, a política de posicionamento é levada em consideração e, em seguida, a temperatura do bloco e o tamanho / velocidade dos grupos RAID.

Para políticas de Maior / Menor Nível Disponível, tudo é bem simples. Para os outros dois, este é o caso. Em diferentes níveis, os dados são distribuídos levando em consideração o tamanho e o desempenho dos grupos RAID: para que a proporção da "temperatura" total dos blocos com o "desempenho máximo condicional" de cada grupo RAID seja aproximadamente a mesma. Assim, a carga é distribuída de maneira mais ou menos uniforme. Dados mais exigidos são transferidos para operadoras rápidas, raramente usadas - para as mais lentas. Idealmente, a distribuição deve ser algo como isto:

imagem

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


Lembre-se, no começo eu escrevi que os portadores de informações de um ou vários níveis são combinados em um pool? No caso de um nível único para o FAST VP, também há trabalho. Para maximizar o desempenho em qualquer nível, é aconselhável distribuir os dados igualmente entre os discos. Isso permitirá (em teoria) obter o número máximo de IOPS. Os dados dentro de um grupo RAID podem ser considerados distribuídos igualmente entre os discos, mas entre os grupos RAID isso está longe de ser sempre o caso. Em caso de desequilíbrio, o FAST VP moverá os dados entre os grupos RAID na proporção de seu tamanho e "desempenho condicional" (em termos numéricos). Para maior clareza, mostrarei um esquema de reequilíbrio entre três grupos RAID:

imagem

B. Distribuição de dados durante a expansão do pool


Esta tarefa é um caso especial da anterior e é executada quando um grupo RAID é adicionado ao pool. Para que o grupo RAID recém-adicionado não fique ocioso, parte dos dados será transferida para ele, o que significa que a carga em todos os grupos RAID será redistribuída.

Nivelamento de desgaste do SSD


Com o nivelamento de desgaste, o FAST VP pode estender a vida útil de um SSD, embora esse recurso não esteja diretamente relacionado às camadas de armazenamento. Como já temos dados de temperatura, o número de operações de gravação também é levado em consideração, podemos mover blocos de dados, seria lógico para o FAST VP resolver esse problema.

Se o número de registros em um grupo RAID exceder significativamente o número de registros em outro, o FAST VP redistribuirá os dados de acordo com o número de operações de gravação. Por um lado, isso remove a carga e economiza o recurso de alguns discos; por outro, adiciona "trabalho" para os menos carregados, aumentando o desempenho geral.

Assim, o FAST VP assume as tarefas tradicionais do Storage Tiering e faz um pouco mais do que isso. Tudo isso permite que você efetivamente armazene dados na família de sistemas de armazenamento Unity.


  1. . best practices, . , , , . .
  2. FAST VP, . , . .
  3. . , Unity .
  4. , . , FAST VP . , . , 2.
  5. FAST VP, . RAID- , . «» . , «» , . , , , , . , FAST VP, .

Se você observar atentamente este produto, poderá experimentar o Unity in business gratuitamente fazendo o download do dispositivo virtual Unity VSA.



No final do artigo, compartilho alguns links úteis:


Conclusão


Gostaria de escrever muito, mas entendo que nem todos os detalhes serão interessantes para o leitor. Por exemplo, você pode informar com mais detalhes sobre os critérios pelos quais o FAST VP decide transferir dados, sobre os processos de análise de estatísticas de E / S. Além disso, o tópico de interação com pools dinâmicos não é afetado , e isso atrai um artigo separado. Você pode até sonhar com o desenvolvimento dessa tecnologia. Espero que não tenha sido chato e não o chateiei. Te vejo em breve!

All Articles